Вопросы с тегом «database-internals»

По техническим вопросам о внутренней работе движка базы данных.

4
Какое максимальное количество локальных переменных может участвовать в операции SET?
У меня есть хранимая процедура, которая содержит бизнес-логику. Внутри него около 1609 переменных (не спрашивайте меня, почему, именно так работает двигатель). Я пытаюсь SETпеременную к объединенному значению всех других переменных. В результате при создании я получаю ошибку: Сообщение 8631, уровень 17, состояние 1, процедура XXX, строка YYY Внутренняя ошибка: достигнут …

2
СУММА ДАННЫХ, не соответствующих размеру таблицы из sys.allocation_units
У меня сложилось впечатление, что если бы я суммировал DATALENGTH()все поля для всех записей в таблице, я бы получил общий размер таблицы. Я ошибаюсь? SELECT SUM(DATALENGTH(Field1)) + SUM(DATALENGTH(Field2)) + SUM(DATALENGTH(Field3)) TotalSizeInBytes FROM SomeTable WHERE X, Y, and Z are true Я использовал этот запрос ниже (который я получил из Интернета, …

1
High PAGELATCH_ * и WRITELOG ждет. Они связаны?
Мы наблюдаем очень высокие типы ожидания PAGELATCH_EX и PAGELATCH_SH вместе с высокими ожиданиями WRITELOG. Я диагностировал запрос, вызывающий ожидание PAGELATCH, и могу устранить их, уменьшив частоту вставки в занятый кластерный первичный ключ, определенный со значением IDENTITY. Я понимаю, что это явление известно как конфликт защелки вставки последней страницы. Однако мой …

2
Почему отключение кластеризованного индекса делает таблицу недоступной?
Когда индекс отключен, определение остается в системном каталоге, но больше не используется. SQL Server не поддерживает индекс (так как данные в таблице изменяются), и индекс не может использоваться для удовлетворения запросов. Если кластерный индекс отключен, вся таблица становится недоступной. Почему невозможно получить доступ к данным прямо из таблицы, отбрасывающей B-дерево? …

1
Вывод хеша
Вопрос, возникший в чате: Я знаю, что внутреннее переключение хеш-соединения используется для создания вложенных циклов. Что делает SQL Server для восстановления совокупного хэша (если это вообще может произойти)?

3
Как SQL Server обрабатывает данные для запроса, если в буферном кеше недостаточно места?
Мой вопрос заключается в том, как SQL Server обрабатывает запрос, который должен вытянуть больший объем данных в буферный кеш, чем есть доступное пространство? Этот запрос будет содержать несколько объединений, поэтому результирующий набор не существует в этом формате уже на диске, и ему потребуется скомпилировать результаты. Но даже после компиляции все …

1
Получите минимальное ведение журнала при загрузке данных во временные таблицы
Даже после прочтения Руководства по производительности при загрузке данных я все еще не уверен, нужно ли добавлять подсказку таблицы TABLOCK в пустую временную таблицу, определенную с помощью кластеризованного индекса, чтобы получить минимальное ведение журнала. Очевидно, что временная таблица создается в TempDB, которая работает в режиме восстановления SIMPLE, поэтому я бы …

1
Измерение плана выселения
У нас есть SQL Server 2016 SP1 с максимальным объемом памяти 24 ГБ. Этот сервер имеет большое количество компиляций, только 10% этих компиляций являются запросами Ad-Hoc. Поэтому вновь скомпилированные планы должны храниться в кэше планов, но размер кэша планов не увеличивается (около 3,72 ГБ). Я подозреваю, что существует локальная нагрузка …

1
Индекс Seek Оператор Стоимость
Для примера запроса базы данных AdventureWorks ниже: SELECT P.ProductID, CA.TransactionID FROM Production.Product AS P CROSS APPLY ( SELECT TOP (1) TH.TransactionID FROM Production.TransactionHistory AS TH WHERE TH.ProductID = P.ProductID ORDER BY TH.TransactionID DESC ) AS CA; Этот план показывает выполнение Оценочное Оператор Стоимость от 0.0850383 (93%) для поиска по индексу …

1
Понимание страниц IAM: интервалы экстентов
Я читаю книгу Ицик "Запросы Microsoft SQL Server 2012", а также читаю / смотрю различные учебные материалы в Интернете. Мое намерение состоит в том, чтобы иметь полезное понимание того, как работают внутренние компоненты базы данных. У меня есть небольшое сомнение, что я не мог решить о страницах IAM. Поскольку я …

1
NEWID () в объединенной виртуальной таблице вызывает непреднамеренное перекрестное применение
Мой фактический рабочий запрос был внутренним соединением, но этот простой пример с перекрестным соединением почти всегда воспроизводит проблему. SELECT * FROM ( SELECT 1 UNION ALL SELECT 2 ) AA ( A ) CROSS JOIN ( SELECT NEWID() TEST_ID ) BB ( B ) С моим внутренним объединением у меня …

1
Почему функция возврата набора (SRF) работает медленнее в предложении FROM?
Это вопрос внутренней базы данных. Я использую PostgreSQL 9.5, мне интересно, почему Set Returning Functions (SRF), также известные как Table-Valued Functions (TVFs), работают медленнее, когда в FROMпредложении, например, когда я выполняю эти команды, CREATE TABLE foo AS SELECT * FROM generate_series(1,1e7); SELECT 10000000 Time: 5573.574 ms Это всегда существенно медленнее, …

2
Сжатие SQL Server 2014 и максимальный размер строки
Мне нужно создать широкую денормализованную таблицу с большим количеством десятичных (26,8) столбцов (ограничение не более 1024 столбцов, большинство столбцов будет нулевым или нулевым). Я знаю около 8060 байт на ограничение строки, поэтому я попытался создать таблицу со сжатием страницы. Код ниже создает таблицу, вставляет одну строку и запрашивает размер строки. …

1
Почему больше (и разное количество) логических операций чтения с опережающим чтением (предварительная выборка)?
После создания базы данных tpch в моем SQL Server, я попробовал следующий запрос: set statistics io on DBCC DROPCLEANBUFFERS; select top 100 * from dbo.lineitem order by l_partkey; Элемент таблицы line имеет некластеризованный индекс для l_partkey. Я выполнил вышеупомянутые запросы несколько раз и обнаружил, что логические чтения меняются каждый раз: …

1
Установить статистику ввода / вывода для вложенных циклов
Рассмотрим следующий запрос: CREATE PROC dbo.GetPage @orderid AS INT = 0, -- anchor sort key @pagesize AS BIGINT = 25 AS SELECT TOP (@pagesize) orderid, orderdate, custid, empid FROM dbo.Orders WHERE orderid > @orderid ORDER BY orderid; exec GetPage 25,25 SET STATISTICS IO для указанного выше запроса: (25 row(s) affected) …

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.