Разделение таблицы
Насколько выгодно использовать разбиение таблиц по сравнению с обычным подходом?
Существует ли типовой пример или подробный сравнительный анализ, который может быть статистически (я знаю, что это слишком сильное слово, но было бы действительно полезно, если бы он был проиллюстрирован некоторыми цифрами), чтобы подчеркнуть полезность процесса.
2 ответа
Разбиение чрезвычайно мощное, и оно действительно делит данные таблиц на несколько небольших таблиц, а затем объединяет их с помощью представления.
Например, "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", и вы получите значительное улучшение скорости.
Кроме того, привязанные к схеме представления могут быть вставлены в (автоматически помещая данные в правильную таблицу назначения), а таблицы могут быть размещены на разных серверах (хотя это немного сложно настроить), и вы также можете добавить индексы к представлениям.
Повеселись!
Вы можете прочитать все до конца
Несмотря на то, что статьи специфичны для MySQL, и не следует принимать вслепую все выводы о производительности, если вы работаете с другой СУБД, тем не менее, эти статьи прекрасно описывают основные концепции и идеи вместе с некоторыми действительными числами и примерами.