Почему тиран Токио замедляется экспоненциально даже после корректировки bnum?

Да, это включено по умолчанию. Можно отключить его при помощи-u опции на командной строке при вызове Python.

9
задан HenryL 27 June 2009 в 00:47
поделиться

4 ответа

Думаю, я взломал это, и я нигде больше не видел этого решения. В Linux обычно есть две причины, по которым Токио начинает замедляться. Давайте рассмотрим обычных виновников. Во-первых, если вы установите слишком низкое значение bnum, вы хотите, чтобы оно было как минимум равным половине количества элементов в хэше. (Желательно больше.) Во-вторых, вы хотите попытаться установить размер xmsiz, близкий к размеру массива корзин. Чтобы получить размер массива ведра, просто создайте пустую базу данных с правильным номером, и Токио инициализирует файл до соответствующего размера. (Например, bnum = 200000000 составляет примерно 1,5 ГБ для пустого db.)

Но теперь вы заметите, что он все еще замедляется, хотя и немного дальше. Мы обнаружили, что хитрость заключалась в том, чтобы отключить ведение журнала в файловой системе - по какой-то причине журналирование (на ext3) резко возрастает, когда размер вашего хеш-файла превышает 2–3 ГБ. (Мы поняли, что это были всплески ввода-вывода, не соответствующие изменениям файла на диске, наряду с всплесками процессора демона kjournald)

Для Linux просто размонтируйте и снова подключите свой раздел ext3 как ext2. Создайте свою базу данных и перемонтируйте как ext3. Когда журналирование было отключено, мы могли без проблем создавать базы данных размером 180 миллионов ключей.

8
ответ дан 4 December 2019 в 14:30
поделиться

Я начинаю работать над решением для добавления шардинга в токийский кабинет под названием Shardy.

http://github.com/cardmagic/shardy/tree/master

2
ответ дан 4 December 2019 в 14:30
поделиться

Хранилище ключевых значений Tokyo Cabinet действительно хорошо. Я думаю, что люди называют его медленным, потому что они используют табличное хранилище Tokyo Cabinet.

Если вы хотите хранить данные документов, используйте mongodb или другой движок nosql.

-1
ответ дан 4 December 2019 в 14:30
поделиться

Токио прекрасно масштабируется !! Но вы должны правильно настроить bnum и xmsiz. bnum должно быть от 0,025 до 4 раз больше, чем количество записей, которые вы планируете хранить. xmsiz должен соответствовать размеру BNUM. Также установите opts = l, если вы планируете хранить более 2 ГБ.

См. Сообщение Грега Фодора выше о получении значения для размера xmsiz. Обратите внимание, что при установке xmsiz значение указывается в байтах.

Наконец, если вы используете дисковый хэш, очень, очень, ОЧЕНЬ важно отключить ведение журнала в файловой системе, в которой хранятся данные токио. Это верно для Linux, Mac OSX и, возможно, Windows, хотя я еще не тестировал это там.

Если ведение журнала включено, вы увидите серьезное падение производительности по мере приближения к 30+ миллионам строк. Когда ведение журнала отключено, а другие параметры настроены соответствующим образом, Токио - отличный инструмент.

5
ответ дан 4 December 2019 в 14:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: