Skip to content

Какая разница между PERCENT_RANK и CUME_DIST?

Пересказ статьи Kathi Kellenberger. What’s the Difference Between PERCENT_RANK and CUME_DIST?


Помните стандартные тесты, которые вы сдавали в школе? Они сравнивали ваше выполнение с другими, ранжировали, но не давали фактического процента правильных ответов.

Microsoft реализовал несколько новых оконных функций в SQL Server 2012, в том числе две, которые сравнивают элементы в списке, аналогично результатам стандартных тестов. Этими двумя функциями являются PERCENT_RANK и CUME_DIST. Они подобны функции RANK, но возвращают процент в группе, а не просто ранговый номер.
Continue reading "Какая разница между PERCENT_RANK и CUME_DIST?"

Понимание моделей восстановления SQL Server

Пересказ статьи Greg Larsen. Understanding SQL Server Recovery Models


Задачей номер 1, которую каждый администратор баз данных должен выполнять идеально, является восстановление базы данных, если она по какой-то причине окажется поврежденной. Модель восстановления (recovery model) базы данных определяет варианты, которые имеются у администратора при восстановлении базы данных. Если администратор не может восстановить базу данных в случае аварии, ему лучше стряхнуть пыль со своего резюме и начать искать новое направление работы. Continue reading "Понимание моделей восстановления SQL Server"

Должен ли я заменить слияние строк с помощью FOR XML PATH на String_agg?

Пересказ статьи Jeffry Schwartz. Should I Replace My FOR XML PATH String Merges with String_agg?


Если вы ищете в этом, в первую очередь, прирост производительности, то ответ - нет. Однако, если вы используете SQL Server 2017 и разрабатываете новый код, вам следует рассмотреть использование новой функции String_agg, которая появилась в SQL Server 2017, поскольку код с использованием этой функции намного более читабелен, и его легче написать и поддерживать. В этой статье сравнивается производительность двух методов с объяснением разницы в коде. Представленные примеры задействуют списки имен таблиц SQL Server, которые соединяются в предложении динамического SQL, которое может быть использовано в предложениях WHERE или JOIN.


Continue reading "Должен ли я заменить слияние строк с помощью FOR XML PATH на String_agg?"

Год 2020, так ли еще нужен DBCC CHECKDB?

Пересказ статьи Daniel Janik. It’s 2020, Do I really need to DBCC CHECKDB?


Скажем, вы получаете запрос на восстановление бэкапа базы данных в Azure Managed Instance. Вы выполняете эту задачу, а затем несколькими днями спустя команда, которая просила сделать восстановление, сообщает, что они имеют проблемы с подключением к недавно восстановленному бэкапу.


Continue reading "Год 2020, так ли еще нужен DBCC CHECKDB?"

Обновление зависимых представлений после изменения DDL

Пересказ статьи Eduardo Pivaral. Refreshing dependent views after a DDL change


Когда вы отвечаете за базы данных с тоннами объектов, небольшие изменения объекта могут затруднить репликацию, если имеется множество объектов, которые зависят от него.

Здесь мы рассмотрим то, как обновлять представления при изменении столбцов. Continue reading "Обновление зависимых представлений после изменения DDL"

Скрытые проблемы форматирования с помощью STR()

Пересказ статьи Jeff Moden. Hidden Formatting Troubles with STR() (SQL Spackle)



Введение


Все мы знаем, что форматирование данных в SQL Server, это то, чего не следует делать, но нам иногда требуется как-то отформатировать вывод в файл или по другим не связанным с GUI причинам.

Функция STR () кажется очень удобной для форматирования. И это так. Она округляет до заданного числа десятичных знаков. Она позволяет вам контролировать отображаемую ширину колонки вывода. Для чего еще, можете вы спросить. Если вы используете STR() не только для простых целых чисел или предварительно округленных значений, ответом может быть "новое задание". Давайте посмотрим...
Continue reading "Скрытые проблемы форматирования с помощью STR()"

Как команда CHOOSE влияет на производительность?

Пересказ статьи Grant Fritchey. HOW DOES THE CHOOSE COMMAND AFFECT PERFORMANCE?


На первый взгляд, я, честно говоря, не думаю, что она сама по себе влияет на производительность, и зависит от того, где и как вы ее используете. Однако ответ всегда лучше подкреплять тестированием.
Continue reading "Как команда CHOOSE влияет на производительность?"

Половина вас не понимает переменные и транзакции

Пересказ статьи Brent Ozar. Half Of You Don’t Understand Variables and Transactions


Уважают ли табличные переменные и обычные переменные транзакции? Если я установлю значение переменной во время выполнения транзакции, а затем выполню откат, что произойдет? Continue reading "Половина вас не понимает переменные и транзакции"

Реализация безопасности SQL Server с помощью хранимых процедур и представлений

Пересказ статьи K. Brian Kelley. Implementing SQL Server Security with Stored Procedures and Views


Проблема


Я понимаю, что посредством использования цепочки владения SQL Server можно ограничить доступ к таблицам с данными, в то же время позволяя приложениям запрашивать и модифицировать данные. Как это работает? Имеются ли примеры, которые я мог бы использовать в собственном коде?


Continue reading "Реализация безопасности SQL Server с помощью хранимых процедур и представлений"

Синонимы в SQL Server

Пересказ статьи Greg Larsen. SQL Server Synonyms


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

Continue reading "Синонимы в SQL Server"

Пример курсора в SQL Server

Пересказ статьи Jeremy Kadlec. SQL Server Cursor Example


Проблема


В своем коде T-SQL я всегда использую теоретико-множественные операции. Мне говорили, что SQL Server ориентирован на обработку операций этого типа, и они будут выполняться быстрей, чем последовательная обработка. Я знаю, что существуют курсоры, но я не знаю, как их использовать. Можете дать мне несколько примеров курсора? Можете указать мне, когда использовать курсоры? Я предполагаю, что Microsoft включил их в SQL Server намеренно, поэтому они должны иметь свою нишу, где могут быть использованы эффективно.

Continue reading "Пример курсора в SQL Server"

Адаптивные соединения в SQL Server

Пересказ статьи Monica Rathbun. Adaptive Joins in SQL Server


SQL Server 2017 (уровень совместимости 140) внес много интеллекта в обработку запросов, формально известного как адаптивная обработка запросов, функциональности, которая улучшает производительность при рабочих нагрузках прямо из коробки без каких-либо изменений кода. Одной из введенных новинок являются адаптивные соединения (Adaptive Joins). При этой функциональности оптимизатор динамически выбирает оператор соединения во время выполнения; для этого используется пороговое число строк, на основании которого делается выбор между операторами соединения Nested Loop (вложенные циклы) и Hash Match (соединения при поиске совпадений в хеше). Этот переключатель оператора может выбрать лучший вариант и увеличить производительность ваших запросов без прикладывания рук.

Continue reading "Адаптивные соединения в SQL Server"

Увеличение отображения плана запроса в SQL Server на весь экран

Пересказ статьи Greg Robidoux. Maximize View of SQL Server Query Plans with Full Screen Option


Замечательной особенностью SQL Server является возможность отображения графических планов запросов. Проблема с графическими планами состоит в том, что они зачастую очень большие, и весьма затруднительно перемещаться по плану в поисках проблем вашего запроса или запросов. В SQL Server Management Studio у вас есть возможность изменять масштаб, а также открывать определенные части плана, перемещая мышь на сжатые версии плана запроса. Однако при этом вы ограничены панелью результатов для просмотра плана, и это еще больше затрудняет нахождение нужной информации. Существуют ли приемы, которые бы сделали навигацию по плану запроса легче? Continue reading "Увеличение отображения плана запроса в SQL Server на весь экран"

Использование HierarchyID в SQL Server на простых примерах

Пересказ статьи Edwin Sanchez. How to Use SQL Server HierarchyID Through Easy Examples


Вы еще используете родительско-дочерний подход или хотели бы попробовать что-то новое типа hierarchyID? Да, это относительно новое, поскольку hierarchyID появился в SQL Server 2008. Конечно, новизна, сама по себе, не является аргументом. Однако заметьте, что Microsoft добавил эту функциональность для лучшего представления многоуровневых отношений один-ко-многим. Continue reading "Использование HierarchyID в SQL Server на простых примерах"

Query memory grants. Часть 2: Varchar и сортировка

Пересказ статьи Arthur Daniels. Query memory grants part 2: Varchars and sorting


Какого черта мы сделали все наши столбцы varchar? Это гипотетический вопрос, извините.

И теперь мы должны заплатить за наши решения. Рассмотрим запрос, который должен выполнить некоторую сортировку. Давайте возьмем таблицу, которую нужно отсортировать.
Continue reading "Query memory grants. Часть 2: Varchar и сортировка"