Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
МуМу Member Откуда: Сообщений: 1134 |
Вопрос скорее всего риторический но хотелось бы подтверждения. Производится hash join, сервер сразу выделяет память по размеру полей? Насколько помню - да. Выделяет максимально быстро по максимуму а не занимается проверкой на максимальную длину. Если например есть поле штрихкод с макимальной длиной 100 а заполнено только 12 а остальное пробелы. Он и будет выделять сразу под 100 а не проверять сколько заполнено и потом выделять под 12.(ну или вести статистику и т.п.) Я прав? |
22 авг 18, 14:36 [21650798] Ответить | Цитировать Сообщить модератору |
МуМу Member Откуда: Сообщений: 1134 |
Вдогонку напомните, как получить объем памяти(например в tempdb) которое скушал запрос? |
22 авг 18, 14:43 [21650809] Ответить | Цитировать Сообщить модератору |
aleksrov Member Откуда: Сообщений: 948 |
МуМу, если это varchar то ожидаемый размер для него будет 100/2 |
22 авг 18, 14:49 [21650816] Ответить | Цитировать Сообщить модератору |
a_voronin Member Откуда: Москва Сообщений: 4805 |
МуМу, Вопрос выглядит странно, потому что сначала надо задать другой вопрос: а кто так проектировал БД, что нужно соединять таблицы по 100 байтовому ключу? Если бы ключи были подобраны правильно, то этим вопросом вообще не пришлось бы задаваться и не творить оптимизационные "танцы с бубном". |
22 авг 18, 14:51 [21650817] Ответить | Цитировать Сообщить модератору |
a_voronin Member Откуда: Москва Сообщений: 4805 |
aleksrov, Если это будет NVARCHAR, то 100 * 2 |
22 авг 18, 14:51 [21650820] Ответить | Цитировать Сообщить модератору |
МуМу Member Откуда: Сообщений: 1134 |
Почему деленный на 2-а? Если будет заполнен 51-н символ, будет динамически выделятся память? Есть ссылки, не могу сходу найти? |
22 авг 18, 14:52 [21650822] Ответить | Цитировать Сообщить модератору |
МуМу Member Откуда: Сообщений: 1134 |
a_voronin, Ну вообщем то именно такая рекомендация и будет выдана. Тут вопрос просто в эффекте и лично интересно, может сервер и умеет понимать такие дыры в оптимизации и лечить их на ходу(что вряд ли потому как приведет к издержкам производительности) |
22 авг 18, 14:55 [21650830] Ответить | Цитировать Сообщить модератору |
aleksrov Member Откуда: Сообщений: 948 |
Ну вы же меня понял, я это имел ввиду http://aboutsqlserver.com/2010/08/18/what-is-the-optimal-size-for-variable-width-columns/ |
||
22 авг 18, 15:02 [21650842] Ответить | Цитировать Сообщить модератору |
aleksrov Member Откуда: Сообщений: 948 |
Ну и в догонку https://blogs.msdn.microsoft.com/sqlqueryprocessing/2010/02/16/understanding-sql-server-memory-grant/ , просто статья хорошая |
22 авг 18, 15:03 [21650844] Ответить | Цитировать Сообщить модератору |
invm Member Откуда: Москва Сообщений: 9646 |
|
||||
22 авг 18, 15:24 [21650880] Ответить | Цитировать Сообщить модератору |
TaPaK Member Откуда: Kiev Сообщений: 6801 |
удивлён данными математиками
вы точно вопрос видели? |
||||
22 авг 18, 15:25 [21650881] Ответить | Цитировать Сообщить модератору |
TaPaK Member Откуда: Kiev Сообщений: 6801 |
МуМу,
не будет смотреть на то что заполен 1 символ или 100, это вообще не лёгкая операция. По остальному ссылка invm |
||
22 авг 18, 15:29 [21650884] Ответить | Цитировать Сообщить модератору |
МуМу Member Откуда: Сообщений: 1134 |
invm, Сам писал давненько алгоритмы подобные Hash match, поэтому внутренние алгоритмы понимаю. Требуемое поле гарантированно попадает Build-Table(или как там ее), всякие реквизиты и т.п. из рекордсета не попадают, их не учитываю. Эту статью давно читал(сходу гуглом не нашел), спасибо! Остался вопрос каким параметром явно увидеть используемую память запросом? |
22 авг 18, 16:07 [21650954] Ответить | Цитировать Сообщить модератору |
TaPaK Member Откуда: Kiev Сообщений: 6801 |
МуМу, dm_exec_query_memory_grants ну и с какой-то версии в плане видно память |
22 авг 18, 16:11 [21650964] Ответить | Цитировать Сообщить модератору |
Mind Member Откуда: Лучший город на Земле Сообщений: 2322 |
МуМу, А вы вообще про какую именно память? Granted, Reserved или Used ? |
23 авг 18, 01:03 [21651437] Ответить | Цитировать Сообщить модератору |
Владислав Колосов Member Откуда: Сообщений: 8350 |
Grant выделяется по максимальной оценке. Из-за этого пара мега-отчетов может сожрать всю память. Надо resource governor настраивать во избежание. |
23 авг 18, 11:59 [21651812] Ответить | Цитировать Сообщить модератору |
TaPaK Member Откуда: Kiev Сообщений: 6801 |
мы пихаем всё что когда-то слышали... |
||
23 авг 18, 12:21 [21651856] Ответить | Цитировать Сообщить модератору |
Владислав Колосов Member Откуда: Сообщений: 8350 |
TaPaK, пожирает и еще как, Вы с этим просто не сталкивались. Used может быть меньше Granted в 5-7 раз запросто. |
23 авг 18, 13:56 [21652046] Ответить | Цитировать Сообщить модератору |
TaPaK Member Откуда: Kiev Сообщений: 6801 |
и как это касается темы? у кого что болит? |
||
23 авг 18, 13:57 [21652049] Ответить | Цитировать Сообщить модератору |
Все форумы / Microsoft SQL Server | ![]() |