2012-02-10 2 views
3

У меня есть некоторые основные виды и некоторые виды карты/сокращения с логикой. Ничего сложного. Не слишком много документов. Я пробовал с документами 250k, 75k и 10k. Похоже, я всегда жду индексацию взглядов.В CouchDB существуют ли способы повысить производительность процесса просмотра View?

Помогает ли более эффективный код в представлении? Я предполагаю, что он в основном обрабатывает представление на всех уровнях агрегации. Поэтому там должно быть некоторое улучшение.

Имеет ли emit() - меньше данных помощь? emit (doc.id, doc) против указания меньшего количества полей?

У более или менее сложных клавиш влияют на просмотр индексации?

Или это все о памяти, процессорных ядрах и скорости процессора?

Там должна быть какая-то документация, но я не могу найти ничего, ссылаясь на способы повышения производительности.

ответ

1

Я бы углубился в функцию уменьшения. Попробуйте использовать встроенные функции Erlang, такие как _sum, _count, вместо написания Javascript.

Сложные виды могут занимать часы и более, это нормально.

Возможно, вы можете разместить такую ​​не слишком сложную карту/уменьшить.

И не забывайте: индексирование все Документы выполняются только один раз после смены вида (или нажатия целой группы новых документов). Последующие новые документы индексируются постепенно.

Используйте «&stale=ok», чтобы мгновенно получить «старые» данные, поэтому вам не нужно ждать. (Но обратите внимание: вам всегда нужно вызывать представление без stale=ok хотя бы один раз, чтобы вызвать процесс индексирования). Или лучше: используйте stale=update_after.

+0

Решение, похоже, развивается на меньшем наборе данных, а затем нажимает couchapp на больший набор данных после того, как мы удовлетворены тем, что мы пытаемся работать, как ожидалось. (когда скорость итерации не важна). Я посмотрю в любом месте, где мы, возможно, слишком усложнили сокращение. спасибо. – user791770

0

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

+0

Когда вы говорите, что излучаете меньшими партиями, будет уменьшено общее время индексации? Или это просто приводит меня к некоторым данным быстрее, но общее время все еще общее время? – user791770

+0

Время - время; вы не можете изменить законы физики –

2

Код, который вы пишете во мнениях, больше похож на CREATE INDEX, чем SELECT. Должно быть неуместно, сколько времени потребуется, пока сборка изображений не отстает от скорости изменения документа. Построение взгляда - это потопленная (разовая) стоимость.

Когда запрашивает вид, который всегда является бинарным деревом, которое работает против статического набора данных в логарифмическом времени. Обычно это зависит от производительности людей (в производстве.)

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

+0

Да, время для индекса должно быть неактуальным. И по большей части это так. Кроме того, во время разработки, когда мы пытаемся быстро итеративно. Мое решение состоит в том, чтобы иметь отдельный набор данных разработки. Ничего революционного нет. Мне нравится ваш образ мышления об этом как CREATE INDEX, а не SELECT. Спасибо. – user791770

+1

Это ОЧЕНЬ ценное примечание. CouchDB - все о INDEXES. – sinm

-1

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

Couchappy - это бесплатный высокопроизводительный Couchdb hosting, который позволяет вам использовать последние версии Apache CouchDB поверх дисков SSD.

+0

SSD действительно имеют тихую высокую задержку по сравнению с основной памятью, которая, в свою очередь, имеет высокую задержку по сравнению с кэшами на кристалле. До тех пор, пока все пути передачи данных между процессором и SSD не будут иметь нулевые состояния ожидания, вы не можете назвать его нулевой задержкой. – Mark

Смежные вопросы