Практическое правило, когда разбивать таблицы - PullRequest
5 голосов
/ 24 февраля 2011

Я видел много записей о таблицах разбиения, но не так много информации о том, когда вам следует создавать разделы.

Существует ли практическое правило, когда вам следует разбивать таблицы в SQL Server.

Спасибо

Ответы [ 2 ]

2 голосов
/ 01 марта 2011

Мои тесты показывают, что это зависит от загрузки запроса.

  • Если выполняемые вами запросы ВСЕГДА содержат фильтр в поле раздела, выигрыш в производительности практически мгновенный (например, 1000 записей в таблице уже полезны)
  • Если запросы НЕ всегда содержат фильтр в поле раздела, вам действительно нужно сравнить его с хорошим образцом загрузки запроса, прежде чем принимать решение.

Вы также должны учитывать систему разделов, которую вы используете. если вы используете «статические» разделы, то их создание не принесет большого вреда. Когда вы используете систему «скользящего окна», вам необходимо учитывать накладные расходы на создание и объединение разделов. (что может занять много времени на больших столах)

1 голос
/ 01 марта 2011

@ Пост Филипа - отличное тематическое руководство.Когда вы выполняете свои онтологии и оцениваете, как ваше приложение будет использоваться, то есть как ваши пользователи будут взаимодействовать с приложением и как это приведет к доступу к базе данных, вы должны иметь четкое представление о том, какие запросы будут выполняться и какскоро будут расти определенные таблицы.Если вы уверены в этом, то вам следует немедленно разбить таблицы на части, чтобы избежать каких-либо проблем с обслуживанием.

Но если вы пытаетесь решить, следует ли разбивать заполненные таблицы, или вам нравится выполнять ленивое разбиение, как я,хороший маленький слепок из документации PostgreSQL:

Точная точка, в которой таблица получит выгоду от разбиения, зависит от приложения, хотя практическое правило заключается в том, что размер таблицы должен превышать физическую памятьсервера базы данных. [источник]

...