The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"Выпуск компактной встраиваемой СУБД libmdbx 0.9.1"
Отправлено erthink, 06-Окт-20 15:09 
> offtop/2: если что, в sqlite3 есть PRAGMA mmap_size=x. Насколько помню, по умолчанию
> там 0, т.е. mmap не используется. Как-то раз удавалось за счёт
> включения этой настройки немного ускорить существующую базу. В репозитории ioarena не
> нашёл упоминания mmap_size, т.е. возможно что этот момент был упущен.

mmap в sqlite будет немного ускорять чтение, за счет потенциального "расширения" page cache на весь объем данных. Но libmdbx тут (в сценариях интенсивного чтения) всё равно _всегда_ в разы быстрее, ибо примерно совсем не выполняет лишних операций (минимум накладных расходов). В Сети можно найти достаточно результатов бенчмарков (sqlite vs LMDB) подтверждающих это. Навскидку вот один из них https://hsto.org/webt/uw/du/4z/uwdu4zfgewvmqwkzuzaszja_qeq.png (фон прозначный, в зависимости от браузера может получится черное на черном).

В сценариях с интенсивной записью/обновлением (в том числе в показанных ранее CRUD) mmap существенного влияния не окажет. На всякий добавил прагму в драйвер ioarena и повторил один из тестов.

Патч:
```
diff --git a/src/drivers/ia_sqlite3.c b/src/drivers/ia_sqlite3.c
index 96a3e45..cad1c30 100644
--- a/src/drivers/ia_sqlite3.c
+++ b/src/drivers/ia_sqlite3.c
@@ -77,7 +77,7 @@ static int ia_sqlite3_open(const char *datadir) {
     snprintf(cmd_buf, CMD_SIZE, "PRAGMA journal_mode=%s;", "WAL");
     break;
   case IA_WAL_OFF:
-    snprintf(cmd_buf, CMD_SIZE, "PRAGMA journal_mode=%s;", "OFF");
+    snprintf(cmd_buf, CMD_SIZE, "PRAGMA journal_mode=%s; PRAGMA mmap_size=%u;", "OFF", 1024*1024*512);
     break;
   default:
     ia_log("error: %s(): unsupported walmode %s", __func__,

```

Результат:
```
$ NN=25000000 BENCH_CRUD_MODE=nosync make bench-triplet
[...]
LD_LIBRARY_PATH="./:${LD_LIBRARY_PATH}" ../ioarena/@BUILD/src/ioarena -D sqlite3 -B crud -m nosync -n 25000000 | tee bench-sqlite3_25000000.txt | grep throughput && LD_LIBRARY_PATH="./:${LD_LIBRARY_PATH}" ../ioarena/@BUILD/src/ioarena -D sqlite3 -B get,iterate -m nosync -r 4 -n 25000000 | tee -a bench-sqlite3_25000000.txt | grep throughput || mv -f bench-sqlite3_25000000.txt bench-sqlite3_25000000.txt.error
throughput:   7.794Kops/s

```

Т.е. стало хуже, без "PRAGMA mmap_size=#" было 9.599Kops/s.

 

Ваше сообщение
Имя*:
EMail:
Для отправки ответов на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
  Введите код, изображенный на картинке: КОД
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру