Я задавался вопросом, почему моя база данных CouchDB росла до быстрого, таким образом, я записал немного сценария тестирования. Этот сценарий изменяет приписанный из документа 1200 CouchDB времена и берет размер базы данных после каждого изменения. После выполнения этих 1 200 записей ступают, база данных делает шаг уплотнения, и размер дб измеряется снова. В конце сценарий выводит размер баз данных на печать против чисел пересмотра. Сравнительное тестирование выполняется дважды:
Первый показ производит следующий график
Второе выполнение производит этот график
Для меня это - вполне неожиданное поведение. На первом показе я ожидал бы линейный рост, поскольку каждое изменение производит новый пересмотр. Когда эти 1 000 изменений достигнуты, величина размера должна быть постоянной, поскольку более старые изменения отбрасываются. После уплотнения размер должен значительно упасть.
Во втором выполнении первый пересмотр должен привести к определенному размеру базы данных, который является, затем сохраняет во время выполняющих шагов записи, когда каждый новый пересмотр приводит к удалению предыдущего.
Я мог понять, существуют ли определенные издержки, должен был управлять изменениями, но это поведение роста кажется странным мне. Кто-либо может объяснить это явление или исправить мои предположения, которые приводят к неправильным ожиданиям?
Во-первых, CouchDB сохраняет некоторую информацию даже для удаленных ревизий (только идентификатор и идентификатор ревизии), потому что это необходимо для целей репликации.
Во-вторых, вставка документов по одному неоптимальна из-за способа сохранения данных на диске (см. WikiPedia ), это может объяснить сверхлинейный рост первого графика.