Вынос временных таблиц в RAM может быть эффективен на высоконагруженных системах, а также на тех системах, в которых дисковая подсистема не справляется с нагрузкой.
Давайте на примере рассмотрим почему сделан такой вывод.
Тестовый стенд
Настройка | Значение |
---|
Сервер СУБД | 48 vCPU, 378 Gb RAM. дисковая подсистема: - sda - 200 Gb - system
- sdb - 10000 Gb - дата-каталог
- sdc - 500 Gb - WAL
|
Сервер приложений 1С | 1 центральный и 2 рабочих сервера, все настройки по умолчанию. Характеристики всех 3х серверов одинаковые: 32 vCPU, 128 Gb RAM, диск 300 Gb |
Сервер лицензирования 1С | Все серверные и клиентские лицензии вынесены на отдельный сервер с характеристиками: 4 vCPU, 16 Gb RAM, диск 50 Gb |
Версия СУБД | Tantor SE1C 17.2 |
Версия ОС сервера СУБД | Astralinux 1.8.1 |
Версия 1С | |
Версия ОС серверов приложений | Astralinux 1.7.5 |
Настройки сбора логов ТЖ | |
Настройки Tantor SE1C | |
Нагрузочный тест
В качестве теста взят готовый нагрузочный тест ERP от фирмы 1С. Мы взяли сценарий "ЕРП. 5 000 пользователей" и уменьшили в нем количество ВРМ с 5000 до 3225:

Длительность теста уменьшена до 4х часов, чтобы повысить интенсивность нагрузки на СУБД:

Результаты тестов
Варианты теста
Temp on Disk - временные таблицы через параметр temp_tablespaces вынесены на диск sdc.
Temp in RAM - временные таблицы через параметр temp_tablespaces вынесены в RAM. Размер RAM диска:
tmpfs /mnt/dbtemp/PG_17_999999999 tmpfs rw,nodev,nosuid,noatime,nodiratime,size=180G 0 0
CODE
Графики нагрузки на оборудование
Процессор и ОЗУ

Утилизация дисков

Время отклика и очереди к дискам

Полученные результаты
Вариант | APDEX | Среднее время |
---|
Temp on Disk | 0,800 | 8,538 |
Temp in RAM | 0,861 | 7,344 |
За счет снижения нагрузки на дисковую систему мы видим прирост производительности по среднему времени на 15%.