Почему мои базы данных CouchDB становятся настолько быстрыми?

Я задавался вопросом, почему моя база данных CouchDB росла до быстрого, таким образом, я записал немного сценария тестирования. Этот сценарий изменяет приписанный из документа 1200 CouchDB времена и берет размер базы данных после каждого изменения. После выполнения этих 1 200 записей ступают, база данных делает шаг уплотнения, и размер дб измеряется снова. В конце сценарий выводит размер баз данных на печать против чисел пересмотра. Сравнительное тестирование выполняется дважды:

  • В первый раз количество по умолчанию пересмотра документа (=1000) используется (_revs_limit).
  • Во второй раз номер изменений документа определяется к 1.

Первый показ производит следующий график

first run

Второе выполнение производит этот график

second run

Для меня это - вполне неожиданное поведение. На первом показе я ожидал бы линейный рост, поскольку каждое изменение производит новый пересмотр. Когда эти 1 000 изменений достигнуты, величина размера должна быть постоянной, поскольку более старые изменения отбрасываются. После уплотнения размер должен значительно упасть.

Во втором выполнении первый пересмотр должен привести к определенному размеру базы данных, который является, затем сохраняет во время выполняющих шагов записи, когда каждый новый пересмотр приводит к удалению предыдущего.

Я мог понять, существуют ли определенные издержки, должен был управлять изменениями, но это поведение роста кажется странным мне. Кто-либо может объяснить это явление или исправить мои предположения, которые приводят к неправильным ожиданиям?

16
задан Glorfindel 27 July 2019 в 21:11
поделиться

1 ответ

Во-первых, CouchDB сохраняет некоторую информацию даже для удаленных ревизий (только идентификатор и идентификатор ревизии), потому что это необходимо для целей репликации.

Во-вторых, вставка документов по одному неоптимальна из-за способа сохранения данных на диске (см. WikiPedia ), это может объяснить сверхлинейный рост первого графика.

4
ответ дан 30 November 2019 в 23:32
поделиться
Другие вопросы по тегам:

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