MySQL Partitioning: повышение производительности для многораздельных таблиц. Зачем?
Я реализовал тест, который проверяет постоянство операций чтения и записи в 10 различных таблицах.
У меня есть 10 потоков Java, каждый выполняет запросы только к своей таблице:
Потоки 1 выполняют операции с таблицей 1, Потоки 2 выполняют операции с таблицей 2,
Я сравнил производительность параллельного выполнения этих потоков при выполнении нескольких операций чтения в однораздельной таблице [1-10] по сравнению с производительностью одного и того же теста при разделении каждого TableX на 9 равных разделов (каждый представляет неделю измерений, всего 9 недель). данных).
Я получил интересные и не объяснимые результаты:
Производительность одной операции для одного потока в два раза выше для однораздельной таблицы, тогда как общее время всех операций для всех потоков в 5 раз быстрее для многораздельных таблиц.
Я проверил журналы и заметил, что секционированные таблицы позволяют параллельно выполнять больше операций, и, хотя одна операция длиннее, несколько операций для разных потоков выполняются параллельно и, следовательно, завершаются быстрее.
Я не понимаю, почему это происходит, так как каждый поток выполняет операции только на своей собственной таблице???
Я использую только движок MyISAM для всех своих таблиц и разделов.
1 ответ
Ознакомьтесь с данной статьей о том, как разделы помогают улучшить производительность сервера
Как решить, следует ли использовать разбиение таблицы
а также почти тот же вопрос, на который ответил эксперт