Пересказ статьи Andy Galbraith. Toolbox - When Intellisense Doesn't See Your New Object
Я работал над новым SQL заданием (SQL job), и частью задания было добавление нескольких новых таблиц в нашу базу данных обслуживания DBA для хранения данных задания. Я создал запросы мониторинга, а затем - новые таблицы для хранения этих данных.
Continue reading "Когда Intellisense не видит ваш новый объект"
Пересказ статьи DANIEL HUTMACHER. The curious case of the Top N Sort
Просматривая сессию саммита PASS 2017 Брента Озара на Youtube, я узнал, что оператор сортировки Top N в SQL Server резко меняет свое поведение в зависимости от того, сколько строк вы хотите получить из TOP.
Рассмотрим следующий пример запроса в базе данных Stack Overflow:
Continue reading "Любопытный случай сортировки с Top N"
Пересказ статьи John McCormack. Locks, blocks and deadlocks in SQL Server
Терминология имеет значение: Locks, blocks и deadlocks
Я потерял счет тому, сколько раз мне говорили о существовании тупика в базе данных, но стоило проверить и посмотреть, так никаких тупиковых ситуаций не обнаруживалось. В этом сценарии обычно они пытались описать блокировку. Администратору баз данных или разработчику важно знать различие между блокировками (Lock), блокированием (block) и тупиками (deadlock).
Continue reading "Блокировки, блокирование и тупики в SQL Server"
Пересказ статьи Edwin Sanchez. Top 3 Tips You Need to Know to Write Faster SQL Views
Друг или враг? Представления SQL Server были предметом жарких дебатов, когда я только начал использовать SQL Server. Говорилось, что это плохо, поскольку медленно. Но как обстоят дела сейчас?
Continue reading "3 лучших совета для написания более быстрых представлений SQL"
Пересказ статьи Hugo Kornelis. Aggregate Functions
Введение
В настоящее время SQL Server поддерживает три оператора, которые могут вычислять агрегаты: Hash Match, Stream Aggregate и Window Aggregate. Все эти операторы используют один и тот же базовый принцип поддержки внутренних счетчиков по мере обработки строк, так что финальное значение этих внутренних счетчиков и является ожидаемым значением.
Continue reading "Агрегатные функции"
Пересказ статьи Paul White. Some ANY Aggregate Transformations are Broken
Агрегат ANY - это не то, что мы можем непосредственно написать на Transact SQL. Это только внутренняя функция, используемая оптимизатором запросов и движком.
Я сам очень люблю агрегат ANY, поэтому был несколько огорчен, узнав, что он нарушается довольно фундаментальным образом. Говоря «нарушается», я имею в виду получение неправильных результатов.
Здесь я рассмотрю два конкретных случая, где обычно присутствует агрегат ANY, для демонстрации проблемы неправильных результатов и предложу при необходимости обходные пути.
Continue reading "Некоторые преобразования агрегата 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,
);
Continue reading "Недокументированные планы запросов: агрегат ANY"
Пересказ статьи Randolph West. The final word on storage for DATETIME2
В прошлом месяце один из комментаторов моей
статьи на эту тему заметил, что официальная документация SQL Server для DATETIME2 не согласуется с моими утверждениями, и что я недостаточно представляю себе требования к хранилищу.
Continue reading "Последнее слово о хранилище для DATETIME2"