<?xml version="1.0" encoding="koi8-r"?>
<rss version="0.91">
<channel>
    <title>OpenForum RSS: Результаты измерения производительности BerkeleyDB</title>
    <link>https://www.opennet.me/openforum/vsluhforumID3/52314.html</link>
    <description>&quot;BerkeleyDB btree vs hash table benchmark (http://www.ioremap.net/node/213)&quot; - результаты измерения производительности реализаци btree структур и хэшей в BerkeleyDB, в сравнении с организацией хранения данных в файлах в ФС ext3 (ключ к хэшу = имя файла). Интересно, что хэш в BerkeleyDB оказался  быстрее btree, который в свою очередь обогнал метод хранения в файлах.&lt;br&gt;&lt;br&gt;&lt;br&gt;Результаты тестов заставляют задуматься о целесообразности замены файлового хранилища, системой подобной memcacheDB (http://memcachedb.org/) (хранение данных в  BerkeleyDB базе с использование совместимого с memcached протокола).&lt;br&gt;&lt;br&gt;&lt;br&gt;URL: http://www.ioremap.net/node/213&lt;br&gt;Новость: http://www.opennet.ru/opennews/art.shtml?num=21234&lt;br&gt;</description>

<item>
    <title>Результаты измерения производительности BerkeleyDB (geekkoo)</title>
    <link>https://www.opennet.me/openforum/vsluhforumID3/52314.html#37</link>
    <pubDate>Wed, 15 Apr 2009 10:52:51 GMT</pubDate>
    <description>&amp;gt;&amp;gt;только надеятся, что для случайного ключа в среднем скорость будет вести &lt;br&gt;&amp;gt;&amp;gt;себя как в идеальном случае,&lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt;Все это конечно замечательно, но для дерева то время поиска (включая и &lt;br&gt;&amp;gt;среднее) будет логарифмически расти с ростом числа записей в бд.А у &lt;br&gt;&amp;gt;хеша это время в среднем не растет.На бд с большим числом &lt;br&gt;&amp;gt;записей хэш должен выиграть.Как минимум при вытаскивании пар ключ-значение.При том то &lt;br&gt;&amp;gt;что на конкретном ключе может быть и несколько медленнее чем в &lt;br&gt;&amp;gt;среднем обычно мало кого волнует. &lt;br&gt;&lt;br&gt;Ну, дык я и не спорю. Хэш рано или поздно на больших объемах победит деревья, но пока до этого дойдет - замотаешься пыль глотать.&lt;br&gt;&lt;br&gt;Хотя практика сравнения среднего времени в смысле статистики с гарантированным worst case - кажется мне несколько порочной ...&lt;br&gt;</description>
</item>

<item>
    <title>Результаты измерения производительности BerkeleyDB (parad)</title>
    <link>https://www.opennet.me/openforum/vsluhforumID3/52314.html#35</link>
    <pubDate>Wed, 15 Apr 2009 07:18:05 GMT</pubDate>
    <description>&amp;gt; Если хеш автоматически не меняет свой размер, то с ростом количества записей скорость доступа будет уменьшаться как O(количества ключей / количество ячеек в хеш-таблице), что по сути есть O(n).&lt;br&gt;&lt;br&gt;скорость доступа всегда O(1), даже если при возникновении коллизии мы проведем повторную операцию хеширования получим O(2) = O(1). есть методы заполнения позволяющие иметь кпд хеша 95&#037; при максимум 3х вычеслениях хеша на операцию записи/чтения, что O(3) = O(1).&lt;br&gt;&lt;br&gt;тот метод, который возможно, вы имеете в виду (перебор в цикле всех последующих ячеек до нахождения свободной) описывается для облегчения понимания в начале каждого учебника, но никак не может быть использован в качестве рабочего варианта, т.к. сводит быстрый доступ по индексу к банальнобу перебору всех значений.&lt;br&gt;&lt;br&gt;&amp;gt; Хеш-таблица подходит для случаев, когда количество ключей сравнимо с размером таблицы, т.е. максимум в несколько раз больше.&lt;br&gt;&lt;br&gt;Читайте выше и дальше - это тоже самое начало любого учебника, есть методы быстрого заполнения хеша на 95&#037;.&lt;br&gt;</description>
</item>

<item>
    <title>Результаты измерения производительности BerkeleyDB (parad)</title>
    <link>https://www.opennet.me/openforum/vsluhforumID3/52314.html#34</link>
    <pubDate>Wed, 15 Apr 2009 07:02:43 GMT</pubDate>
    <description>&amp;gt;Таки теперь выясняется, что блокировать всё уже не надо? &lt;br&gt;&lt;br&gt;опять непонятно из какого пальца ты такое умозаключение высосал: выше я описал что постраничная блокировка - это бессмысленное действие на очень больших бд и так или иначе глобальная блокировка будет присутствовать всегда - от этого не уйдешь.&lt;br&gt;&lt;br&gt;&amp;gt;Забавная уверенность, учитывая, что хэш не дает гарантий по времени, и можно &lt;br&gt;&amp;gt;только надеятся, что для случайного ключа в среднем скорость будет вести &lt;br&gt;&amp;gt;себя как в идеальном случае, когда хэширующая функция подобрана под заранее &lt;br&gt;&amp;gt;известный набор ключей.&lt;br&gt;&lt;br&gt;тут вообще тяжело догодаться что ты хочешь сказать. функция хеширования не занимается подгонкой под определенный набор, она вычесляет число(хеш), на основе которого высчитывается индекс. например, если в пямяти умещяется массив из 1млн экземпляров, а хеш-число - 64битное, то расчет индекса будет: i = 1млн * ( hashfunc( data ) / max( uint_64 )), где max( uint_64 ) = 0xffffffffffff, а i - индекс массива mas&#091;i&#093; куда/откуда мы должны положить/извлеч данн</description>
</item>

<item>
    <title>Результаты измерения производительности BerkeleyDB (Аноним)</title>
    <link>https://www.opennet.me/openforum/vsluhforumID3/52314.html#33</link>
    <pubDate>Wed, 15 Apr 2009 06:59:02 GMT</pubDate>
    <description>&amp;gt;&amp;gt;только надеятся, что для случайного ключа в среднем скорость будет вести &lt;br&gt;&amp;gt;&amp;gt;себя как в идеальном случае,&lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt;Все это конечно замечательно, но для дерева то время поиска (включая и &lt;br&gt;&amp;gt;среднее) будет логарифмически расти с ростом числа записей в бд.А у &lt;br&gt;&amp;gt;хеша это время в среднем не растет.На бд с большим числом &lt;br&gt;&amp;gt;записей хэш должен выиграть.Как минимум при вытаскивании пар ключ-значение.При том то &lt;br&gt;&amp;gt;что на конкретном ключе может быть и несколько медленнее чем в &lt;br&gt;&amp;gt;среднем обычно мало кого волнует. &lt;br&gt;&lt;br&gt;Если хеш автоматически не меняет свой размер, то с ростом количества записей скорость доступа будет уменьшаться как O(количества ключей / количество ячеек в хеш-таблице), что по сути есть O(n).&lt;br&gt;&lt;br&gt;Хеш-таблица подходит для случаев, когда количество ключей сравнимо с размером таблицы, т.е. максимум в несколько раз больше.&lt;br&gt;&lt;br&gt;Как устроена таблица (в частности, есть ли в ней автоматическое изменение размера) в BDB, не известно.&lt;br&gt;</description>
</item>

<item>
    <title>Результаты измерения производительности BerkeleyDB (User294)</title>
    <link>https://www.opennet.me/openforum/vsluhforumID3/52314.html#32</link>
    <pubDate>Wed, 15 Apr 2009 06:40:55 GMT</pubDate>
    <description>&amp;gt;только надеятся, что для случайного ключа в среднем скорость будет вести &lt;br&gt;&amp;gt;себя как в идеальном случае,&lt;br&gt;&lt;br&gt;Все это конечно замечательно, но для дерева то время поиска (включая и среднее) будет логарифмически расти с ростом числа записей в бд.А у хеша это время в среднем не растет.На бд с большим числом записей хэш должен выиграть.Как минимум при вытаскивании пар ключ-значение.При том то что на конкретном ключе может быть и несколько медленнее чем в среднем обычно мало кого волнует. &lt;br&gt;</description>
</item>

<item>
    <title>Результаты измерения производительности BerkeleyDB (geekkoo)</title>
    <link>https://www.opennet.me/openforum/vsluhforumID3/52314.html#31</link>
    <pubDate>Wed, 15 Apr 2009 05:06:33 GMT</pubDate>
    <description>&amp;gt; перестать перефразировать мои слова. + мозг подключять &lt;br&gt;&amp;gt;при чтении документации. &lt;br&gt;&lt;br&gt;&quot;в случае с хешем, надо блокировать весь хеш&quot;(svn)&lt;br&gt;&quot;В случае с деревом - таже история. Нужно заблокировать все.&quot;(parad)&lt;br&gt;Таки теперь выясняется, что блокировать всё уже не надо?&lt;br&gt;&lt;br&gt;&amp;gt;Хеш будет сливать только при малом размере БД (очень малом). &lt;br&gt;&amp;gt;При всех остальных, даже если он целиком будет храниться на диске &lt;br&gt;&amp;gt;- он будет впереди. &lt;br&gt;&lt;br&gt;Забавная уверенность, учитывая, что хэш не дает гарантий по времени, и можно только надеятся, что для случайного ключа в среднем скорость будет вести себя как в идеальном случае, когда хэширующая функция подобрана под заранее известный набор ключей.&lt;br&gt;</description>
</item>

<item>
    <title>Результаты измерения производительности BerkeleyDB (Guest)</title>
    <link>https://www.opennet.me/openforum/vsluhforumID3/52314.html#29</link>
    <pubDate>Wed, 15 Apr 2009 00:35:05 GMT</pubDate>
    <description>&amp;gt;не хочется даже ничего спрашивать, боюсь услышать ответ&lt;br&gt;&lt;br&gt;Не сомневаюсь. А я имел в виду всего навсего lock cmpxchg (для x86). Не думал что это настолько неочевидно.&lt;br&gt;&lt;br&gt;&amp;gt;ты взял sizeof(phtrad_mutex_t)? флаг в руки. этот тип дефайнет указатель на структуру &lt;br&gt;&lt;br&gt;Нет, я взял размер регистра. От реализации тредов тут вообще ничего не зависит, спинлоки всегда будут эффективней ядерных мьютексов (разумеется речь идет про SMP).&lt;br&gt;&lt;br&gt;&amp;gt;- эт раз. слово - это 2байта, указатель - минимум 4байта &lt;br&gt;&lt;br&gt;Слово это размер регистра общего назначния. Когда пишешь под что-то кроме x86, от ереси типа слово=2байта быстро отвыкаешь.&lt;br&gt;&lt;br&gt;&amp;gt;- это какбы два. три - не придумывай херню про байт,&lt;br&gt;&amp;gt;потомучто как минимум у тебя будет 256 мьютексов + это нужно &lt;br&gt;&amp;gt;сильно обидется чтобы так начать фантазировать.&lt;br&gt;&lt;br&gt;Я имел в виду cmpxchg XXX, _byte ptr_ &#091;YYY&#093;&lt;br&gt;Просто не уверен насчет ее производителньости и сайдэффектов, к тому же такие мьютексы придется хранить сбоку из-за выравнивания.&lt;br&gt;&lt;br&gt;&amp;gt;четыре - хеш не хранит смещение, хеш может не хранить и само</description>
</item>

<item>
    <title>Результаты измерения производительности BerkeleyDB (parad)</title>
    <link>https://www.opennet.me/openforum/vsluhforumID3/52314.html#28</link>
    <pubDate>Tue, 14 Apr 2009 20:51:21 GMT</pubDate>
    <description>&amp;gt;угу, а мьютекс реализовываается сам на себе, надо думать? я про железные &lt;br&gt;&amp;gt;атомарные операции. &lt;br&gt;&lt;br&gt;не хочется даже ничего спрашивать, боюсь услышать ответ.&lt;br&gt;&lt;br&gt;&amp;gt;совсем нет. теоретический потолок - в 2 раза больше памяти (пустой хэш, смещение=слово, мьютекс=слово). На практике (&amp;gt; 50&#037; заполнение) - &amp;lt;1.5 раза. Не уверен, но можно под мьютексы и байты использовать.&lt;br&gt;&lt;br&gt;ты взял sizeof(phtrad_mutex_t)? флаг в руки. этот тип дефайнет указатель на структуру - эт раз. слово - это 2байта, указатель - минимум 4байта - это какбы два. три - не придумывай херню про байт, потомучто как минимум у тебя будет 256 мьютексов + это нужно сильно обидется чтобы так начать фантазировать. (извини если где-то, возможно, резко высказался, - давай будем объективными). четыре - хеш не хранит смещение, хеш может не хранить и само вычесленное хеш-число - это массив данных, занесенных в ячейку на основе вычесленного хеш-числа, указавшего номер ячейки для размещения + несколько методов борьбы с коллизиями, поэтому размер ячейки хеша может быть</description>
</item>

<item>
    <title>Результаты измерения производительности BerkeleyDB (Guest)</title>
    <link>https://www.opennet.me/openforum/vsluhforumID3/52314.html#27</link>
    <pubDate>Tue, 14 Apr 2009 19:07:00 GMT</pubDate>
    <description>&amp;gt; на смп за атомарностью следит ядро&lt;br&gt;&lt;br&gt;угу, а мьютекс реализовываается сам на себе, надо думать? я про железные атомарные операции.&lt;br&gt;&lt;br&gt;&amp;gt; после второго этапа может возникнуть черти-что без блокировки ячейки&lt;br&gt;&lt;br&gt;для не-unique значений второй этап не нужен. я той реализации не видел, возможно это и был multimap.&lt;br&gt;&lt;br&gt;&amp;gt; а мьютекс на каждую ячейку - это слишком дорого&lt;br&gt;&lt;br&gt;совсем нет. теоретический потолок - в 2 раза больше памяти (пустой хэш, смещение=слово, мьютекс=слово). На практике (&amp;gt; 50&#037; заполнение) - &amp;lt;1.5 раза. Не уверен, но можно под мьютексы и байты использовать.&lt;br&gt;</description>
</item>

</channel>
</rss>
