powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Другие СУБД [игнор отключен] [закрыт для гостей] / Berkeley DB – производительность записи данных в большую базу.
14 сообщений из 14, страница 1 из 1
Berkeley DB – производительность записи данных в большую базу.
    #35817566
VlasovVolodya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если верить тестам производительности 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
Berkeley DB – производительность записи данных в большую базу.
    #35818795
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VlasovVolodya
Обнаружили зависимость – большой кэш базы (2-3 гигабайта) данных приводит к резкому падению производительности уже к миллиону записей.


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


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


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

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



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


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

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

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


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

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

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

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


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

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


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