Skip to content

Настройка производительности SQL

Пересказ статьи Gaurav Rajapurkar. SQL Performance Tuning


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

Откуда появились зазоры в столбце identity?

Пересказ статьи Joe Billingham. Why Are There Gaps in the Identity Column in My SQL Database


Все чаще задают вопросы о пропущенных записях, который идентифицируются зазорами в столбце identity в таблице.

Если в таблице, упорядоченной по столбцу identity, мы видим “1, 2, 3, 5”, то запись 4 должна была быть удалена, верно? Ну, хотя это возможно, оно не является единственной причиной, так как есть и другие причины такого "отсутствия" ID.
Continue reading "Откуда появились зазоры в столбце identity?"

Команды DBCC в SQL Server: DBCC OPENTRAN

Пересказ статьи Steve Stedman. SQL Server DBCC Commands: DBCC OPENTRAN


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

Команды DBCC в SQL Server: DBCC FREEPROCCACHE

Пересказ статьи Steve Stedman.SQL Server DBCC Commands: DBCC FREEPROCCACHE


DBCC FREEPROCCACHE является командой DBCC в Microsoft SQL Server, которая может использоваться для очистки процедурного кэша - области памяти, в которой хранятся планы выполнения для хранимых процедур, триггеров и ad hoc пакетов Transact-SQL. Очистка процедурного кэша может быть полезна для устранения проблем с производительностью или тестирования влияния изменений схемы базы данных на производительность запросов.
Continue reading "Команды DBCC в SQL Server: DBCC FREEPROCCACHE"

Что использовать - табличную переменную или временную таблицу?

Пересказ статьи Joe Billingham. Should I use a Table Variable or a Temporary Table?


При работе с SQL Server нет ничего необычного в необходимости сохранять данные во временной таблице или табличной переменной. Хотя оба варианта могут использоваться для достижения одной и той же цели, они по-разному могут влиять на производительность и возможность написания эффективного кода. Давайте исследуем различия между табличными переменными и временными таблицами, и когда предпочтительно использовать ту или иную.
Continue reading "Что использовать - табличную переменную или временную таблицу?"

Что делает установка уровня совместимости в SQL Server?

Пересказ статьи Brent Ozar. What Does Setting the SQL Server Compatibility Level Do?


Если щелкнуть правой кнопкой по базе данных в SQL Server Management Studio, вы получаете возможность установить уровень совместимости (Compatibility Level) на уровне базы данных:
Continue reading "Что делает установка уровня совместимости в SQL Server?"

Триггеры: от любви до ненависти

Пересказ статьи Ryan. Triggers: A LoveHate Relationship


Чтобы понять, почему триггеры могут вызывать такие различные реакции, я хочу привести краткую историю триггеров (с моей точки зрения) и то, как она повлияла на мой опыт работы с ними на раннем этапе.

Действие...реакция


Мы живем в мире действия/реакции - и не важно, как наши данные обрабатываются. По мере того, как системы реляционных баз данных развивались и совершенствовались на протяжении десятилетий, в декларативную систему добавлялись различные формы программных функций. Continue reading "Триггеры: от любви до ненависти"

Получение TOP(N) строк с помощью APPLY или ROW_NUMBER() в SQL Server

Пересказ статьи Jared Westover. Return TOP (N) Rows using APPLY or ROW_NUMBER() in SQL Server


По большей части, существует много способов сделать одну и ту же вещь. Например, если вам нужно вернуть заданное число строк из табличнозначной функции или табличного выражения. Обычно для выполнения этой задачи разработчики применяют метод, основанный на операторе APPLY. Но является ли APPLY лучшим методом для получения результатов? Как узнать, какой метод выбрать? И что делает один метод лучше другого?

Здесь мы сравним два метода для достижения одних и тех же результатов. Сначала я детально рассмотрю оператор APPLY в случаях, когда он обычно используется. Вы знаете, что он существует в двух вариантах? Затем мы сравним APPLY с ROW_NUMBER() для получения TOP(n) строк из табличного выражения. Я расскажу о критериях, используемых для измерения производительности. Как вы думаете, кто из них победит при сравнении? К концу статьи вы будете знать, какой метод выбрать для вашего следующего проекта.

Continue reading "Получение TOP(N) строк с помощью APPLY или ROW_NUMBER() в SQL Server"

PostgreSQL для администраторов SQL Server: первые четыре настройки для проверки

Пересказ статьи Ryan Booz. PostgreSQL for the SQL Server DBA: The First Four Settings to Check



Пять лет назад я начал возвращаться к использованию PostgreSQL, и это не было гладким путешествием. Одной из главных причин, по которой мне тяжело давался прогресс в изучении PostgreSQL на раннем этапе, было то, что я просто не знал, что мне следует искать. Фактически я просто постоянно беседовал в течение месяца о различиях между SQL Server и PostgreSQL с людьми, идущими по тому же пути. Continue reading "PostgreSQL для администраторов SQL Server: первые четыре настройки для проверки"

Пейджинг данных в T-SQL

Пересказ статьи Greg Larsen. Paging Data in T-SQL


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

В этой статье мы покажем, как выполнить пейджинг по результирующему набору с помощью опций OFFSET и FETCH в предложении ORDER BY. Continue reading "Пейджинг данных в T-SQL"

Приостановка и возобновление создания ограничений таблицы в SQL Server 2022

Пересказ статьи Daniel Calbimonte. SQL Server 2022 Pause and Resume Creation of Table Constraints


В SQL Server 2022 появилась новая функция, которая позволяет приостанавливать и возобновлять создание ограничений первичного ключа (primary key) и уникальности (unique) для таблицы. В этой статье рассматривается использование этой новой функции.

Для небольших таблиц добавление ограничения может происходить быстро, но для больших таблиц этот процесс может быть значительно более долгим, иногда часами, и потреблять много ресурсов. В предыдущих версиях, если вы хотели приостановить процесс из-за проблем с ресурсами, такой возможности не было. Единственным вариантом было остановить создание и начать его заново. Теперь в SQL Server 2022 при добавлении ограничения вы можете поставить процесс на паузу, а потом возобновить его. Continue reading "Приостановка и возобновление создания ограничений таблицы в SQL Server 2022"

Используйте триггеры DDL для автоматической синхронизации представлений SQL Server

Пересказ статьи Aaron Bertrand. Use DDL Triggers to Automatically Keep SQL Server Views in Sync


Сколько бы мы ни говорили людям использовать SCHEMABINDING и избегать использования SELECT *, все же существует множество причин, почему этому не следуют. Хорошо задокументированная проблема с SELECT * в представлениях состоит, в частности, в том, что система кэширует метаданные представления в момент создания представления, а не тогда, когда к представлению выполняется запрос. Если позже таблицы, к которым обращается представление, изменяются, схема представления не отражает эти изменения без обновления, изменения или пересоздания представления. Разве не было бы замечательно, если бы вы могли перестать беспокоиться об этом сценарии и позволили системе автоматически синхронизировать метаданные?
Continue reading "Используйте триггеры DDL для автоматической синхронизации представлений SQL Server"

Распространенные мифы о журналах транзакций SQL Server

Пересказ статьи Jeff Iannucci. Common SQL Server Transaction Log Myths


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

И, пожалуйста, не огорчайтесь, если вы еще верите в некоторые из этих мифов. Просто прекратите верить им после чтения этой статьи. Серьезно, никогда не поздно учиться или, как в нашем случае, переучиваться. ОК, вот правда.
Continue reading "Распространенные мифы о журналах транзакций SQL Server"

Использование предложения TOP в операторе SELECT

Пересказ статьи Greg Larsen. Using TOP clause in a SELECT statement


Иногда вам может потребовать вернуть только несколько строк из результирующего набора, а не все строки. Это может быть полезно, если вы хотите просто проверить критерий отбора на нескольких строках данных. Какой бы ни была причина, предложение TOP может быть полезно для возвращения конкретного числа или процента строк из результирующего набора. В этой статье будет рассмотрено использование предложения TOP в операторе SELECT, и как он может использоваться для возвращения частичного набора записей.
Continue reading "Использование предложения TOP в операторе SELECT"

Привилегии и роли в SQL Server, Oracle и PostgreSQL. Часть 1

Пересказ статьи Andrea Gnemmi. Privileges and Roles in SQL Server, Oracle and PostgreSQL - Part 1


Предоставление привилегий на объект базы данных является наиболее распространенным видом деятельности, которую выполняют администраторы баз данных, стараясь при этом дать разрешения, достаточные для выполнения работы, но не слишком большой доступ. Помните о принципе наименьших привилегий! Иногда это сложно реализовать, и, как мы видели на многих других примерах, имеются некоторые различия в реализации этой функциональности в трех рассматриваемых РСУБД, плюс появились некоторые новые роли в SQL Server 2022. В настоящей статье мы рассмотрим то, как предоставить разрешения в SQL Server, Oracle и PostgreSQL.

В этом руководстве мы дадим обзор различных способов предоставления привилегий в SQL Server, Oracle и PostgreSQL. Будут также представлены различия в концепциях ролей, схем и владельцев, а также способ предоставления разрешений на всю схему. Работая над этой статьей, я осознал, что она становится все больше и больше, поэтому я разбил ее на 2 части. В этой первой части мы сосредоточим внимание на концепции ролей. Continue reading "Привилегии и роли в SQL Server, Oracle и PostgreSQL. Часть 1"