|
|
|
Berkeley DB – производительность записи данных в большую базу.
|
|||
|---|---|---|---|
|
#18+
Если верить тестам производительности Berkeley DB от Оракл, http://www.oracle.com/technology/products/berkeley-db/pdf/berkeley-db-perf.pdf то скорость одиночной записи на различных системах (Single-record write) измеряется десятками тысяч операций в секунду на типичном настольном компьютере. Решили воссоздать ситуацию: Машина Ubuntu Linux 64, core2quad 2.5Ghz, 8Gb RAM, 4kb cluster, винт - SSD PATRIOT 128Gb Версия базы Berkeley db 4.6 Суть теста – Создаем базу с доступом по хэшу. В цикле в базу инсертим случайный ключ 64байта длиной и килобайт данных. Раз в 5 секунд выводим среднюю производительность на экран. В начале теста результате теста, когда количество данных в базе невелико, вставка происходит быстро starting, DB_HASH cache: 0/267072/1 ----------дефолтный кеш pagesize: 2048 TimeInterval: 5000000, KEY64, DATA1024 random keys, seed = 12345 281738 56347 / sec 403267 24305 / sec 435074 6361 / sec 461809 5347 / sec 491495 5937 / sec Дойдя до трех миллионов ключей, скорость записи падает критично скорость падает пропорционально росту базы данных. 3248817 179 / sec 3253905 1017 / sec 3257165 652 / sec 3258585 284 / sec d 3262057 694 / sec Когда ставили на выходные тест – получили вообще смешные цифры 53443487 8 / sec 53443524 7 / sec 53443550 5 / sec Обнаружили зависимость – большой кэш базы (2-3 гигабайта) данных приводит к резкому падению производительности уже к миллиону записей. Вопрос – в чем может быть проблема? Двойное кеширование – и Беркли, и операционной системой? Что можно подкрутить-настроить, чтобы добиться хотя бы близких результатов к тестам от Оракл? Может быть, у кого-то есть опыт эксплуатации Беркли на больших объемах данных? Поделитесь, пожалуйста. Piecrusts and virginity are made to be broken(с) PS. По скорости чтения тоже есть вопросы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2009, 13:47 |
|
||
|
Berkeley DB – производительность записи данных в большую базу.
|
|||
|---|---|---|---|
|
#18+
VlasovVolodya Обнаружили зависимость – большой кэш базы (2-3 гигабайта) данных приводит к резкому падению производительности уже к миллиону записей. А почему именно хэш, а не BTree ? Это принципиально ??? Какие были транзакции ? (вообще код теста был-бы не лишним) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2009, 09:17 |
|
||
|
Berkeley DB – производительность записи данных в большую базу.
|
|||
|---|---|---|---|
|
#18+
Код теста в приложении. Хэш - потому что нужен только доступ по случайному ключу, никакого сканирования индекса не будет. Не принципиально, но в документации базы утверждалось, что для большой базы , в которой доступ сугубо случайный, хэш лучше дерева. Сейчас я, почитав форум Беркли и еще немного доков, грешу на установки размера кэша. http://www.oracle.com/technology/documentation/berkeley-db/db/ref/am_conf/cachesize.html http://www.oracle.com/technology/documentation/berkeley-db/db/api_cxx/env_set_cachesize.html http://forums.oracle.com/forums/thread.jspa?threadID=718303&tstart=135 Т.к. нам нужна работа с сотней миллионов строк по килобайту данных в каждой, то никакого разумного размера кеша не хватит. Завтра попробуем выставить кеш минимальный и посмотреть, что будет с производительностью. Piecrusts and virginity are made to be broken(с) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2009, 12:38 |
|
||
|
Berkeley DB – производительность записи данных в большую базу.
|
|||
|---|---|---|---|
|
#18+
VlasovVolodyaКод теста в приложении. Хэш - потому что нужен только доступ по случайному ключу, никакого сканирования индекса не будет. Не принципиально, но в документации базы утверждалось, что для большой базы , в которой доступ сугубо случайный, хэш лучше дерева. Сейчас я, почитав форум Беркли и еще немного доков, грешу на установки размера кэша. http://www.oracle.com/technology/documentation/berkeley-db/db/ref/am_conf/cachesize.html http://www.oracle.com/technology/documentation/berkeley-db/db/api_cxx/env_set_cachesize.html http://forums.oracle.com/forums/thread.jspa?threadID=718303&tstart=135 Т.к. нам нужна работа с сотней миллионов строк по килобайту данных в каждой, то никакого разумного размера кеша не хватит. Завтра попробуем выставить кеш минимальный и посмотреть, что будет с производительностью. Piecrusts and virginity are made to be broken(с) Хэш имеет обыкновение вырождаться Советую попробовать то-же самое на дереве Кэш насколько я помню счастья не приносит, в отличии от отказа от транзакционности к примеру Объем в принципе нормальный ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2009, 14:23 |
|
||
|
Berkeley DB – производительность записи данных в большую базу.
|
|||
|---|---|---|---|
|
#18+
Gluk (Kazan)в отличии от отказа от транзакционности к примеру Судя по исходникам ее и не было :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2009, 14:25 |
|
||
|
Berkeley DB – производительность записи данных в большую базу.
|
|||
|---|---|---|---|
|
#18+
Правда врать не буду, до 3 миллионов я ее не добивал ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2009, 14:26 |
|
||
|
Berkeley DB – производительность записи данных в большую базу.
|
|||
|---|---|---|---|
|
#18+
Собрали мы статистику по базе - строках на 300 000 и на 1000000, сравнивал количество баскетов, оверфлоу блоков и т.д. Пропорция относительно общего количества строк сохраняется, да и функция хеша у разработчиков заявлена как адаптирующаяся под объем. Т.е. это все не гарантия, конечно, но в качестве основного виновника тормозов сейчас не рассматриваю. Попробуем на дереве тоже, отчего не попробовать. Завтра покручу размер кеша, результат выложу. Piecrusts and virginity are made to be broken(с) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2009, 14:38 |
|
||
|
Berkeley DB – производительность записи данных в большую базу.
|
|||
|---|---|---|---|
|
#18+
Попробовали. Неоднократно даже, и дерево, и хэш. При ключах 64 б и 1 кб данных самая приличная производительность при размере базы в 3-5 миллионов при размере блока в 2 кб и дефолтном размере кеша. А нам нужно на два порядка большие объемы. Так что миллионы строк, длинные ключи и килобайтные данные, высокая производительность: выбирайте любые два. Piecrusts and virginity are made to be broken(с) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2009, 15:59 |
|
||
|
Berkeley DB – производительность записи данных в большую базу.
|
|||
|---|---|---|---|
|
#18+
VlasovVolodya А нам нужно на два порядка большие объемы. Так что миллионы строк, длинные ключи и килобайтные данные, высокая производительность: выбирайте любые два. Очень интересно. Будем иметь в виду ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2009, 18:08 |
|
||
|
Berkeley DB – производительность записи данных в большую базу.
|
|||
|---|---|---|---|
|
#18+
Попробуйте пакет memcachedb. Что касается ваших тестов - размер кластера ФС 4к, но базе вы почему-то говорите, что 2к... Вероятно, что и остальные настройки указаны не лучше. Ну и винт стоит потестировать хотя бы обычный SATA, поскольку с SSD могут быть различные проблемы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2009, 14:19 |
|
||
|
Berkeley DB – производительность записи данных в большую базу.
|
|||
|---|---|---|---|
|
#18+
Размер кластера ФС и страницы DBD не обязательно одинаковые, это просто в общем случае рекомендованно. С обычным SATA все провисает гораздо быстрее, но "железячной" стороной вопроса мы действительно озаботились, там действительно могут быть затыки. авторс SSD могут быть различные проблемы. Например? Piecrusts and virginity are made to be broken(с) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2009, 00:04 |
|
||
|
Berkeley DB – производительность записи данных в большую базу.
|
|||
|---|---|---|---|
|
#18+
VlasovVolodyaРазмер кластера ФС и страницы DBD не обязательно одинаковые, это просто в общем случае рекомендованно. При кластере 4к и размере страницы 1к производительность падает в три раза. Это легко проверить - попробуйте сами. VlasovVolodya С обычным SATA все провисает гораздо быстрее, но "железячной" стороной вопроса мы действительно озаботились, там действительно могут быть затыки. авторс SSD могут быть различные проблемы. Например? Да вот хотя бы только что на глаза попалось: http://www.opennet.ru/opennews/art.shtml?num=20408 Не рассчитаны ФС на SSD-диски, грабли сплошь и рядом. Лучше винт на 15 000 оборотов поставить и со стандартными настройками все будет работать очень даже быстро. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2009, 14:34 |
|
||
|
Berkeley DB – производительность записи данных в большую базу.
|
|||
|---|---|---|---|
|
#18+
VlasovVolodja, так на чём вы остановились в исследовании BerkeleyDB при большом числе записей? Меня интересует данный вопрос. Сделал простой тест на PHP заполнения db таблицы - получил смешные результаты. Но везде пишут об огромной скорости поиска и записи. Один из авторов говорил об объёме до 100Мб с незначительной потерей скорости для вставки с проверкой на уникальность. Где они их берут? Что я не понимаю? Пишут о высокоскоростном MySQL - вставка одной записи с проверкой уникальности - 0.025сек. Чтение чуть быстрее. Или это считается быстро? Может подскажете, где я туплю? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.04.2009, 21:04 |
|
||
|
Berkeley DB – производительность записи данных в большую базу.
|
|||
|---|---|---|---|
|
#18+
VitNi, попробуйте SQLite. Если же действительно нужны десятки и сотни тысяч операций записи в секунду, то berkeleydb сейчас уже не лучший вариант и, если вам нужна СУБД без поддержки SQL, стоит присмотреться, например, к tokyocabinet. Хотя я в таких случаях предпочитаю in-memory SQLite базу, регулярно синхронизируемую с persistent SQLite базой - и быстродействие очень высокое, и поддержка SQL есть, в отличии от berkeleydb и подобных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.04.2009, 13:57 |
|
||
|
|

start [/forum/topic.php?fid=56&msg=35825113&tid=2015790]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
57ms |
get topic data: |
9ms |
get forum data: |
3ms |
get page messages: |
51ms |
get tp. blocked users: |
1ms |
| others: | 230ms |
| total: | 382ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...