Пересказ статьи Gaurav Rajapurkar. SQL Performance Tuning
Настройка производительности SQL - это процесс оптимизации запросов SQL, гарантирующий их быстрое выполнение, насколько это возможно. Имеется множество факторов, которые влияют на производительность SQL-запросов, таких как число участвующих в запросе таблиц, размер и число столбцов в таблицах, индексы на таблицах.
Настройка производительности SQL является важным элементом, который сказывается на масштабируемости и скорости запросов. Здесь обсуждаются некоторые способы настройки SQL.
Continue reading "Настройка производительности SQL"
Пересказ статьи 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?"
Пересказ статьи Steve Stedman. SQL Server DBCC Commands: DBCC OPENTRAN
DBCC OPENTRAN - это команда DBCC в Microsoft SQL Server, которая может использоваться для вывода информации о самой старой активной транзакции в базе данных. Это может оказаться полезным для решения проблем с долго выполняющимися транзакциями, т.к. она может помочь идентифицировать причину, вызвавшую проблему, и позволить вам предпринять соответствующие действия для ее решения.
Continue reading "Команды DBCC в SQL Server: DBCC OPENTRAN"
Пересказ статьи 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 "Что использовать - табличную переменную или временную таблицу?"
Пересказ статьи 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 "Триггеры: от любви до ненависти"
Пересказ статьи 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"
Пересказ статьи Ryan Booz. PostgreSQL for the SQL Server DBA: The First Four Settings to Check
Пять лет назад я начал возвращаться к использованию PostgreSQL, и это не было гладким путешествием. Одной из главных причин, по которой мне тяжело давался прогресс в изучении PostgreSQL на раннем этапе, было то, что я просто не знал, что мне следует искать. Фактически я просто постоянно беседовал в течение месяца о различиях между SQL Server и PostgreSQL с людьми, идущими по тому же пути.
Continue reading "PostgreSQL для администраторов SQL Server: первые четыре настройки для проверки"
Пересказ статьи Greg Larsen. Paging Data in T-SQL
Иногда при работе с очень большими наборами данных вы не захотите получить сразу все данные. В предыдущей статье я рассматривал использование предложение
TOP , которое позволяет получить только указанное число строк от начала результирующего набора запроса. Однако если вы захотите просмотреть строки, следующие за этим набором, пейджинг данных позволит вам продолжить прокручивать данные из набора по одной странице за раз. Т.е. вы могли захотеть вывести первые 100 строк, затем другие 100, затем оставшиеся строки и т.д.
В этой статье мы покажем, как выполнить пейджинг по результирующему набору с помощью опций OFFSET и FETCH в предложении ORDER BY.
Continue reading "Пейджинг данных в T-SQL"
Пересказ статьи 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"
Пересказ статьи Aaron Bertrand. Use DDL Triggers to Automatically Keep SQL Server Views in Sync
Сколько бы мы ни говорили людям использовать
SCHEMABINDING и избегать использования
SELECT *, все же существует множество причин, почему этому не следуют. Хорошо задокументированная проблема с SELECT * в представлениях состоит, в частности, в том, что
система кэширует метаданные представления в момент создания представления, а не тогда, когда к представлению выполняется запрос. Если позже таблицы, к которым обращается представление, изменяются, схема представления не отражает эти изменения без обновления, изменения или пересоздания представления. Разве не было бы замечательно, если бы вы могли перестать беспокоиться об этом сценарии и позволили системе автоматически синхронизировать метаданные?
Continue reading "Используйте триггеры DDL для автоматической синхронизации представлений SQL Server"
Пересказ статьи Jeff Iannucci. Common SQL Server Transaction Log Myths
SQL Server является сложным программным обеспечением, поэтому не удивительно, что некоторые из нас имеют заблуждения относительно того, чем является журнал транзакций и что он делает. Эта публикация имеет целью не просто рассказать вам об этих мифах, но и показать некоторые способы доказательства (вернее, опровержения) некоторых из наиболее стойких заблуждений, которых придерживаются некоторые из нас.
И, пожалуйста, не огорчайтесь, если вы еще верите в некоторые из этих мифов. Просто прекратите верить им после чтения этой статьи. Серьезно, никогда не поздно учиться или, как в нашем случае, переучиваться. ОК, вот правда.
Continue reading "Распространенные мифы о журналах транзакций SQL Server"
Пересказ статьи Greg Larsen. Using TOP clause in a SELECT statement
Иногда вам может потребовать вернуть только несколько строк из результирующего набора, а не все строки. Это может быть полезно, если вы хотите просто проверить критерий отбора на нескольких строках данных. Какой бы ни была причина, предложение TOP может быть полезно для возвращения конкретного числа или процента строк из результирующего набора. В этой статье будет рассмотрено использование предложения TOP в операторе SELECT, и как он может использоваться для возвращения частичного набора записей.
Continue reading "Использование предложения TOP в операторе SELECT"
Пересказ статьи 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"