Пересказ статьи Aaron Bertrand. Reasons for SQL Server Query Performance Fluctuations
Производительность запроса может испытывать скачки с течением времени, и это не обязательно обусловлено изменениями в самом запросе (или в коде приложения, которое его вызывает). Пользователи часто спрашивают, почему запрос внезапно стал работать медленнее, хотя они ничего не меняли в приложении, а данные не изменялись резко. В этой статье мы укажем на несколько причин - их существует много - по которым запрос мог замедлиться сегодня по сравнению с тем, что было 10 минут назад, две недели назад, или прошлым летом.
Прежде чем вникать в возможные причины скачков производительности, давайте сделаем обзор того, что происходит в SQL Server при обработке запросов.
Continue reading "Причины скачков производительности запроса в SQL Server"
Пересказ статьи Rahma Hassan. Understanding the “ROWS BETWEEN” Clause in SQL
В SQL предложение “ROWS BETWEEN” является мощным средством, которое позволяет вам определить окно строк для анализа или вычислений непосредственно в запросе. Указывая диапазон строк, вы можете выполнять вычисления или применять агрегатные функции к подмножеству данных, а не ко всему результирующему набору. Цель данной статьи - сделать понятным предложение “ROWS BETWEEN” и его использование на примерах.
Continue reading "Понимание предложения ROWS BETWEEN в SQL"
Пересказ статьи Andy Warren. Restore With Standby; A Review and A Lesson Learned
Имеются функции SQL Server, которые я использую часто и считаю, что понимаю их достаточно хорошо. Есть функции, о которых я знаю, но использую редко, и есть большой список вещей, на которые я только взглянул или использовал один раз. В части знакомых мне вещей я иногда обнаруживаю, что не вполне их понимал или пропустил темные углы, поскольку мне никогда не требовалось исследовать их. Хотя возникает огорчение или фейспалм Пикарда — естественные реакции на "Я думал, что знаю это", лучше осознать, что теперь у меня на один пробел меньше, чем было раньше. Здесь, как вы, вероятно, предположили, я имею в виду восстановление в режиме ожидания. Я начну с краткого обзора резервирования журнала, norecovery и standby, затем покажу вам как это работает на нескольких примерах, включая тот, который иллюстрирует урок, который я при этом получил, и сопровожу его некоторыми замечаниями о том, почему эта мелочь в восстановлении может однажды избавить вас от плохого настроения.
Continue reading "Восстановление в режиме ожидания; обзор и выученный урок"
Пересказ статьи Daniel Calbimonte. Different ways to Convert a SQL INT Value into a String Value
Здесь я покажу различные способы преобразования данных в SQL Server из целого типа в строковый с помощью разных операторов SQL.
Начинаем
Пусть у нас есть числовой столбец OrderQty в таблице WorkOrder в производственной базе данных SQL.
SELECT [OrderQty]
FROM [Production].[WorkOrder]
Continue reading "Различные способы преобразования целого значения в строку"
Пересказ статьи Mehdi Ghapanvari. SQL Server Execution Plan Issues when using TOP Clause and Various Parameters
Запрос иногда оказывается супер быстрым, а иногда - очень медленным. Одной из основных причин такого поведения является прослушивание параметра (Parameter Sniffing). Имеется несколько подходов, связанных с проблемой прослушивания параметра, и в этой статье обсуждаются эффективные методы для обработки Parameter Sniffing в операторах SELECT, содержащих предложение TOP.
Continue reading "Проблемы плана выполнения SQL Server при использовании предложения TOP и различных параметров"
Пересказ статьи Erland Sommarskog. Arrays and Lists in SQL Server. The Short Version
1. Введение
Эта сокращенная статья ориентирована на читателей, имеющих ограниченный опыт в программировании в SQL Server, в которой обсуждается как обрабатывать список значений, разделенный запятыми или каким-нибудь другим разделителем.
Полная версии статьи включает много других способов разбиение списков на таблицы - и вам будет о чем поспорить. Эта длинная статья предназначена для несколько более опытной аудитории. Скорее всего, сокращенная статья даст вам то, что требуется, но в некоторых местах я ссылаюсь на длинную статью для пользователей с особыми потребностями.
Continue reading "Массивы и списки в SQL Server. Сокращенная версия"
Пересказ статьи Haq Nawaz. How to Connect & Query SQL Server using Python
Сегодня я расскажу, как подключиться к базам данных SQL, используя Python. Это распространенный вопрос, который возникает в
серии ETL. Поэтому я решил рассмотреть его и направлять посетителей сюда, если у них возникнут проблемы с подключением.
Эта установка SQL Server позволит нам:
- Установить подключение к базе данных SQL Server из Python
- Выполнять запросы к базе данных SQL Server
- Извлекать и сохранять данные в фрейме данных
Continue reading "Как, используя Python, подключиться к SQL Server и выполнить запрос"
Пересказ статьи Chad Callihan. What is the READPAST Query Hint?
Вы когда-нибудь слышали о хинте запроса READPAST? Я бы сказал, что это родной брат NOLOCK. С помощью NOLOCK вы получите данные быстрей, но с риском грязных чтений. С помощью READPAST SQL Server вообще пропустит заблокированные данные. Это может быть как полезно, так и весьма опасно, если вы не знаете, как это используется.
Давайте сравним NOLOCK и READPAST, чтобы вы знали, чего следует ожидать, если вы хотите правильно использовать эти хинты запросов.
Continue reading "Что это за хинт запроса READPAST?"
Пересказ статьи Chad Callihan. How You Can Use IS [NOT] DISTINCT FROM
Недавно я поигрался с одной функцией, введенной в SQL Server 2022 - IS [NOT] DISTINCT FROM. Эта новая функция может помочь в случае, когда приходится сравнивать NULL-значения.
Сравнение NULL-значения с другим значением будет возвращать NULL. Это подобно умножению чего-нибудь на 0. IS [NOT] DISTINCT FROM гарантирует получение true или false в предположении, что NULL есть "что-то".
Давайте посмотрим [NOT] DISTINCT FROM в действии на примере.
Continue reading "Как вы можете использовать IS [NOT] DISTINCT FROM"
Пересказ статьи Adron. Let’s Talk About Database Schema
Серьезно, давайте поговорим о схеме абстрактно и о буквальной схеме, реализованной в некоторых из самых популярных систем баз данных.
Что такое схема?
В целом, в стороне от специфических реализаций в реляционных базах данных, "схема" - это концептуальная основа или проект, который определяет структуру, связи и ограничения данных или информации. Она предоставляет способ описания и организации данных в структурированном виде. Такое понятие схемы не уникально для баз данных; например, в GraphQL схема определяет типы, запросы, мутации и связи между ними, ограничивая набор возможных операций, которые могут выполняться с использованием API, и форму возвращаемых данных.
Continue reading "Давайте поговорим о схеме базы данных"
Пересказ статьи Nisarg Upadhyay. How to Change the SQL Server Database Owner
В SQL Server с каждой базой данных связан владелец (owner), который является принципалом, имеющим определенные разрешения и контроль над базой данных. Владелец базы данных - это пользователь или логин, которому предоставлена пользовательская роль dbo (database owner) на эту базу данных. Владелец базы данных имеет наивысший уровень разрешений в пределах базы данных и может выполнять административные задачи, такие как создание или модификация объектов, управление безопасностью и изменение схемы базы данных.
Continue reading "Как поменять владельца базы данных SQL Server"
Пересказ статьи Edward Pollack. Ordered Columnstore Indexes in SQL Server 2022
Одним из наиболее сложных технических моментов поколоночных индексов, который постоянно привлекает внимание, является необходимость упорядочивания данных для устранения сегментации. В некластеризованном поколоночном индексе порядок данных устанавливается автоматически на основе построчного порядка базовых данных. Однако в кластеризованном поколоночном индексе порядок данных не навязывается каким-либо процессом SQL Server. Это управление порядком данных остается на наше усмотрение, что может не оказаться (или оказаться) легкой задачей.
Чтобы помочь с этой проблемой, в SQL Server 2022 была добавлена возможность указывать предложение ORDER при создании или перестройке индекса. Эта функция приводит к автоматической сортировке данных SQL Server в рамках процессов вставки или перестройки. В этой статье подробно рассматривается эта функция, уделяя внимание ее использованию и ограничениям.
Continue reading "Упорядоченные поколоночные индексы в SQL Server 2022"
Пересказ статьи Henrique Siebert Domareski. Table-Valued Parameters in SQL Server
Табличнозначные параметры подобны массивам параметров, которые могут использоваться для передачи множества строк данных в оператор Transact-SQL, хранимую процедуру или функцию без необходимости создавать временную таблицу или использовать множество параметров. В этой статье демонстрируется использование табличнозначного параметра в хранимой процедуре Microsoft SQL Server.
Continue reading "Табличнозначные параметры в SQL Server"
Пересказ статьи Pablo Echeverria. SQL Server vs Oracle Query Statistics to Improve Performance
Не всегда проблемы проявляются в тот момент, когда мы ведем наблюдение. К счастью, каждый движок базы данных содержит представления, которые удерживают прошлые запросы в течение более продолжительного времени. Эти представления могут помочь администратору баз данных вести упреждающий мониторинг кэшированных планов выполнения с целью улучшения существующих запросов и, насколько это возможно, избежать проблем до их возникновения. Но эту информацию необходимо правильно интерпретировать, знать как извлечь и измерить каждое поле, является ли значение накопительным или нет.
В этой статье мы увидим, как определить, какие планы выполнения находятся в кэше и их накопленную статистику, сколько раз они были выполнены, и какое число различных планов выполнения имеется.
Continue reading "Статистика для улучшения производительности: сравнение SQL Server и Oracle"
Пересказ статьи Jared Westover. SQL Server Storage Modes - Choosing Rowstore or Columnstore
Я слышал, что SQL Server описывают как приложение, имеющее фут в ширину и милю в глубину. Я думаю, что мог бы привести аргумент в пользу 10 миль в глубину. Есть несколько существенных моментов, о которых должен знать инженер данных. Например, знаете ли вы, что есть два режима хранения записей в SQL Server? Если вы собираетесь на интервью или проектируете архитектуру базы данных вашего следующего приложения, выходите на свет. Как говорил Уоррен Баффетт, "чем больше вы учитесь, тем больше зарабатываете".
Continue reading "Режимы хранилища SQL Server - выбор между построчным и поколоночным хранением"