16.11.25

Как работает DBCC CHECKDB WITH ESTIMATEONLY?

Автор: Paul Randal, How does DBCC CHECKDB WITH ESTIMATEONLY work?

Одним из крупнейших потребителей места в tempdb может быть DBCC CHECKDB. Эта команда генерирует всевозможные сведения о том, что она видит в базе данных (они называются фактами), и складывает их в большую рабочую таблицу. Фактами могут быть, к примеру, сообщения вроде «мы прочитали страницу F» или «запись X на странице Y указывает на выведённый за пределы строки столбец LOB в записи A на странице B», или даже целая битовая карта IAM‑страницы. Обычно объём памяти, требуемый для рабочей таблицы, превышает доступный объём, поэтому рабочая таблица проливается в tempdb.

DBCC CHECKDB вынуждена использовать такой механизм генерации фактов, потому что она читает страницы файлов данных не в логическом порядке и не в глубину, а в порядке распределения (allocation order), что быстрее всего. Более того, создаются несколько потоков, и каждый из них читает свой набор страниц, отчего во время работы I/O‑подсистема загружается по максимуму — специальный readahead выполняет упреждающее чтение, выжимая из диска всё, что можно. По мере того как каждый поток генерирует факты, он передаёт их процессору запросов, который сортирует их по ключу, заданному DBCC CHECKDB (идентификаторы страницы, объекта, индекса и т. п.), и вставляет в рабочую таблицу.

15.11.25

Начальные номера последовательностей VLF и размер файла журнала по умолчанию

Автор: Paul Randal, Initial VLF sequence numbers and default log file size

Мы проводим двухнедельное корпоративное обучение у финансового клиента в Нью‑Йорке, и на сегодняшней сессии по архитектуре журнала транзакций меня спросили, почему номера последовательностей VLF (virtual log file) в новой базе не начинаются с единицы.

14.11.25

Правда ли, что изменения ключей индекса выполняются «по месту»?

Автор: Paul Randal, Do changes to index keys really do in-place updates?

Сегодня утром в Twitter развернулась интересная дискуссия (её начал мой хороший друг Erin Stellato) о «встроенных» обновлениях (in‑place updates) записей индекса, когда значение ключа меняется, но запись остаётся на той же странице. Разные источники, включая книгу SQL Server 2008 Internals (стр. 361 — этот фрагмент я не писал и не рецензировал :-) ), описывают процесс — увы, неверно. Там говорится, что запись останется ровно в той же позиции на странице и изменятся лишь байты, хранящие ключ.

Это не так. Настоящие in‑place‑обновления значений ключей индекса не выполняются, начиная с версии 2005. Давайте нырнём в кроличью нору…

13.11.25

Фрагментация кучи лечится созданием и удалением кластерного индекса - миф!

Автор: Paul Randal, A SQL Server DBA myth a day: (29/30) fixing heap fragmentation

Миф №29: исправить фрагментацию кучи можно, создав и затем удалив кластерный индекс.

Неееееет!!!

Это одно из худших действий, которые только можно совершить, если не считать сжатия базы данных.

12.11.25

Три мифа о коэффициенте заполнения (fill factor)

Автор: Paul Randal, A SQL Server DBA myth a day: (25/30) fill factor

Это короткая статья о мифах вокруг коэффициента заполнения (fill factor) — тему, которую я настойчиво прояснял ещё в Books Online для SQL Server 2005.

Миф №25: разные заблуждения о коэффициенте заполнения.

Все ложные

Исправление безопасности для SQL Server 2022 CU21 - KB5068406

Описание: KB5068406

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

SQL Server 2022 — версия: 16.0.4212.1

Дата выпуска: 11.11.2025

Исправление безопасности для SQL Server 2022 GDR - KB5068407

Описание: KB5068407

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

SQL Server 2022 — версия: 16.0.1160.1

Дата выпуска: 11.11.2025

Исправление безопасности для SQL Server 2019 GDR - KB5068405

Описание: KB5068405

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

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

Дата выпуска: 11.11.2025

Исправление безопасности для SQL Server 2019 CU32 - KB5068404

Описание: KB5068404

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

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

Дата выпуска: 11.11.2025

Исправление безопасности для SQL Server 2017 GDR - KB5068403

Описание: KB5068403

Скачать: SQLServer2017-KB5068403-x64.exe

SQL Server 2017 — версия: 14.0.2095.1

Дата выпуска: 11.11.2025

Исправление безопасности для SQL Server 2017 CU31 - KB5068402

Описание: KB5068402

Скачать: SQLServer2017-KB5068402-x64.exe

SQL Server 2017 — версия: 14.0.3515.1
Дата выпуска: 11.11.2025

Исправление безопасности для SQL Server 2016 SP3 Azure Connect Feature Pack - KB5068400

Описание: KB5068400

Скачать: SQLServer2016-KB5068400-x64.exe

SQL Server 2016 — версия: 13.0.7070.1

Дата выпуска: 11.11.2025