Щоб досягти максимальної продуктивності БД, які команди слід виконати після завантаження великої кількості даних у SQL Server 2008 через SSIS


11

Я написав пакет SSIS для завантаження тестових даних у порожню базу даних. Деякі таблиці дуже великі (~ 700 млн. Рядків). Після завершення пакету SSIS є якісь команди, які я повинен запустити (як учень DBA!), Щоб досягти максимальної продуктивності бази даних?

Наприклад, я виконав, EXEC sp_updatestatsале він повідомив, що не потрібно оновлювати індекси.

Чи є список дій, які потрібно зробити після завантаження великих обсягів даних або SQL Server 2008 просто подбає про все це для вас?

Відповіді:


8

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

  • Відкиньте всі індекси NC перед завантаженням.
  • Опублікуйте навантаження, додайте індекси NC для кожної таблиці послідовно, тобто не додайте індекс до TableA, потім TableB, а потім назад до TableA. Це не впливає на фрагментацію, але це може покращити час, необхідний для додавання індексів для дуже великих наборів даних (зменшує розміщення буферного пулу).
  • Якщо ви можете вставити дані в таблицю в порядку кластерного індексу, залиште кластерний індекс на місці. Якщо ви не можете, скидайте дані в купу і перебудовуйте в кластерне завантаження індексу.

Замість того, щоб скопіювати та вставити, я наведу вас до дуже вичерпного списку посилань на оптимізацію ETL @Marian, складеного у відповіді на запитання, яке я задав на BCP . Багато з них будуть однаково застосовні до вашого сценарію.


2
Цікаво, що за посиланням на відео із SQLCAT та SSIS їх виявлення ніколи не було крапкового індексу NC. Здогадайтесь, це ще один випадок "це залежить"
billinkc

2
@billinkc Це питання стосується не додаткового навантаження, а не порожньої бази даних? Так чи інакше, тестування SQLCAT, як правило, включає клас обладнання, яке рідко зустрічається в типових організаціях.
Марк Сторі-Сміт

5

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

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

По мірі додавання даних індекси можуть бути фрагментованими. Перебудова або реорганізація допомагає зменшити це, що може призвести до покращення продуктивності при фактичному доступі до ваших даних.


4
Згідно з індексами, в одному з відеозаписів про SSIS від SQLCAT вони також пропонують головне правило, що якщо зростання ваших даних становить> 100% і є один NCI, скиньте і відтворіть їх. Якщо це більше 10% і є 2+ NCI, падіння та відтворення дадуть кращі показники.
billinkc

2
Просто для уточнення коментаря Білла - я думаю, що він говорить про те, що час упустити-створити, вони означають падіння індексу, завантажують ваші дані, потім відтворюють свій індекс. Замість того, щоб залишити індекс (и) там під час завантаження та відновити після. Я думаю, що так чи інакше :-) і так, чудово, я поставив +1 цьому коментарю.
Майк Уолш
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.