Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Другие СУБД [игнор отключен] [закрыт для гостей] / Berkeley DB – производительность записи данных в большую базу. / 14 сообщений из 14, страница 1 из 1
14.02.2009, 13:47
    #35817566
VlasovVolodya
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Berkeley DB – производительность записи данных в большую базу.
Если верить тестам производительности 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.
По скорости чтения тоже есть вопросы.
...
Рейтинг: 0 / 0
16.02.2009, 09:17
    #35818795
Gluk (Kazan)
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Berkeley DB – производительность записи данных в большую базу.
VlasovVolodya
Обнаружили зависимость – большой кэш базы (2-3 гигабайта) данных приводит к резкому падению производительности уже к миллиону записей.


А почему именно хэш, а не BTree ? Это принципиально ???
Какие были транзакции ? (вообще код теста был-бы не лишним)
...
Рейтинг: 0 / 0
16.02.2009, 12:38
    #35819367
VlasovVolodya
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Berkeley DB – производительность записи данных в большую базу.
Код теста в приложении.

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

Сейчас я, почитав форум Беркли и еще немного доков, грешу на установки размера кэша.
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(с)
...
Рейтинг: 0 / 0
16.02.2009, 14:23
    #35819672
Gluk (Kazan)
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Berkeley DB – производительность записи данных в большую базу.
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(с)

Хэш имеет обыкновение вырождаться
Советую попробовать то-же самое на дереве
Кэш насколько я помню счастья не приносит, в отличии от отказа от транзакционности к примеру
Объем в принципе нормальный
...
Рейтинг: 0 / 0
16.02.2009, 14:25
    #35819684
Gluk (Kazan)
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Berkeley DB – производительность записи данных в большую базу.
Gluk (Kazan)в отличии от отказа от транзакционности к примеру


Судя по исходникам ее и не было :)
...
Рейтинг: 0 / 0
16.02.2009, 14:26
    #35819695
Gluk (Kazan)
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Berkeley DB – производительность записи данных в большую базу.
Правда врать не буду, до 3 миллионов я ее не добивал
...
Рейтинг: 0 / 0
16.02.2009, 14:38
    #35819738
VlasovVolodya
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Berkeley DB – производительность записи данных в большую базу.
Собрали мы статистику по базе - строках на 300 000 и на 1000000, сравнивал количество баскетов, оверфлоу блоков и т.д. Пропорция относительно общего количества строк сохраняется, да и функция хеша у разработчиков заявлена как адаптирующаяся под объем.
Т.е. это все не гарантия, конечно, но в качестве основного виновника тормозов сейчас не
рассматриваю.
Попробуем на дереве тоже, отчего не попробовать.
Завтра покручу размер кеша, результат выложу.


Piecrusts and virginity are made to be broken(с)
...
Рейтинг: 0 / 0
18.02.2009, 15:59
    #35825113
VlasovVolodya
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Berkeley DB – производительность записи данных в большую базу.
Попробовали.
Неоднократно даже, и дерево, и хэш.
При ключах 64 б и 1 кб данных самая приличная производительность при размере базы в 3-5 миллионов при размере блока в 2 кб и дефолтном размере кеша.

А нам нужно на два порядка большие объемы.
Так что миллионы строк, длинные ключи и килобайтные данные, высокая производительность: выбирайте любые два.



Piecrusts and virginity are made to be broken(с)
...
Рейтинг: 0 / 0
18.02.2009, 18:08
    #35825541
Gluk (Kazan)
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Berkeley DB – производительность записи данных в большую базу.
VlasovVolodya
А нам нужно на два порядка большие объемы.
Так что миллионы строк, длинные ключи и килобайтные данные, высокая производительность: выбирайте любые два.


Очень интересно. Будем иметь в виду
...
Рейтинг: 0 / 0
19.02.2009, 14:19
    #35827330
MBG
MBG
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Berkeley DB – производительность записи данных в большую базу.
Попробуйте пакет memcachedb.

Что касается ваших тестов - размер кластера ФС 4к, но базе вы почему-то говорите, что 2к... Вероятно, что и остальные настройки указаны не лучше. Ну и винт стоит потестировать хотя бы обычный SATA, поскольку с SSD могут быть различные проблемы.
...
Рейтинг: 0 / 0
22.02.2009, 00:04
    #35831428
VlasovVolodya
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Berkeley DB – производительность записи данных в большую базу.
Размер кластера ФС и страницы DBD не обязательно одинаковые, это просто в общем случае рекомендованно.
С обычным SATA все провисает гораздо быстрее, но "железячной" стороной вопроса мы действительно озаботились, там действительно могут быть затыки.

авторс SSD могут быть различные проблемы.
Например?


Piecrusts and virginity are made to be broken(с)
...
Рейтинг: 0 / 0
22.02.2009, 14:34
    #35831683
MBG
MBG
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Berkeley DB – производительность записи данных в большую базу.
VlasovVolodyaРазмер кластера ФС и страницы DBD не обязательно одинаковые, это просто в общем случае рекомендованно.

При кластере 4к и размере страницы 1к производительность падает в три раза. Это легко проверить - попробуйте сами.

VlasovVolodya
С обычным SATA все провисает гораздо быстрее, но "железячной" стороной вопроса мы действительно озаботились, там действительно могут быть затыки.

авторс SSD могут быть различные проблемы.
Например?


Да вот хотя бы только что на глаза попалось:
http://www.opennet.ru/opennews/art.shtml?num=20408

Не рассчитаны ФС на SSD-диски, грабли сплошь и рядом. Лучше винт на 15 000 оборотов поставить и со стандартными настройками все будет работать очень даже быстро.
...
Рейтинг: 0 / 0
27.04.2009, 21:04
    #35957133
VitNi
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Berkeley DB – производительность записи данных в большую базу.
VlasovVolodja, так на чём вы остановились в исследовании BerkeleyDB при большом числе записей?
Меня интересует данный вопрос.
Сделал простой тест на PHP заполнения db таблицы - получил смешные результаты. Но везде пишут об огромной скорости поиска и записи. Один из авторов говорил об объёме до 100Мб с незначительной потерей скорости для вставки с проверкой на уникальность. Где они их берут?
Что я не понимаю?
Пишут о высокоскоростном MySQL - вставка одной записи с проверкой уникальности - 0.025сек. Чтение чуть быстрее. Или это считается быстро?
Может подскажете, где я туплю?
...
Рейтинг: 0 / 0
29.04.2009, 13:57
    #35960902
MBG
MBG
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Berkeley DB – производительность записи данных в большую базу.
VitNi, попробуйте SQLite. Если же действительно нужны десятки и сотни тысяч операций записи в секунду, то berkeleydb сейчас уже не лучший вариант и, если вам нужна СУБД без поддержки SQL, стоит присмотреться, например, к tokyocabinet. Хотя я в таких случаях предпочитаю in-memory SQLite базу, регулярно синхронизируемую с persistent SQLite базой - и быстродействие очень высокое, и поддержка SQL есть, в отличии от berkeleydb и подобных.
...
Рейтинг: 0 / 0
Форумы / Другие СУБД [игнор отключен] [закрыт для гостей] / Berkeley DB – производительность записи данных в большую базу. / 14 сообщений из 14, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]