Быстро уменьшающаяся скорость вставки в CouchDB - PullRequest
2 голосов
/ 15 марта 2012

Я обрабатываю некоторые входные файлы и вставляю полученные записи в виде документов CouchDB.Я заметил, что скорость вставки уменьшается с ростом размера базы данных.

Что я делаю:

  1. Чтение данных из входного файла
  2. Обработка данныхдля получения структурированных документов
  3. Поместите документы в локальный буфер
  4. Как только в буфере будет 1000 документов, выполните массовую вставку couchdb
  5. Повторяйте, пока входные данные не будутполностью обработано

Здесь у вас есть журнал моего текущего прогона:

2012-03-15 10:15:58,716 - docs= 10000 rate=2282.38 entries/s
2012-03-15 10:16:46,748 - docs=100000 rate=1822.76 entries/s
2012-03-15 10:17:47,433 - docs=200000 rate=1592.01 entries/s
2012-03-15 10:18:48,566 - docs=300000 rate=1358.32 entries/s
2012-03-15 10:19:54,637 - docs=400000 rate=1572.55 entries/s
2012-03-15 10:21:01,690 - docs=500000 rate=1560.41 entries/s
2012-03-15 10:22:09,400 - docs=600000 rate=1556.22 entries/s
2012-03-15 10:23:16,153 - docs=700000 rate=1550.21 entries/s
2012-03-15 10:24:30,850 - docs=800000 rate=1393.61 entries/s
2012-03-15 10:25:46,099 - docs=900000 rate=1336.83 entries/s
2012-03-15 10:27:09,290 - docs=1000000 rate= 871.37 entries/s
2012-03-15 10:28:31,745 - docs=1100000 rate=1256.36 entries/s
2012-03-15 10:29:53,313 - docs=1200000 rate=1140.49 entries/s
2012-03-15 10:31:29,207 - docs=1300000 rate=1080.79 entries/s
2012-03-15 10:33:23,917 - docs=1400000 rate= 741.65 entries/s
2012-03-15 10:35:45,475 - docs=1500000 rate= 567.96 entries/s
2012-03-15 10:39:04,293 - docs=1600000 rate= 564.01 entries/s
2012-03-15 10:42:20,160 - docs=1700000 rate= 499.29 entries/s
2012-03-15 10:46:06,270 - docs=1800000 rate= 505.04 entries/s
2012-03-15 10:50:24,745 - docs=1900000 rate= 402.14 entries/s
2012-03-15 10:55:23,800 - docs=2000000 rate= 346.19 entries/s
2012-03-15 11:02:03,217 - docs=2100000 rate= 274.59 entries/s
2012-03-15 11:08:21,690 - docs=2200000 rate= 269.57 entries/s

«Скорость» показывает скорость вставки последней тысячи документов, которая, как вы можете видетьочень быстро деградирует.

  • Это нормально?
  • Можно ли что-то сделать, чтобы поддерживать высокую скорость вставки?
  • У вас есть опыт работы с большими базами данных CouchDB.
  • Советы, которыми вы хотели бы поделиться?

1 Ответ

4 голосов
/ 19 марта 2012

Высокая скорость вставки является аномальной, вызванной тем, что все аккуратно вписывается в ваш дисковый кеш. По мере увеличения размера вашей базы данных вам в конечном итоге потребуется прочитать данные с диска, чтобы обновить btree. Было бы лучше запустить тест вставки дольше, нанести на него график, и тогда вы увидите, что огромный всплеск спереди - это странность, а не нижняя, но более или менее постоянная скорость, которая следует за ним.

Из других тем, на которые вы задавали этот вопрос, еще одним важным фактором является то, что вы использовали полностью случайные uuid. Поскольку CouchDB основан на дереве b +, вставка полностью случайных идентификаторов является худшим из возможных сценариев для обновления. CouchDB поставляется с рядом алгоритмов uuid, по умолчанию, называемых «последовательными», возвращает значения с очень низкой вероятностью коллизий, которые все еще достаточно последовательны, чтобы обеспечить гораздо лучшую производительность вставки.

...