Показаны сообщения с ярлыком Engine. Показать все сообщения
Показаны сообщения с ярлыком Engine. Показать все сообщения

17.9.26

Скрипт для анализа задержек ввода-вывода

Автор: Paul Randal, Capturing IO latencies for a period of time

На обоих моих предконференционных семинарах по статистике ожиданий на PASS Summit и SQLintersection я обещал сделать несколько статей в блоге. Второй в списке — простой скрипт, позволяющий захватить все чтения, записи и задержки ввода-вывода, произошедшие за фиксированный период времени.

Скрипт делает следующее:

  • Создаёт две временные таблицы.
  • Захватывает вывод из sys.dm_io_virtual_file_stats в первую таблицу.
  • Ожидает настраиваемую задержку (строка 41 в скрипте — в примере я сделал её 30 минут).
  • Захватывает вывод из sys.dm_io_virtual_file_stats во вторую таблицу.
  • Предоставляет мой обычный вывод статистики виртуальных файлов по результатам.

15.9.26

Резервные копии снимком на вторичных репликах группы доступности

Автор: Andrew Pruski, T-SQL Snapshot Backups on Availability Group Secondary Replicas

Одной из моих любимых возможностей SQL Server 2022 были резервные копии снимком (Transact-SQL snapshot backup). Возможность использовать снимки современных систем хранения для создания согласованных на уровне приложения снимков наших баз данных — это прорыв для всех, кто имеет дело с очень большими базами данных и изо всех сил пытается уложиться в RPO при заданном RTO.

Однако согласованные на уровне приложения снимки требуют, чтобы запись ввода-вывода базы данных была приостановлена/заморожена/остановлена… и (справедливо) это может заставить администраторов баз данных нервничать.

14.9.26

Выясняем причину длительных ожиданий IO_COMPLETION и WRITE_COMPLETION

Автор: Paul Randal, Causes of IO_COMPLETION and WRITE_COMPLETION SQL Server wait types

Во многих наборах статистики ожиданий, которые я анализировал, появляются ожидания IO_COMPLETION и WRITE_COMPLETION (но никогда как самый распространённый тип ожидания).

Официальные определения этих типов ожиданий:

  • IO_COMPLETION: Возникает в ожидании завершения операций ввода-вывода. Этот тип ожидания, как правило, представляет операции ввода-вывода, не связанные со страницами данных. Ожидания завершения ввода-вывода страниц данных отображаются как ожидания PAGEIOLATCH_*.
  • WRITE_COMPLETION: Возникает, когда выполняется операция записи.

Я обещал многим людям, которые недавно присылали мне статистику ожиданий, написать статью в блоге с более подробной информацией о том, когда возникают эти типы ожиданий, так что вот он.

12.9.26

CXSYNC_PORT и перекос параллелизма: как найти неэффективный параллельный запрос в SQL Server 2022

Автор: Erik Darling, https://erikdarling.com/a-little-about-the-cxsync_port-wait-in-sql-server-2022/

Параллельный план выполнения существует ради одной идеи: разделить работу между несколькими потоками, чтобы сократить время запроса. Если запрос выполняется на DOP 8, вы ожидаете, что он будет примерно в восемь раз быстрее последовательного — с поправкой на то, что параллелизм масштабируется не всегда линейно. Но нередко бывает иначе. Запрос получает восемь потоков, а почти вся работа достаётся одному из них. Остальные семь простаивают, а вы платите за CPU и ждёте.

11.9.26

Как работают JSON-индексы в SQL Server

Автор: Brent Ozar, Database Animations: How SQL Server’s JSON Indexes Work

По многочисленным просьбам в SQL Server 2025 добавили JSON-индексы. Вы можете съесть торт возможности хранить практически не имеющие схемы JSON-блобы как часть каждой строки и при этом получить его, быстро запрашивая конкретные значения.

10.9.26

Исправление безопасности для SQL Server 2025 CU8 - KB5122769

Описание: KB5122769

Скачать: SQLServer2025-KB5122769-x64.exe

Дата выпуска: 8 сентября 2026 г.

SQL Server 2025 — Версия: 17.0.4085.5

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

Описание: KB5122770

Скачать: SQLServer2025-KB5122770-x64.exe

Дата выпуска: 8 сентября 2026 г.

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

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

Описание: KB5122768

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

Дата выпуска: 8 сентября 2026 г.

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

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

Описание: KB5122771

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

Дата выпуска: 8 сентября 2026 г.

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

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

Описание: KB5122772

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

Дата выпуска: 8 сентября 2026 г.

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

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

Описание: KB5122773

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

Дата выпуска: 8 сентября 2026 г.

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

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

Описание: KB5122774

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

Дата выпуска: 8 сентября 2026 г.

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

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

Описание: KB5122775

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

Дата выпуска: 8 сентября 2026 г.

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

9.9.26

Выясняем причину длительных ожиданий ASYNC_IO_COMPLETION

Автор: Paul Randal, A cause of high-duration ASYNC_IO_COMPLETION waits

В некоторых данных статистики ожиданий, которые я анализировал, на некоторых серверах наблюдались очень длительные ожидания ASYNC_IO_COMPLETION, о чём у меня было предположение, но я хотел получить доказательства.

Официальное определение ASYNC_IO_COMPLETION: «Происходит, когда задача ожидает завершения операций ввода-вывода.» Очень полезно — НЕТ!

8.9.26

Что такое остаточный предикат (residual predicate) и почему это плохо?

Автор: Brent Ozar, Database Animations: What’s a Residual Predicate and Why Is It Bad?

Обычно, когда вы смотрите на план выполнения и видите поиск по индексу (index seek), за которым следует поиск по ключу (key lookup), это означает, что запрос выполняется относительно быстро.

7.9.26

Уровень совместимости и оценщик кардинальности в SQL Server

Автор: Vivek Johari, Compatibility Level vs. Cardinality Estimator in SQL Server: A Complete Guide;

Если вы когда-либо занимались настройкой производительности SQL Server, вы почти наверняка сталкивались с двумя терминами, которые постоянно путают: уровень совместимости (Compatibility Level, CL) и оценщик кардинальности (Cardinality Estimator, CE). Они звучат так, будто могут быть одним и тем же, поскольку изменение одного часто влияет на поведение другого. Но это два разных понятия в ядре SQL Server, и понимание того, где они пересекаются, а где расходятся, необходимо для всех, кто занимается обновлениями, миграциями или настройкой запросов.

В этой статье разбирается, что представляет собой каждое из этих понятий, как они связаны друг с другом, что и когда менялось, а также как диагностировать и исправлять проблемы, вызванные регрессиями, связанными с оценщиком кардинальности.

4.9.26

Промежуточная материализация (Query Memory Spills)

Автор: Klaus Aschenbrenner, Query Memory Spills

Иногда, когда вы смотрите на планы выполнения, вы можете увидеть, что у оператора SELECT иногда есть так называемый грант памяти (Memory Grant). Этот грант памяти указывается в килобайтах и необходим для выполнения запроса, когда некоторым операторам (например, Sort/Hash) в планах выполнения требуется память для выполнения — так называемая память запроса (Query Memory).

3.9.26

Новое в SQL Server 2025: Мультипликативная агрегация с функцией PRODUCT

Автор: Leonard Lobel, Multiplicative Aggregates with the PRODUCT Function in SQL Server 2025

В этой статье блога рассматривается новая функция PRODUCT в SQL Server 2025, которая вычисляет произведение набора числовых значений — аналогично тому, как SUM и AVG работают для сложения и усреднения, но для умножения.

До появления SQL Server 2025 в SQL Server не было встроенного способа вычисления произведения значений в наборе. Приходилось использовать обходные пути, такие как циклы или определяемые пользователем агрегаты. С PRODUCT это теперь простое однострочное выражение.

PRODUCT поддерживает как агрегатную, так и аналитическую (оконную) формы и работает как со значениями ALL (по умолчанию), так и с DISTINCT. Значения NULL игнорируются, и функция совместима со всеми числовыми типами, кроме bit.

2.9.26

Ещё больше ЗОЖ для журнала транзакций

Автор: Paul Randal, Trimming More Transaction Log Fat

В моей предыдущей статье об оптимизации операций с журналом транзакций я обсудил две наиболее распространённые причины генерации лишних записей журнала: «мёртвый груз» от неиспользуемых некластерных индексов и операции разделения страниц (которые вызывают фрагментацию индексов). Предполагая, что вы прочитали это, я упомянул, что существуют более тонкие проблемы, которые могут негативно влиять на производительность журнала транзакций, и я собираюсь рассмотреть их здесь.

1.9.26

Программа похудения для журнала транзакций

Автор: Paul Randal, Trimming the Transaction Log Fat

Для многих рабочих нагрузках SQL Server, особенно OLTP, журнал транзакций базы данных может быть узким местом, увеличивающим время завершения транзакции. Большинство людей предполагают, что реальным узким местом является подсистема ввода-вывода, которая не справляется с объёмом журнала транзакций, генерируемого рабочей нагрузкой.