28.3.25

Maximum Row Size and Query Hints

Автор: Craig Freedman Maximum Row Size and Query Hints

В предыдущей статье я привел пример того как подсказка оптимизатору в запросе может привести к ошибке при его исполнении. В этой статье рассмотрим ещё один пример: как использование хинтов может привести к проблемам. SQL Server имеет документированное ограничение на максимальный размер строки в 8060 байт. Это ограничение на размер строки применяется конкретно к фиксированной ширине или не выходящей за пределы записи части колонок с типом переменной длинны. Если вы попытаетесь создать таблицу, которая превышает это ограничение, вы столкнетесь со следующей ошибкой:

CREATE TABLE T (A INT, B CHAR(8000), C CHAR(8000))

Msg 1701, Level 16, State 1, Line 1

Creating or altering table 'T' failed because the minimum row size would be 16011, including 7 bytes of internal overhead. This exceeds the maximum allowable table row size of 8060 bytes.

Какое же отношение ограничение размера записи имеет к подсказкам оптимизатору?

11.3.25

Index Rebuilds Make Even Less Sense with ADR & RCSI

Автор: Brent Ozar Index Rebuilds Make Even Less Sense with ADR & RCSI

Ускоренное восстановление базы данных (Accelerated Database Recovery - ADR) — это новая функция базы данных в SQL Server 2022, которая делает откат транзакций практически мгновенным. Без ADR при изменении записи SQL Server копирует старые значения в журнал транзакций и обновляет строку по месту. Если вы откатываете эту транзакцию, SQL Server должен извлечь старые значения из журнала транзакций, а затем применить их к записи на том же месте. Чем больше строк изменения затронули, тем больше времени займет эта транзакция. Когда у базы данных SQL Server включена ADR, в таблицу записывается новая версию записи, а старая версия остаётся на прежнем месте. Как вы догадываетесь, хранение нескольких версий строки внутри одной таблицы наверняка приведёт к проблемам с их хранением: размер нашей таблицы будет быстро увеличиваться. Однако проблема еще масштабнее, и она начинается с самого начала, когда мы ещё загружаем данные.

18.2.25

Подразумеваемые (Implied) предикаты

Автор: Craig Freedman Implied Predicates and Query Hints

В этой статье будут рассмотрены некоторые странности с предикатами в планах запросов. Рассмотрим следующую тривиальную схему и запрос:

CREATE TABLE T1 (A INT, B INT)

CREATE TABLE T2 (A INT, B INT)

 

SELECT *

FROM T1 INNER JOIN T2 ON T1.A = T2.A

WHERE T1.B = 0

OPTION (HASH JOIN)

Как и задумывалось, этот запрос будет выполняться со следующим планом:

  |--Hash Match(Inner Join, HASH:([T1].[A])=([T2].[A]), RESIDUAL:([T2].[A]=[T1].[A]))

       |--Table Scan(OBJECT:([T1]), WHERE:([T1].[B]=(0)))

       |--Table Scan(OBJECT:([T2]))

На самом деле, этот запрос получит такой план с подсказкой или без нее. Теперь давайте внесем небольшое изменение в предложение WHERE и посмотрим, что произойдет:

SELECT *

FROM T1 INNER JOIN T2 ON T1.A = T2.A

WHERE T1.A = 0

OPTION (HASH JOIN)

Теперь этот запрос выдает сообщение об ошибке:

Msg 8622, Level 16, State 1, Line 1

Query processor could not produce a query plan because of the hints defined in this query. Resubmit the query without specifying any hints and without using SET FORCEPLAN.

6.2.25

Накопительный пакет обновления 17 для SQL Server 2022 - KB5048038

SQL Server 2022 — Версия: 16.0.4175.1

Описание: KB5048038

Скачать: SQLServer2022-KB5048038-x64.exe

Дата выпуска: 16 января 2025 г.

Накопительный пакет обновления 30 для SQL Server 2019 - KB5046365

SQL Server 2019 — версия: 15.0.4415.2

Описание: KB5049235 

Скачать: SQLServer2019-KB5049235-x64.exe

Дата выпуска: 12 декабря 2024 г.

Накопительный пакет обновления 29 для SQL Server 2019 - KB5046365

SQL Server 2019 — версия: 15.0.4405.4

Описание: KB5046365 

Скачать: SQLServer2019-KB5049235-x64.exe

Дата выпуска: 31 октября 2024 г.

Исправлени безопасности для SQL Server: 2016 SP3; 2017 CU31; 2019 CU29; 2022 CU15

KB5046856. Описание обновления для системы безопасности для SQL Server 2016 с пакетом обновления 3 (SP3) Azure Connect Feature Pack: 12 ноября 2024 г.
Версия: 13.0.7050.2

KB5046858. Описание обновления для системы безопасности для SQL Server 2017 CU31: 12 ноября 2024 г.
Версия: 14.0.3485.1

KB5046860. Описание обновления для системы безопасности для SQL Server 2019 CU29: 12 ноября 2024 г.
Версия: 15.0.4410.1

KB5046862. Описание обновления для системы безопасности для SQL Server 2022 CU15: 12 ноября 2024 г.
Версия: 16.0.4155.4

Исправление безопасности для GDR SQL Server 2016/17/19/22 - 12 ноября 2024 г.

KB5046855. Описание обновления для системы безопасности для GDR SQL Server 2016 с пакетом обновления 3 (SP3): 12 ноября 2024 г.
Версия: 13.0.6455.2

KB5046857. Описание обновления для системы безопасности для GDR SQL Server 2017 г.: 12 ноября 2024 г.
Версия: 14.0.2070.1

KB5046859. Описание обновления для системы безопасности для GDR SQL Server 2019 г.: 12 ноября 2024 г.
Версия: 15.0.2130.3

KB5046861. Описание обновления для системы безопасности для GDR SQL Server 2022 г.: 12 ноября 2024 г.
Версия: 16.0.1135.2

Накопительный пакет обновления 16 для SQL Server 2022 - KB5048033

SQL Server 2022 — Версия: 16.0.4165.4

Описание: KB5048033

Скачать: SQLServer2022-KB5048038-x64.exe

Дата выпуска: 14 ноября 2024 г.