BerkeleyDB параллелизм

голоса
25
  • Что оптимальный уровень параллелизма, что C ++ реализация BerkeleyDB может разумно поддерживать?
  • Сколько нитей я уже стучал в БД прежде, чем пропускная способность начинает страдать из-за конфликта ресурсов?

Я прочитал инструкцию и знать, как установить количество замков, шкафчики, базы данных размера страницы и т.д., но я бы так же, как некоторые советы от тех, кто имеет реальный опыт работы с BDB параллелизмом.

Мое приложение очень просто, я буду делать получает и ставит записей, о 1KB каждого. Нет курсоры, нет удаления.

Задан 02/08/2008 в 00:28
источник пользователем
На других языках...                            


5 ответов

голоса
10

Это зависит от того, какие приложения вы строите. Создание репрезентативного сценария тестирования и запуск стучал. Тогда вы будете знать точный ответ.

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

Серьезно, просто проверить свой собственный сценарий.

Если вам нужны какие-то цифры (которые на самом деле не может означать ничего в вашем сценарии):

Ответил 03/08/2008 в 13:34
источник пользователем

голоса
7

Я полностью согласен с точкой Даан в: создать тестовую программу, и убедитесь, что путь, в котором он обращается к мимику данных как можно ближе к модели, которые вы ожидаете ваше приложение, чтобы иметь. Это чрезвычайно важно с BDB, поскольку различные модели доступа дают очень разные пропускную способность.

Кроме того, эти общие факторы, которые я нашел, чтобы иметь большое влияние на пропускную способность:

  1. Метод доступа (который в вашем случае я думаю, это ВТКЕЕ).

  2. Уровень настойчивости, с которой вы сконфигурированной DBD (например, в моем случае флаг окружающей среды «DB_TXN_WRITE_NOSYNC» улучшена производительность записи по порядку величины, но она ставит под угрозой постоянства)

  3. установлен ли рабочий помещается в кэш?

  4. Количество Считывает Vs. Пишет.

  5. Как разложить ваш доступ (помните, что BTREE имеет блокировку на уровне страницы - так доступ к различным страницам с разными потоками является большим преимуществом).

  6. модель доступа - meanig насколько вероятно, нити для блокировки друг друга, или даже тупиковой ситуации, и какова ваша политика разрешения тупиковой ситуации (это один может быть убийцей).

  7. Аппаратные средства (диск и память для кэша).

Это сводится к следующему пункту: Scaling решения, основанное на DBD так, что она обеспечивает большой параллелизм имеет два основных пути идти об этом; либо свести к минимуму количество блокировок в вашей конструкции или добавить больше оборудования.

Ответил 13/10/2008 в 22:59
источник пользователем

голоса
4

Разве это не зависит от аппаратного обеспечения, а также количества потоков и прочего?

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

Ответил 02/08/2008 в 19:21
источник пользователем

голоса
2

Как я понимаю вещи, Samba создал TDB , чтобы «несколько параллельных авторов » для любого конкретного файла базы данных. Так что, если ваша нагрузка имеет несколько писателей ваше выступление может быть плохим (как, проект Samba решил написать свою собственную систему, по- видимому , потому , что он не был доволен производительностью Berkeley DB в данном случае).

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

Ответил 16/09/2008 в 18:31
источник пользователем

голоса
1

То, что я сделал при работе с базой данных неизвестного производительности было измерить время обработки на мои запросы. Я все повысит количество потоков, пока время оборота не упал, и понижая количество потоков, пока время оборота не улучшилось (ну, это процессы, в моем окружении, но безотносительно).

Были скользящие средние и все виды метрик, связанных, но урок Вынос был: просто приспособиться к тому, как вещи работают в данный момент. Вы никогда не знаете, когда АБД улучшит производительность или аппаратное обеспечение будет повышен, или, возможно, другой процесс будет идти вместе, чтобы загрузить вниз систему в то время как вы работаете. Так адаптироваться.

Да, и еще одно: избегать процесса переключается, если вы можете - партия вещи.


О, я должен сделать это ясно: все это произошло во время выполнения, а не во время разработки.

Ответил 04/08/2008 в 08:45
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more