Как зайти в Даркнет?!
25th January, 01:11
8
0
Как в tkinter из поля ввода Entry получить значение в одну переменную и обновить строку кнопкой, затем получить ещё одно введённое значение и затем сложить их. Ниже пример кода
21st July, 19:00
899
0
Программа, которая создает фейковые сервера в поиске игровых серверов CS 1.6 Steam
21st March, 17:43
952
0
Очень долго работает Update запрос Oracle
27th January, 09:58
916
0
не могу запустить сервер на tomcat HTTP Status 404 – Not Found
21st January, 18:02
907
0
Где можно найти фрилансера для выполнения поступающих задач, на постоянной основе?
2nd December, 09:48
942
0
Разработка мобильной кроссплатформенной военной игры
16th July, 17:57
1727
0
период по дням
25th October, 10:44
3957
0
Пишу скрипты для BAS только на запросах
16th September, 02:42
3722
0
Некорректный скрипт для закрытия блока
14th April, 18:33
4614
0
прокидывать exception в блоках try-catch JAVA
11th March, 21:11
4382
0
Помогите пожалуйста решить задачи
24th November, 23:53
6088
0
Не понимаю почему не открывается детальное описание продукта
11th November, 11:51
4352
0
Нужно решить задачу по программированию на массивы
27th October, 18:01
4400
0
Метода Крамера С++
23rd October, 11:55
4309
0
помогите решить задачу на C++
22nd October, 17:31
4002
0
Помогите решить задачу на python с codeforces
22nd October, 11:11
4492
0
Python с нуля: полное руководство для начинающих
18th June, 13:58
2599
0
Параллелизм BerkeleyDB
- Каков оптимальный уровень параллелизма, который может разумно поддерживать реализация C++ BerkeleyDB?
- Сколько потоков я могу забить на DB, прежде чем пропускная способность начнет страдать из-за конкуренции ресурсов?
Я прочитал руководство и знаю, как установить количество замков, шкафчиков, размер страницы базы данных и т. д. но мне просто нужен совет от кого-то, кто имеет реальный опыт работы с параллелизмом BDB.
Мое приложение довольно простое, я буду делать gets и puts записей, которые составляют около 1 КБ каждый. Никаких курсоров, никаких удалений.
Это зависит от того, какое приложение вы создаете. Создайте репрезентативный тестовый сценарий и приступайте к работе. Тогда вы будете знать окончательный ответ.
Помимо вашего варианта использования, он также зависит от CPU, памяти, передней шины, операционной системы, настроек кэша и т. д.
Серьезно, просто проверьте свой собственный сценарий.
Если вам нужны какие-то цифры (это на самом деле может ничего не значить в вашем сценарии):
- Oracle Беркли DB: Показатели производительности и Стандарты
- метрики производительности
& контрольные показатели:
Беркли DB
Я полностью согласен с точкой зрения Daan: создайте тестовую программу и убедитесь, что способ, которым она получает доступ к данным, максимально точно имитирует шаблоны, которые вы ожидаете получить от вашего приложения. Это чрезвычайно важно для BDB, потому что различные шаблоны доступа дают очень разную пропускную способность.
Кроме того, это общие факторы, которые, как я обнаружил, оказывают существенное влияние на пропускную способность:
Метод доступа (который в вашем случае, я думаю, составляет BTREE).
Уровень персистентности, с которым вы настроили DBD (например, в моем случае флаг среды 'DB_TXN_WRITE_NOSYNC' улучшил производительность записи на порядок, но это ставит под угрозу персистентность)
Помещается ли рабочий набор в кэш?
Количество операций чтения и записи.
Как распределен ваш доступ (помните, что BTREE имеет блокировку уровня страницы - так что доступ к разным страницам с разными потоками является большим преимуществом).
Шаблон доступа-означает, насколько вероятно, что потоки будут блокировать друг друга, или даже взаимоблокировки, и какова ваша политика разрешения взаимоблокировок (это может быть убийцей).
Аппаратное обеспечение (дисковая & память для кэша).
Это сводится к следующему пункту: Масштабирование решения, основанного на DBD, так чтобы оно обеспечивало больший параллелизм, имеет два основных способа: либо свести к минимуму количество блокировок в вашем проекте, либо добавить больше оборудования.
При работе с базой данных с неизвестной производительностью я измерял время выполнения своих запросов. Я продолжал увеличивать количество потоков до тех пор, пока время поворота не уменьшилось, и уменьшал количество потоков до тех пор, пока время поворота не улучшилось (ну, это были процессы в моей среде, но все равно).
Там были скользящие средние и всевозможные метрики, но урок на вынос был таков: просто адаптируйтесь к тому, как все работает в данный момент. Вы никогда не знаете, когда DBAs улучшит производительность или оборудование будет обновлено, или, возможно, появится другой процесс, чтобы загрузить систему во время работы. Так что адаптируйся.
Да, и еще одно: избегайте переключений процессов, если вы можете-пакетные вещи.
О, я должен прояснить это: все это произошло во время выполнения, а не во время разработки.
Насколько я понимаю, Samba создал tdb , чтобы разрешить "несколько параллельных писателей" для любого конкретного файла базы данных. Поэтому, если ваша рабочая нагрузка имеет несколько авторов, ваша производительность может быть плохой (например, проект Samba решил написать свою собственную систему, очевидно, потому, что он не был доволен производительностью Berkeley DB в этом случае).
С другой стороны, если ваша рабочая нагрузка имеет много читателей, то вопрос заключается в том, насколько хорошо ваша операционная система обрабатывает несколько читателей.