Разделение таблиц SQL - PullRequest
       6

Разделение таблиц SQL

0 голосов
/ 19 августа 2011

Я работаю над плохо спроектированной базой данных в MS SQL 2008. В ней есть таблица с «60 000 000» записей, и она увеличивается примерно на «4 000 000» записей в неделю.

Так что, если я использую "секционирование таблиц SQL 2008", это поможет? Если это так, предложите следующие шаги.

Ответы [ 2 ]

2 голосов
/ 31 августа 2011

Помогите с чем ?Вы не объяснили проблему.Некоторые запросы медленные?У вас есть проблемы с ETL?У вас есть проблемы с удалением устаревших данных?У вас есть проблемы с обслуживанием и резервным копированием?

Как правило, разбиение таблиц - это функция для облегчения ETL с помощью быстрых операций переключения разделов и для администрирования местоположения данных (распределение таблиц по нескольким файловым группам и использование функций файловых групп, таких как piece-восстановление еды ).

Разделение одной области не помогает повысить производительность.Проблемы с производительностью решаются с помощью индексов, и best , на который можно надеяться, - это производительность на уровне с неразделенным регистром.Существует неправильное представление о том, что удаление разделов поможет повысить производительность, см. Также Введение в секционированные таблицы .Чего обычно не хватает, так это того, что для повышения производительности гораздо лучшая альтернатива - просто переместить ключ разделения в качестве крайнего левого ключа в кластеризованном ключе, что приведет к сканированию диапазона с, в худшем случае, по крайней мере на уровне, если нетлучше, чем производительность по сравнению с устранением раздела.Удаление разделов помогает запросам, которые должны обрабатывать многораздельные таблицы , когда требуется разделение по другим причинам (ETL, быстрое удаление, управление файловой группой).

2 голосов
/ 31 августа 2011

Пара моментов, которые вам нужно проверить, прежде чем перейти к стратегии разделения таблиц

  • Всего записей "60 000 000" записей, и оно увеличивается примерно на "4 000 000" записей в неделю
  • Вопрос -Можете ли вы Архивировать Удалить любые данные на еженедельной основе.Причина в том, что если вы используете запросы для OLTP или OLAP, вы можете подумать о том, чтобы иметь другой компьютер, на котором данные реплицируются и сохраняются
  • Знаете ли вы статистику того, как выглядят запросы, используемые индексы
  • Цель разделения заключается в уменьшении количества разделений для поиска необходимых данных.Пример - предположим, что ваш запрос, где фильтр предложений основан на номере месяца.Тогда в этом случае, если вы выполняете разделение каждый месяц, тогда, когда у вас есть запрос на месяц = ​​5, тогда будет запрашиваться только этот конкретный раздел
  • Вы должны предоставить немного больше информации о схеме, шаблонах использования запроса, индексы
...