Skip to content

Где мои ошибки, SQL Server?

Пересказ статьи Garry Bargsley. Where are my SQL Server Errors?


Вы открывали когда нибудь журнал ошибок SQL Server и задавались вопросом: "А где ошибки?". Копаться в журнале ошибок в поисках того, что вам нужно, может вызвать головную боль. Конечно, вы можете использовать некоторые методы парсинга для поиска нужной информации, но иногда вам хочется взглянуть на журнал ошибок с помощью SSMS.


Continue reading "Где мои ошибки, SQL Server?"

Новости за 2021-10-09 - 2021-10-15

§ Участие в рейтинге обучающего этапа становится платным. Подробности в последней статье FAQ.


§ Под номером 160 на обучающем этапе выставлена новая задача от Kursist (сложность 1 балл).
Новая задача выставлена под номером 306 для обсуждения (2 балла).

Continue reading "Новости за 2021-10-09 - 2021-10-15"

DBCC ShrinkDatabase - я хочу сжать базу данных

Пересказ статьи Steve Stedman. DBCC ShrinkDatabase – I want to shrink my database


Не делайте этого. Вы можете перестать читать эту статью, но просто не делайте этого.

Эта публикация относится к сжатию файлов базы данных (файлов mdf или ndf), а не сжатию файла журнала. Файл журнала - это совершенно другая тема, хотя ShrinkDatabase действительно сжимает файл журнала.
Continue reading "DBCC ShrinkDatabase - я хочу сжать базу данных"

Время компиляции запроса

Пересказ статьи Grant Fritchey. QUERY COMPILE TIME


Недавно мне задали вопрос о том, как отследить время компиляции запроса. Это действительно довольно интересный вопрос, поскольку существует не так много способов, сообщающих сколько времени занимает компиляция запроса, и они не обязательно согласуются между собой. Для большинства из нас зачастую время компиляции данного запроса не имеет значения. Однако я люблю рассказывать историю о запросе, который у меня на старой системе выполнялся 90 мс, но компилировался 5 минут. Короче, иногда время компиляции имеет значение.
Continue reading "Время компиляции запроса"

Новости за 2021-10-02 - 2021-10-08

§ Усилена проверка задачи 87 (select, обуч.этап) данными от Valer4N1.


§ Под номером 158 на обучающем этапе выставлена новая задача (сложность 1 балл). Задача 306 перенесена на обучающий этап под номером 159 (2 балла).


Continue reading "Новости за 2021-10-02 - 2021-10-08"

Интеллектуальный анализ кэша планов SQL Server - атрибуты плана

Пересказ статьи Edward Pollack. SQL Server plan cache mining – Plan attributes


Кэш планов выполнения в SQL Server является кладезью информации о запросах, которые выполнялись за последнее время. Помимо текста запроса и деталей плана выполнения доступны для исследования разнообразная статистика, опции и параметры. Эта информация, возможно, не всегда нужна для настройки производительности, но, когда она есть, знание куда обратиться и как её использовать, может сэкономить массу времени.
Continue reading "Интеллектуальный анализ кэша планов SQL Server - атрибуты плана"

Вставка столбца со значением по умолчанию в таблицу SQL Server

Пересказ статьи Nisarg Upadhyay. Insert Column with a Default Value to SQL Serve Table


Чтобы вставить данные в таблицу, имеющую столбцы со ограничениями по умолчанию, мы можем использовать ограничение DEFAULT для вставки принятого значения по умолчанию в таблицу. Здесь рассматриваются следующие вопросы:

  • Ограничение DEFAULT и необходимые разрешения для его создания.

  • Добавление ограничения DEFAULT при создании новой таблицы.

  • Добавление ограничения DEFAULT в существующую таблицу.

  • Модификация и просмотр определения ограничения с помощью скриптов T-SQL и в SSMS.


Continue reading "Вставка столбца со значением по умолчанию в таблицу SQL Server"

Вероятно, вам не стоит индексировать временные таблицы

Пересказ статьи Brent Ozar. You Probably Shouldn’t Index Your Temp Tables


Когда возникает процесс, который использует временные таблицы, и вы пытаетесь ускорить его, это может быть попытка построить индекс на временной таблице в надежде более быстрой работы. Однако в большинстве случаев - не во всех, но в большинстве - это плохая идея.
Continue reading "Вероятно, вам не стоит индексировать временные таблицы"

Как использовать функциональность массивов в SQL Server?

Пересказ статьи Josip Saban. How to Use Array Functionality in SQL Server?


Обработка массива значений внутри процедуры или функции является обычным требованием в большинстве бизнес-кейсов. Поскольку SQL Server не поддерживает переменные типа массива, разработчики используют список значений (главным образом, CSV) на входе.

Табличнозначные параметры (TVP) вместо массивов


SQL Server 2008 ввел функциональность, называемую табличнозначными параметрами (TVP). Она позволяет пользователям объединять значения в таблицу и обрабатывать их в табличном формате. Хранимые процедуры или функции могут использовать такую переменную в операторах соединения. Это дает возможность улучшить производительность и избежать поэлементных операций типа курсора.

Continue reading "Как использовать функциональность массивов в SQL Server?"

Понимание CRUD-операций на таблицах с индексами B-Tree, разбиение страниц и фрагментация

Пересказ статьи Mohsin Khan. Understanding CRUD Operations on Tables with B-tree Indexes, Page-splits, and Fragmentation


Введение


Каждая транзакция DML читает данные, прежде чем сделать какие-либо изменения. Не только при операторе SELECT, но и когда выполняется любой оператор DML, вставка, обновление или удаление, SQL Server сначала считывает набор страниц в буферный пул, размещая желаемые строки и изменяя их, выполняя синхронную запись в файл журнала транзакций.
Continue reading "Понимание CRUD-операций на таблицах с индексами B-Tree, разбиение страниц и фрагментация"

Понимание CRUD операций, адресованных к куче, и указатели пересылки

Пересказ статьи Mohsin Khan. Understanding CRUD Operations Against Heaps and Forwarding Pointers



Введение


Транзакции языка манипуляции данными (DML) являются ключевыми для любой рабочей нагрузки, которая выполняется на SQL Server. Твердые знания того, что происходит под капотом, когда вы выполняете оператор DML, имеют решающее значение для написания более производительного кода. В этой статье мы посмотрим изнутри на три основных оператора DML, выполняемых на куче: вставка, обновление и удаление. Мы начнем с понимания того, что происходит внутри, когда каждый из этих трех операторов DML выполняется на куче. Затем мы разберемся с тем, что представляют собой указатели пересылки (forwarding pointers), и что вызывает их появление. Прочитав статью, вы должны понимать, почему SQL Server ведет себя так, а не иначе, при определенных шаблонах рабочей нагрузки DML на кучах, что вызывает появление указателей пересылки в кучах, и как управлять ими.


Continue reading "Понимание CRUD операций, адресованных к куче, и указатели пересылки"

Почему вам следует прекратить смотреть на стоимость запроса

Пересказ статьи Erik Darling. Why You Should Stop Looking At Query Cost


Не жалейте расходов


За годы я получил множество запросов на получение sp_BlitzCache, чтобы отсортировать результаты по стоимости запроса. Я понимаю почему. Предполагается, что оптимизатор никогда не ошибается, и что стоимость непосредственно связана с плохой производительностью.
Continue reading "Почему вам следует прекратить смотреть на стоимость запроса"