Питання щодо магазину версій tempdb


9

Сьогодні ми зіткнулися з помилкою:

Помилка: 3967, тяжкість: 17

і з того, що я можу сказати, це в основному "магазин повної версії". Це викликало деякі питання, на які у мене виникли проблеми з відповіддю, оскільки в моєму магазині у нас ніколи не було цієї помилки:

  • Якщо є заданий максимальний розмір (виходячи із загального розміру tempdb чи іншим чином), чи він динамічний?

  • Чи є налаштування, яке б зробило його динамічним, якщо його немає?

  • Чи можемо ми встановити сповіщення на основі цього? (тобто DMV, які слід використовувати для відстеження розміру тощо)

Відповіді:


7

Серйозність 17 вказує на те, що у SQL Server не вистачає необхідного ресурсу. Зазвичай ви бачите це, коли в базі даних не вистачає місця. У цьому випадку це здається, що tempdb використовується для зчитування рядків версії ізоляції знімків для читання рядків для запиту, який потрібно пролити до tempdb.

Це може бути досить часто, якщо tempdb має обмежений максимальний розмір і намагається погано записаний запит, який, наприклад, виконує дуже велике перехресне з'єднання.

Ви можете використовувати цей запит, щоб побачити поточний розмір магазину версій у tempdb:

SELECT *
FROM sys.dm_os_performance_counters dopc
WHERE dopc.counter_name LIKE 'Version %';

Technet має цікаву статтю про використання магазину версій за адресою https://technet.microsoft.com/en-us/library/cc966545.aspx#EDAA

На цій сторінці MSDN згадується помилка 3967:

Коли tempdb не вистачає місця, Database Engine змушує магазини версій скорочуватися. Під час процесу скорочення найдовші операції, які ще не створили версії рядків, позначаються як жертви. Повідомлення 3967 генерується в журналі помилок для кожної транзакції жертви. Якщо транзакція позначена як жертва, вона більше не може читати версії рядків у сховищі версій. Коли він намагається прочитати версії рядків, повідомлення 3966 генерується і транзакція повертається назад. Якщо процес скорочення вдається, простір стає доступним у tempdb.

Жодна зі сторінок, на які я посилався вище, не містить явної поради щодо максимального розміру зберігання версій у tempdb, що призводить до того, що єдиним обмеженням є максимально налаштований розмір самого tempdb за вирахуванням того, що простір використовується в tempdb для інші об’єкти.

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