Пересказ статьи Gail Shaw. On table variable row estimations
На первый взгляд, вопрос об оценке количества строк табличной переменной кажется легким.
Продолжить чтение "Об оценке строк табличной переменной"
Пересказ статьи Grant Fritchey. GETTING STARTED READING EXECUTION PLANS: HIGHEST COST OPERATOR
Читать планы выполнения в SQL Server довольно тяжело. Много чего нужно узнать и понять.
Ранее я очертил основные моменты, с которых я начинаю изучение плана выполнения. Однако только этого недостаточно. Я хочу продолжить объяснение немного глубже, почему и как эти базовые шаги помогут вам начать читать планы выполнения. Вместо обсуждения первого оператора поговорим сначала о операторах, имеющих максимальную стоимость.
Продолжить чтение "Начинаем чтение планов выполнения: оператор с наибольшей стоимостью"
Пересказ статьи Grant Fritchey. EXECUTION PLANS, WHAT DO I LOOK AT?
Возник вопрос - какие самые важные вещи, на которые нужно обращать внимание в запросе. Я осознал, что на самом деле не писал об этом. Есть несколько мест, которые позволяют мне сразу узнать довольно много, где в плане заложены проблемы. При взгляде на эти вещи вы не обязательно найдете ответ, но узнаете о наличии проблемы. Как это мне свойственно, я не смог ограничиться 5-ю, поэтому вот 6 таких вещей:
Продолжить чтение "Планы выполнения, на что следует обращать внимание?"
Пересказ статьи Andy Galbraith. Toolbox - When Intellisense Doesn't See Your New Object
Я работал над новым SQL заданием (SQL job), и частью задания было добавление нескольких новых таблиц в нашу базу данных обслуживания DBA для хранения данных задания. Я создал запросы мониторинга, а затем - новые таблицы для хранения этих данных.
Продолжить чтение "Когда Intellisense не видит ваш новый объект"
§ Благодаря Kursist, пофиксили старый баг, связанный с проверкой некоторых задач с отрицательными номерами. Рекомендуем проверить свои решения.
§ Под номерами 306 и 235 опубликованы две однобальные задачи от Baser.
Продолжить чтение "Новости за 2021-02-20 - 2021-02-26"
Пересказ статьи DANIEL HUTMACHER. The curious case of the Top N Sort
Просматривая сессию саммита PASS 2017 Брента Озара на Youtube, я узнал, что оператор сортировки Top N в SQL Server резко меняет свое поведение в зависимости от того, сколько строк вы хотите получить из TOP.
Рассмотрим следующий пример запроса в базе данных Stack Overflow:
Продолжить чтение "Любопытный случай сортировки с Top N"
Пересказ статьи John McCormack. Locks, blocks and deadlocks in SQL Server
Терминология имеет значение: Locks, blocks и deadlocks
Я потерял счет тому, сколько раз мне говорили о существовании тупика в базе данных, но стоило проверить и посмотреть, так никаких тупиковых ситуаций не обнаруживалось. В этом сценарии обычно они пытались описать блокировку. Администратору баз данных или разработчику важно знать различие между блокировками (Lock), блокированием (block) и тупиками (deadlock).
Продолжить чтение "Блокировки, блокирование и тупики в SQL Server"
§ Проблема с неработающей почтой на сайте решена. Обратная связь работает, как и восстановление пароля.
Продолжить чтение "Новости за 2021-02-13 - 2021-02-19"
Пересказ статьи Edwin Sanchez. Top 3 Tips You Need to Know to Write Faster SQL Views
Друг или враг? Представления SQL Server были предметом жарких дебатов, когда я только начал использовать SQL Server. Говорилось, что это плохо, поскольку медленно. Но как обстоят дела сейчас?
Продолжить чтение "3 лучших совета для написания более быстрых представлений SQL"
Пересказ статьи Hugo Kornelis. Aggregate Functions
Введение
В настоящее время SQL Server поддерживает три оператора, которые могут вычислять агрегаты: Hash Match, Stream Aggregate и Window Aggregate. Все эти операторы используют один и тот же базовый принцип поддержки внутренних счетчиков по мере обработки строк, так что финальное значение этих внутренних счетчиков и является ожидаемым значением.
Продолжить чтение "Агрегатные функции"
Пересказ статьи Paul White. Some ANY Aggregate Transformations are Broken
Агрегат ANY - это не то, что мы можем непосредственно написать на Transact SQL. Это только внутренняя функция, используемая оптимизатором запросов и движком.
Я сам очень люблю агрегат ANY, поэтому был несколько огорчен, узнав, что он нарушается довольно фундаментальным образом. Говоря «нарушается», я имею в виду получение неправильных результатов.
Здесь я рассмотрю два конкретных случая, где обычно присутствует агрегат ANY, для демонстрации проблемы неправильных результатов и предложу при необходимости обходные пути.
Продолжить чтение "Некоторые преобразования агрегата ANY нарушаются"
Пересказ статьи Paul White. Undocumented Query Plans: The ANY Aggregate
Как обычно, начнем с тестовой таблицы:
CREATE TABLE #Example
(
pk numeric IDENTITY PRIMARY KEY NONCLUSTERED,
col1 sql_variant NULL,
col2 sql_variant NULL,
thing sql_variant NOT NULL,
);
Продолжить чтение "Недокументированные планы запросов: агрегат ANY"