Skip to content

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

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


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


Продолжить чтение "Новости за 2021-10-02 - 2021-10-08"

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

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


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

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

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


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

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

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

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

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


Продолжить чтение "Вставка столбца со значением по умолчанию в таблицу SQL Server"
Категории: T-SQL

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

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


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

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

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


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

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


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

Продолжить чтение "Как использовать функциональность массивов в SQL Server?"
Категории: T-SQL

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

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


Введение


Каждая транзакция DML читает данные, прежде чем сделать какие-либо изменения. Не только при операторе SELECT, но и когда выполняется любой оператор DML, вставка, обновление или удаление, SQL Server сначала считывает набор страниц в буферный пул, размещая желаемые строки и изменяя их, выполняя синхронную запись в файл журнала транзакций.
Продолжить чтение "Понимание 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 на кучах, что вызывает появление указателей пересылки в кучах, и как управлять ими.


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

Новости за 2021-09-11 - 2021-09-17

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


§ Под номером 157 (SELECT, обучающий этап) выставлена новая задача от Kursist (сложность 1 балл).


Продолжить чтение "Новости за 2021-09-11 - 2021-09-17"

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

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


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


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

Нахождение дочерних записей по внешнему ключу в SQL Server

Пересказ статьи John Morehouse. Finding Foreign Key Child Records In SQL Server


Внешние ключи помогают поддерживать ссылочную целостность данных между таблицами. Другими словами, родительские записи не могут быть удалены, если присутствуют дочерние записи. Это замечательная вещь, и если вы не используете внешние ключи, вам следует это сделать. При всей полезности ссылочной целостности внешние ключи могут привести к замедлению удаления данных, особенно если вы хотите удалить родительскую запись. Для того чтобы завершить транзакцию, SQL Server должен проверить все внешние ключи на отсутствие любых дочерних записей. Продолжить чтение "Нахождение дочерних записей по внешнему ключу в SQL Server"
Категории: T-SQL

Как разблокировать логин SQL Server с помощью T-SQL (без смены пароля)?

Пересказ статьи Kenneth Fisher. How do I unlock a SQL Server Login using T-SQL (without changing the password)?


Недавно логин приложения (авторизация SQL Server) в одной из наших учебных сред начал постоянно блокироваться. Я не буду вдаваться в причины, скажу лишь, что мы решили эту проблему. Это была серьезная проблема, которая довольно быстро перешла в нашу цепочку управления. Нам требовалось решить её как можно быстрее. Поэтому требовалось решение не только на длительную перспективу, но также краткосрочное решение. Последнее решение включает создание скрипта, который разблокирует логин (если он заблокирован), и включение его в задание, которое выполняется каждые 5 минут.

Продолжить чтение "Как разблокировать логин SQL Server с помощью T-SQL (без смены пароля)?"
Категории: T-SQL

Безопасность SQL Server - модель безопасности с использованием определяемых пользователем ролей

Пересказ статьи Greg Larsen. SQL Server security – Providing a security model using user-defined roles


При разработке приложения, которому требуется доступ к SQL Server, необходимо установить модель безопасности с тем, чтобы каждый пользователь получал такой доступ, который необходим ему для выполнения своих обязанностей. Некоторые приложения требуют одинаковый доступ для всех пользователей, в то время как для других могут потребоваться различные права безопасного доступа на основе роли, которую пользователь имеет в организации. Лучшей практикой предоставления доступа пользователю является безопасность на основе роли пользователя. SQL Server предоставляет пользовательские роли уровня сервера и базы данных с целью определения правил безопасности для различных потребностей пользователей в безопасности. В настоящей статье мы обсудим пользовательские роли сервера и базы данных для обеспечения безопасного доступа к ресурсам SQL Server.
Продолжить чтение "Безопасность SQL Server - модель безопасности с использованием определяемых пользователем ролей"
Категории: T-SQL