Приклад оновлення статистики SQL Server пропускає найвищий RANGE_HI_KEY у стовпчику висхідних ключів


10

Я намагаюся зрозуміти, як працює вибірка статистичних даних і чи очікується нижченаведена поведінка під час вибірки оновлених статистичних даних.

У нас є велика таблиця, розподілена за датою, на пару мільярдів рядків. Дата розділу є попередньою датою бізнесу, тому вона є висхідним ключем. Ми завантажуємо дані в цю таблицю лише за попередній день.

Навантаження даних працює протягом ночі, тому у п’ятницю 8 квітня ми завантажили дані для 7-го.

Після кожного запуску ми оновлюємо статистику, хоча беремо вибірку, а не а FULLSCAN.

Можливо, я наївний, але я б очікував, що SQL Server визначить найвищий і найнижчий ключ у діапазоні, щоб переконатися, що він отримав точний зразок діапазону. Відповідно до цієї статті :

Для першого відра нижня межа є найменшим значенням стовпця, на якому генерується гістограма.

Однак він не згадує останнє відро / найбільше значення.

З оновленням вибіркової статистики вранці 8-го року вибірка пропустила найвище значення в таблиці (7-е).

введіть тут опис зображення

Оскільки ми робимо багато запитів щодо даних за попередній день, це призвело до неточної оцінки кардинальності та вичерпання кількості запитів.

Чи повинен SQL Server не визначати найвище значення для цього ключа і використовувати його як максимальне RANGE_HI_KEY? Або це лише одна з меж оновлення без використання FULLSCAN?

Версія SQL Server 2012 SP2-CU7 Наразі ми не можемо оновити через зміну OPENQUERYповедінки в SP3, яка округляла числа в запиті на зв’язаний сервер між SQL Server та Oracle.

Відповіді:


11

Чи повинен SQL Server не визначати найвище значення для цього ключа і використовувати його як максимальне RANGE_HI_KEY? Або це лише одна з меж оновлення без використання FULLSCAN?

Це обмеження поточного впровадження вибіркової статистики. Як відомо, використовується вибірковий статистичний збірник TABLESAMPLE SYSTEM, який використовує сканування порядку розподілу та вибирає сторінки від сканування до вибірки. Лише вибрані сторінки вносять до гістограми.

Оскільки сканування впорядковано (а не впорядковано за індексом), немає можливості віддати перевагу першій та останній сторінкам у ключовому порядку.

Для отримання додаткової інформації див. Це пов'язане питання:

Як працює вибірка при оновленні статистики?

і моя стаття, сканування замовлення на розподіл

Для обхідних см Статистика по зростанню стовпців по Фабіано Amorim


2

Швидка здогадка: включити прапор сліду 4139.

Ви вже використовуєте SP2-CU1, тому це має працювати

Зверніть увагу і на вказівки щодо TF 2389 ad 2390, а також див. Http://sql-sasquatch.blogspot.com.mt/2013/06/mssql-plan-guides-to-address-ascending.html

(Зауважте, я не дуже потрапив у цю проблему і не занурився в цю глибину)

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.