Наилучшая оптимизация определяется выполняемыми вами запросами, а не структурой ваших таблиц.
Если вы хотите использовать разбиение на разделы, этот может быть отличная оптимизация, если схема секционирования поддерживает запросы, которые необходимо оптимизировать. Например, вы можете разделить данные по штатам США, и это упростит запросы к данным для определенного штата. MySQL поддерживает «отсечение разделов», так что запрос будет выполняться только для определенного раздела, но только если в вашем запросе упоминается конкретное значение для столбца, который вы использовали в качестве ключа раздела.
Вы всегда можете проверить, эффективно ли удаление разделов, используя EXPLAIN PARTITIONS:
EXPLAIN PARTITIONS
SELECT ... FROM MyTable WHERE state = 'NY';
Это должно сообщить, что запрос использует один раздел.
Принимая во внимание, что если вам нужно выполнять запросы, например, по дате, то разделение не поможет; MySQL должен будет повторить запрос для всех 50 разделов.
EXPLAIN PARTITIONS
SELECT ... FROM MyTable WHERE date > '2013-05-01';
Это будет список всех разделов. Запрос всех разделов сопряжен с некоторыми накладными расходами, поэтому, если это ваш типичный запрос, вам, вероятно, следует использовать разбиение диапазона по дате.
Так что выбирайте ключ секции с учетом запросов.
Любой другой метод оптимизации следует аналогичному шаблону — он помогает некоторым запросам, возможно, в ущерб другим запросам. Поэтому убедитесь, что вы знаете, какие запросы вам нужно оптимизировать, прежде чем выбрать метод оптимизации.
Повторите ваш комментарий:
Конечно, есть много баз данных с 40 миллионами строк и более, но с хорошей производительностью. Они используют разные методы, в том числе (в произвольном порядке):
Моя точка зрения выше состоит в том, что вы не можете выбрать лучший метод оптимизации, пока не знаете, какие запросы нужно оптимизировать. Более того, лучший выбор может быть разным для разных запросов и даже может меняться со временем по мере данные или трафик растут. Оптимизация — это непрерывный процесс, потому что вы не узнаете, где находятся ваши узкие места, пока не увидите, как растут ваши данные и какой трафик запросов получает ваша база данных.
person
Bill Karwin
schedule
11.05.2013