Потрібно вирішити питання очищення Frozen Ghost SQL Server


15

У мене є кілька таблиць із кількістю рядків між 5М та 1.5G

У кожній таблиці є поле BLOB, розмір якого змінюється від 100 байт до 30 Мбайт і яке зберігається як "великі типи значень поза рядом" = УВІМКНЕНО

Таблиці зберігаються в різних групах файлів з 3-4 файлами кожен на різному диску @ різні LUNs @ дуже швидкий SAN

Щодня ці таблиці виростають на 5-100 Гбіт розміром і 600 к - 1,5 М рядків

Через певний проміжок часу , який коливається від 2 тижнів до 6 місяців, деякі рядки видаляються або переміщуються в архівну БД, тому - у робочих таблицях, старших 6 місяців, немає рядків.

Поточна конфігурація сервера:

  • Двигуном SQL-сервера є 2008 R2 SP1 Enterprise @ 24 ядра, 64 Гб оперативної пам’яті
  • SQL Server працює з додатковими прапорами запуску:

-T 3640; (Виключає надсилання DONE_IN_PROC повідомлень клієнтові для кожного оператора у збереженій процедурі. Це схоже на налаштування сеансу SET NOCOUNT ON, але якщо встановлено як прапор сліду, кожен сеанс клієнта обробляється таким чином)

-T 1118; (Перемикає розподіли в tempDB від 1pg за один раз (для перших 8 сторінок) в одній мірі.)

-T 2301; (Дозволяє розширені оптимізації, характерні для запитів підтримки прийняття рішень. Цей параметр застосовується для обробки підтримки великих рішень наборів даних)

-T 1117; (Зростає всі файли даних одночасно, інакше це відбувається по черзі.)

-Е; (Збільшує кількість розширень, що виділяються для кожного файлу у групі файлів. Ця опція може бути корисною для програм сховища даних, у яких обмежена кількість користувачів працює з індексом або скануванням даних)

-T 834; (Викликає SQL Server використовувати виділення на великих сторінках Windows для пам'яті, виділеної для буферного пулу, http://msdn2.microsoft.com/en-us/library/aa366720.aspx , http://support.microsoft. com / kb / 920093 )

  • SQL Server використовує великі розширення сторінок
  • SQL Server використовує швидку опцію ініціалізації файлів
  • AUTOSHRINK ВИМКНЕНО для всіх баз даних

Проблема полягає в тому, що, починаючи з деякого часу роботи сервера (від пари днів до місяців) GHOST CLEANUPпроцес відмовляється працювати з примусовим очищенням і просто виконує свою звичайну роботу - очищає кілька сторінок за кілька секунд ( which is seen thru Extended Events), що не підходить , оскільки він не в змозі очистити всі видалені рядки

Проблема зберігається з часів SQL Server 2005 RTM Enterprise

Як мене намагалися вирішити:

  • Спробував змусити операції SCAN на кластерних індексах таблиць
  • Спробував змусити операції SCAN, які включали весь вміст стовпця BLOB на кластерних індексах таблиць
  • система sp_clean_db_free_space & sp_clean_db_file_free_space
  • вручну очищення dbcc (@dbid, @fileid, @page) для всіх файлів та сторінок у БД
  • відновлення та реорганізація кластерних індексів
  • відтворення бази даних
  • DBCC FORCEGHOSTCLEANUP

  • Коли я запускаю запит:

    select * 
    from sys.dm_db_index_physical_stats(db_id(), object_id('ProblemTable'), 1, 0, 'detailed')

    Я бачу мільйони і десятки мільйонів записів привидів, але лише для типу одиниці виділення LOB_DATA

Єдині речі, які допомагають:

  • зупинка сервера за допомогою команди SHUTDOWN або перезавантаження всього хоста - це допомагає після перезапуску процесу GHOST CLEANUP запустити кілька годин і фактично очистити всі прибрані записи
  • DBCC SHRINKFILE з опцією EMPTYFILE - переміщення всіх даних з одного файлу в інший або новостворені файли очищує записи привидів лише в цьому файлі - проблема полягає в тому, що я дуже ненавиджу операції скорочення. І це займе 3-4 дні для одного файлу

питання - чи існує будь-який програмний (бажаний) або спосіб обслуговування, щоб змусити GHOST CLEANUP взагалі без простоїв сервера, оскільки простої сервера коштують занадто багато, навіть неприйнятно - його від тисяч до десятків тисяч доларів на годину

Проблеми, які були помічені, мої тут:

І саме те саме тут:

Відповіді:


12

Нарешті, MS визнала проблему помилкою: http://support.microsoft.com/kb/2622823

Коротко: це закріплено в

  • Sql Server 2008 SP3 CU4
  • Sql Server 2008 R2 CU10
  • Sql Server 2008 R2 SP1 CU4

У сервісі Sql Server 2012 з пакетом оновлень 1 (SP1) я не відчуваю проблеми вже більше року виконання.


3

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

Ви намагалися дозволити закрити базу даних, а потім перенести їх в Інтернет? Це призведе до запуску відновлення після аварії та може призвести до очищення привидів.

Ви часто пишете до столу? Під часто маю на увазі весь час?

Щодо MSKB 932115 Ви бачите, що записи привидів залишаються лише у всіх файлах, чи це очищення першого файлу у групі файлів?

Навіщо використовувати -T1117 та миттєвий файл init?


1. Я обов'язково перейду на підтримку MS. 2. Якщо я закриваю БД, він збільшується приблизно 10-30 хв., Прокатуючи назад і вперед, що неприпустимо. 3. GC IS запущений, але він не обробляє видалені записи поза рядками LOB. 4. Запис у таблиці, що виконуються постійно, залежно від часу доби, від 20 до 600 записує в секунду і весь час. 5. Перший файл БД не використовується - він не має великих таблиць і використовується лише як системне сховище, тому - просто не існує записів привидів.
Олег Док

з -T1117 я просто хочу розподілити все навантаження між декількома файлами, натомість, коли від файлової групи залишився лише один файл, де все ще існує вільний простір - він починає сповільнюватись в LATCHes PFS, миттєвий файл init мінімізує час зростання файлів, тому що приріст встановлюється на 10-50 Гбіт на оборот. Я не можу просто встановити файли настільки великими, як я можу, тому що це зовсім непередбачувано - які файли отримають свої дані сьогодні та в якому обсязі. Простіше запропонувати адміністраторам SAN додати більше місця, ніж передбачити, кому я повинен додати простір.
Олег Док
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.