Токийский кабинет - медленные вставки после удара в 1 миллион
Я оцениваю Токио. Скорость вставки значительно замедляется после попадания в 1 миллион записей. Размер партии составляет 100 000 и делается в рамках транзакции. Я попытался установить xmsiz, но все равно бесполезно. Кто-нибудь сталкивался с этой проблемой в токийском кабинете?
подробности
Токийский кабинет - 1.4.3
Связки Perl - 1,23
ОС: Ubuntu 7.10 (VMWare Player поверх Windows XP)
3 ответа
Я ударил по кирпичной стене около 1 миллиона записей на каждый шард (шардинг на стороне клиента, ничего особенного). Я пробовал различные варианты ttserver, и они, казалось, не имели никакого значения, поэтому я посмотрел на сторону ядра и обнаружил, что
echo 80 > /proc/sys/vm/dirty_ratio
(предыдущее значение было 10) дало значительное улучшение - ниже приводится общий размер данных (по 8 осколков, каждый на своем узле), печатаемых каждую минуту:
всего: 14238792 записей, размер 27,5881 ГБ всего: 14263546 записей, размер 27,6415 ГБ всего: 14288997 записей, размер 27,6824 ГБ всего: 14309739 записей, размер 27,7144 ГБ всего: 14323563 записей, размер 27,7438 ГБ (здесь я изменил параметр dirty_ratio для всех шардов) всего: 14394007 записей, размер 27,8996 ГБ всего: 14486489 записей, размер 28.0758 ГБ всего: 14571409 записей, размер 28,2898 ГБ всего: 14663636 записей, размер 28,4929 ГБ всего: 14802109 записей, размер 28,7366 ГБ
Итак, вы можете видеть, что улучшение было порядка 7-8 раз. В тот момент размер базы данных составлял около 4,5 ГБ на узел (включая индексы), а узлы имели 8 ГБ ОЗУ (поэтому значение dirty_ratio, равное 10, означало, что ядро пыталось сохранить менее 800 МБ грязной).
Следующая вещь, которую я попробую, это ext2 (в настоящее время: ext3) и noatime, а также хранение всего на виртуальном диске (это, вероятно, будет тратить вдвое больше памяти, но, возможно, того стоит).
Я просто установил параметр кэширования, и теперь он значительно быстрее.
Я думаю, что изменение параметра bnum в функции dbtune также даст значительное улучшение скорости.