Бенчмаркинг Aria
Мы пока не успели должным образом провести бенчмаркинг Aria. Ниже приведено несколько обсуждений на форуме maria-discuss.
Aria используется для внутренних временных таблиц
По умолчанию Aria (вместо MyISAM) используется для внутренних временных таблиц, когда таблицы MEMORY переполняются на диск или таблицы MEMORY нельзя использовать (например, когда вы используете временные результаты с BLOB). В большинстве случаев Aria должна обеспечить лучшую производительность, чем MyISAM, но это не всегда так.
CREATE TABLE `t1` (`id` int(11) DEFAULT NULL, `tea` text) ENGINE=MyISAM DEFAULT CHARSET=latin1; insert t1 select rand()*2e8, repeat(rand(), rand()*64) from t1;
Повторите последнюю строку, пока не получите 2097152 строки.
Проведённые запросы
Q1: SELECT id, tea from t1 group by left(id,1) order by null; Q2: SELECT id, count(*), tea from t1 group by left(id,1) order by null; Q3: SELECT id, tea from t1 group by left(id,2) order by null; Q4: SELECT id, count(*), tea from t1 group by left(id,2) order by null; Q5: SELECT id, tea from t1 group by id % 100 order by null; Q6: SELECT id, count(*), tea from t1 group by id % 100 order by null;
Результаты (время в секундах, меньше — лучше):
| Тест | Aria 8K размер страницы | Aria 2K размер страницы | MyISAM |
|---|---|---|---|
| Q1 | 3.08 | 2.41 | 2.17 |
| Q2 | 6.24 | 5.21 | 12.89 |
| Q3 | 4.87 | 4.05 | 4.04 |
| Q4 | 8.20 | 7.04 | 15.14 |
| Q5 | 7.10 | 6.37 | 6.28 |
| Q6 | 10.38 | 9.09 | 17.00 |
Хорошая новость заключается в том, что для общих запросов group by, использующих агрегатные функции, использование Aria для внутренних временных таблиц обеспечивает ускорение примерно на 50%.
Обратите внимание, что запросы Q1, Q3 и Q5 не являются типичными запросами, так как они не включают агрегатные функции. В этом случае строки просто записываются во временные таблицы, и нет обновлений. Как только появятся агрегатные функции и обновления, новый формат строк в Aria обеспечит ускорение примерно на 50%.
В таблице также показано, как размер страницы (определяемый переменной системы aria_block_size) влияет на производительность. Причина различий заключается в том, что для вставки ключей требуется больше данных для перемещения в/из кэша страниц. (При чтении данных обычно страницы не копируются). Однако больший размер страницы позволяет использовать более длинные ключи и меньше уровней индексов, поэтому для больших наборов данных различия должны быть меньше. В будущем возможно оптимизировать Aria таким образом, чтобы при записи в индекс также не копировать страницы из кэша страниц, и тогда это различие должно исчезнуть.
По умолчанию размер страницы для Aria составляет 8К.
Если вы хотите использовать MariaDB с MyISAM для временных таблиц, не используйте параметр конфигурации '--with-aria-tmp-tables' при сборке MariaDB.
© 2023 MariaDB
Licensed under the Creative Commons Attribution 3.0 Unported License and the GNU Free Documentation License.
https://mariadb.com/kb/en/benchmarking-aria/