﻿<?xml version="1.0" encoding="utf-8"?><rss version="2.0"><channel><title>Ayende @ Rahien</title><link>http://ayende.com</link><description>Ayende @ Rahien</description><copyright>Copyright (C) Ayende Rahien  2004 - 2021 (c) 2026</copyright><ttl>60</ttl><item><title>Ayende Rahien commented on RavenDB indexing optimizations, Step II&amp;ndash;Pre Fetching</title><description>Rafal,
We have several ways of doing that. We expose a number of performance counters, and we also provide /admin/stats and /databases/DB_NAME/stats endpoint that expose a lot of details about the internal structure of how ravendb works.</description><link>http://ayende.com/160290/ravendb-indexing-optimizations-step-ii-pre-fetching#comment9</link><guid>http://ayende.com/160290/ravendb-indexing-optimizations-step-ii-pre-fetching#comment9</guid><pubDate>Mon, 17 Dec 2012 10:37:25 GMT</pubDate></item><item><title>Rafal commented on RavenDB indexing optimizations, Step II&amp;ndash;Pre Fetching</title><description>Thanks for explanation, Ayende
In case anyone thought so, I'm not nitpicking, just being curious about how Raven manages its resources during periods of high load.

And another question: what is your idea for monitoring Raven's performance? I'm talking about automated, continuous collection of key performance data, like number of updates/sec, number of docs indexed/sec, cache size/hit ratio, indexing lag, number of sessions, transactions, Esent performance, memory, etc? I've been recently quite busy with monitoring application and server performance in Windows ecosystem and was wondering how Raven does these things, compared for example to MS SQL. And btw I have some pretty nice results with using NLog for collecting performance data, which might be useful for RavenDB too.</description><link>http://ayende.com/160290/ravendb-indexing-optimizations-step-ii-pre-fetching#comment8</link><guid>http://ayende.com/160290/ravendb-indexing-optimizations-step-ii-pre-fetching#comment8</guid><pubDate>Mon, 17 Dec 2012 10:27:38 GMT</pubDate></item><item><title>Ayende Rahien commented on RavenDB indexing optimizations, Step II&amp;ndash;Pre Fetching</title><description>Rafal,
Docs loaded for indexes are not actually cached.
And we have steps in place to avoid starvation, we move to higher and higher batch sizes, optimizing our IO throughput along the way.

And I am talking about things like adding an index, or what happens after a restart, etc.</description><link>http://ayende.com/160290/ravendb-indexing-optimizations-step-ii-pre-fetching#comment7</link><guid>http://ayende.com/160290/ravendb-indexing-optimizations-step-ii-pre-fetching#comment7</guid><pubDate>Mon, 17 Dec 2012 09:00:44 GMT</pubDate></item><item><title>Ayende Rahien commented on RavenDB indexing optimizations, Step II&amp;ndash;Pre Fetching</title><description>Rafal,
Consider what happens when you have existing data in the database and you add an index. You don't have all of the previously created documents in memory.
Also, indexing by most recently modified means that you run into a LOT of issues with just tracking what you indexed and what you didn't. Especially when you add the notion of updates _during_ indexing.
</description><link>http://ayende.com/160290/ravendb-indexing-optimizations-step-ii-pre-fetching#comment6</link><guid>http://ayende.com/160290/ravendb-indexing-optimizations-step-ii-pre-fetching#comment6</guid><pubDate>Mon, 17 Dec 2012 08:58:54 GMT</pubDate></item><item><title>Matt Warren commented on RavenDB indexing optimizations, Step II&amp;ndash;Pre Fetching</title><description>@Rafal

Take a look at the post in the queue, it's titled, so I think it'll answer some of your questions.

"RavenDB indexing optimizations, Step III–Skipping the disk altogether"</description><link>http://ayende.com/160290/ravendb-indexing-optimizations-step-ii-pre-fetching#comment5</link><guid>http://ayende.com/160290/ravendb-indexing-optimizations-step-ii-pre-fetching#comment5</guid><pubDate>Fri, 14 Dec 2012 09:43:11 GMT</pubDate></item><item><title>Rafal commented on RavenDB indexing optimizations, Step II&amp;ndash;Pre Fetching</title><description>oops, my response disappeared somehow. So, let's try again:
1. if your indexing cant keep up with the rate of modifications and there's starvation then it doesn't matter how you order documents for indexing - you won't be able to index them anyway and some will always 'starve'
2. But if you start with the wrong order and you have to load documents because they are not in the cache then you pay a double performance penalty - a cost of loading the data and even greater cost of throwing away already cached documents
3. Imho in normal operation you should never have to load documents to be indexed - they should always be already in the cache. So I'm not sure why Ayende is talking about the cost of loading documents - maybe this applies to batch processing or initial data load</description><link>http://ayende.com/160290/ravendb-indexing-optimizations-step-ii-pre-fetching#comment4</link><guid>http://ayende.com/160290/ravendb-indexing-optimizations-step-ii-pre-fetching#comment4</guid><pubDate>Thu, 13 Dec 2012 20:08:08 GMT</pubDate></item><item><title>Chris commented on RavenDB indexing optimizations, Step II&amp;ndash;Pre Fetching</title><description>@Rafal

You would have to also be mindful of "starvation" of the older documents. If you have a steady stream of new documents coming in, eventually you have to just say "enough guys, I've got to go back and get these other documents in."</description><link>http://ayende.com/160290/ravendb-indexing-optimizations-step-ii-pre-fetching#comment3</link><guid>http://ayende.com/160290/ravendb-indexing-optimizations-step-ii-pre-fetching#comment3</guid><pubDate>Thu, 13 Dec 2012 18:45:56 GMT</pubDate></item><item><title>Rafal commented on RavenDB indexing optimizations, Step II&amp;ndash;Pre Fetching</title><description>.... and the cache wouldn't be polluted with older documents loaded there just for indexing.</description><link>http://ayende.com/160290/ravendb-indexing-optimizations-step-ii-pre-fetching#comment2</link><guid>http://ayende.com/160290/ravendb-indexing-optimizations-step-ii-pre-fetching#comment2</guid><pubDate>Thu, 13 Dec 2012 14:04:43 GMT</pubDate></item><item><title>Rafal commented on RavenDB indexing optimizations, Step II&amp;ndash;Pre Fetching</title><description>I wonder why you have to load any data at all. If the docs have just been inserted or modified they should be in memory so you can index them without any loading. Maybe you should index the most recently modified document first and catch-up with the remaining ones later? This way the 'hottest' document would be indexed first, without any additional loading cost.</description><link>http://ayende.com/160290/ravendb-indexing-optimizations-step-ii-pre-fetching#comment1</link><guid>http://ayende.com/160290/ravendb-indexing-optimizations-step-ii-pre-fetching#comment1</guid><pubDate>Thu, 13 Dec 2012 13:35:12 GMT</pubDate></item></channel></rss>