Разделение таблицы - PullRequest
1 голос
/ 18 мая 2010

Насколько выгодно использовать разбиение таблиц по сравнению с обычным подходом?

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

Ответы [ 2 ]

2 голосов
/ 25 мая 2010

Секционирование является чрезвычайно мощным, и на самом деле данные таблицы делятся на несколько небольших таблиц, а затем объединяются с помощью представления.

Например, «ipnumbers» можно разделить на таблицы «ipnumbers_1», «ipnumbers_2» и «ipnumbers_3», где первая таблица содержит ограничения, так что хранятся только ipnumbers от 0.0.0.0 до 50.0.0.0, и вторая таблица содержит ограничения, позволяющие хранить только диапазоны от 50.0.0.1 до 100.0.0.0 и т. д. Затем можно добавить представление, объединяющее разделенные таблицы в одну:

SELECT * FROM ipnumbers_1
UNION ALL
SELECT * FROM ipnumbers_2
UNION ALL
SELECT * FROM ipnumbers_3

Теперь, когда вы запрашиваете представление для определенного ipnumber:

SELECT * FROM ipnumberview WHERE ipno=60.0.0.1

.. Оптимизатор запросов к SQL-серверу будет знать, что нужно проверять только таблицу 'ipnumbers_2', и вы получите значительное улучшение скорости.

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

Веселись!

0 голосов
/ 18 мая 2010

Вы можете читать до конца

это и это

Несмотря на то, что статьи специфичны для mysql, и не следует делать слепых выводов относительно производительности, если вы работаете с другой СУБД, тем не менее, статьи прекрасно описывают основные концепции и идеи вместе с некоторыми действительными числами и примерами.

...