В статье рассматривается эффективность различных СУБД для программного обеспечения 1С:Предприятие при использовании различных типов накопителей — SSD SATA, SSD NVMe, HDD и RamDISK. В связи с большим количеством типов накопителей часто возникает необходимость выбора наиболее оптимального типа накопителей Аналогичный вопрос возникает по поводу выбора системы управления базы данных, особенно если учитывать тот факт, что выбор способа СУБД не только влияет на скорость обработки и вывода информации, но также и напрямую сказывается на конечной стоимости проекта. Данная статья позволит выяснить и подобрать для себя наиболее оптимальный вариант.
Ключевые слова: СУБД, системное администрирование, 1С:Предприятие, MS SQL, Postgres SQL.
Мне всегда было интересно (и не только мне), есть ли смысл запуска 1С в диске из оперативной памяти, потому что если посмотреть на графики скорости чтения различных типов накопителей, то преимущества очевидны
Рис. 1. Сравнение скорости чтения и записи различных типов накопителей
Виртуальный диск из ОЗУ демонстрирует огромное преимущество над любым типом дисков, даже если бы мы использовали SSD с поддержкой NVMe PCI-E x4, мы бы не смогли получить особого преимущества перед диском из оперативной памяти, так как это позволило бы только увеличить скорость записи больших файлов с 3521 Мб/сек до 5000, что все равно далеко от скоростей RAMDisk, но никак не повлияло бы на скорости мелких файлов и секторов, а в нашем случае это имеет важное значение. Кажется, что тестирование проводить смысла нет — исходя из графика сразу понятно кто аутсайдер, и кто победитель: заранее скажу, что в целом — да, но не везде и не всегда а жесткие диски списывать со счетов рано.
В связи с этим я решил сравнить скорость быстродействия 1C:Предприятие в различных способах управления информационной базой 1С: файловый вариант, MS SQL и POSTGRES. Тестирование проводилось поочередно на каждом из четырех накопителей. В качестве замера производительности применял два теста — перепроведение документов за одинаковый отрезок времени и формирование оборотной ведомости за 6 лет, различные синтетические тесты и «замеры производительности» не проводились ввиду того что они не всегда точно отображают реальную производительность.
В качестве тестового стенда применялся компьютер следующей конфигурации:
Таблица 1
CPU |
AMD Ryzen R9 3900X (12 ядер, 24 потока, 3800МГц) |
RAM |
32 Гб DDR4 Kingston FURY 2666МГц (4*8ГБ) |
HDD |
1ТБ Seagate 1000DM003 |
SSD SATA |
500 Гб Samsung 870EVO |
SSD NVMe x3 |
500 Гб Samsung 970EVO |
OS |
MS Windows Server 2019 Standard |
1С:Предприятие |
Бухгалтерия для гос. Учреждений ПРОФ |
СУБД MS SQL |
2019 STANDARD |
СУБД POSTGRES SQL |
14.4–1.1C |
Тестирование начнём с самого простого способа управления информационной базой 1С:Предприятия — файловый (меньше — лучше, время в мин:сек):
Рис. 2. Сравнение скорости формирования ведомости на различных типах накопителей
То, что жесткий диск оказался самым медленным способом обработки информации — это ожидаемо, отставание SATA SSD от PCI-E x3 составляет существенные 20 %, а виртуальный диск из оперативной памяти хоть и самый быстрый, но разгромного преимущества перед PCI-E x3 нет: выигрыш в скорости примерно 10 %, не смотря на огромную разницу в скорости чтения и записи, что касается скорости в перепроведении документов ситуация уже не такая однозначная (меньше — лучше, время в мин:сек):
Рис. 3. Сравнение скорости перепроведения документов на различных типах накопителей
А вот и первый сюрприз: если с физическими накопителями всё закономерно, но в этот раз RAMDisk оказался самым медленным — я повторил тестирование три раза но ничего не поменялось, возможно, проблема имеет общие корни с программными RAID массивами. Но при этом стоит обратить внимание, что здесь жесткий диск уже не кажется безнадежно устаревшим вариантом.
Теперь перейдём к тестированию варианта взаимодействия с информационной базой 1C:Предприятия через СУБД MS SQL 2019:
Рис. 4. Сравнение скорости формирования ведомости на различных типах накопителей с использованием СУБД MS SQL
СУБД SQL от Microsoft показывает отличную оптимизацию обработки информации по сравнению с файловым вариантом, в целом можно сказать что все время формирования отчёта для SSD обоих типов и RAMDisk одинаково и лежит в пределах погрешности, но если жесткий диск справился почти в 5 раз быстрее (+500 %), то для SSD прирост скорости составил 100 % для PCI-E x3 и 250 % для SATA SSD. Прирост скорости для RAMDisk составил «скромные» 75 %.
Рис. 5. Сравнение скорости перепроведения документов на различных типах накопителей с использованием СУБД MS SQL
Здесь сохраняется логичное преимущество физических накопителей но диск из ОЗУ начинает демонстрировать недостатки программной эмуляции накопителя.
Чтобы получить результаты наиболее объективным, я решил проверить теорию влияния скорости на работу СУБД когда журналы пользователей и база данных хранятся на разных дисках, но это никак не повлияло на скорость формирования отчетов.
Теперь проверим быстродействие 1С:Предприятие с POSTGRES:
Рис. 6. Сравнение скорости формирование ведомости на различных типах накопителей с использованием СУБД Postgres
POSTGRES SQL показывает отличную масштабируемость в зависимости от типа диска и, что необычно, формирование отчёта с СУБД POSTGRES при разворачивании базы на жёстком диске оказывается быстрее в 1,5 раза по сравнению с СУБД от Microsoft. Но если смотреть на график относительно твердотельных накопителей (SSD), то, конечно, Microsoft SQL предпочтительнее. В случае с RAMDisk разницы нет.
Рис. 7. Сравнение скорости перепроведения документов на различных типах накопителей с использованием СУБД Postgres
Последний тест отлично показывает отсутствие целесообразности использования RAMDisk для размещения СУБД. Так как этот диск виртуальный и он создаётся посредством программного обеспечения, то наблюдается аналогия с программными и аппаратными RAID массивами: программные массивы обслуживаются вычислительными мощностями ЦП, стабильность и скорость работы целиком зависит от грамотности и правильности кода соответствующего программного обеспечения для создания диска из ОЗУ, аналогичная ситуация справедлива и для физических дисков: когда для создания RAID массивов применяется аппаратные средства, снимается с ЦП задачи по обслуживанию RAID, что положительно сказывается на общей производительности массива и отпадает зависимость от качества работы программного обеспечения сторонних разработчиков. В случае создания виртуального диска из оперативной памяти используется программное обеспечение, что накладывает определенные ограничение на работу данного диска, что и подтверждает тестирование — чёткой стабильности в производительности нет в отличие от физических накопителей. Но, как бы то ни было, последний тест в очередной раз подтверждает преимущество PCI-E SSD накопителя перед другими типами дисков.
Проведенное тестирование показало преимущество СУБД MS SQL над POSTGRES и общее преимущество обоих типов СУБД над классическим способом работы 1С:Предприятие — файловым. Смысла использования RAMDisk нет от слова совсем — да, прирост в скорости наблюдается в файловом варианте составляет примерно 12 % от самого быстрого диска, но экономической целесообразности нет — в среднем 32 Гб ОЗУ DDR4 стоит 180$, а 500 Гб SSD NVMe x3 (в тестировании применялся SSD Samsung 500 Гб 970EVO) стоит 120$, разница в стоимости при пересчете Гб/$ составляет 5,6$ за гигабайт для ОЗУ и 0,24$ за гигабайт для SSD. Переплата в 23 раза (2300 %) ради 12 % производительности лишь в нескольких случаях смысла не имеет.
Отдельного внимания заслуживает СУБД POSTGRES SQL — в отличие от СУБД Microsoft она бесплатная но в среднем увеличивает скорость работы с 1С в два раза, на мой взгляд неплохое предложение для недорогого (не забываем что необходимо для любого варианта использования SQL требуется приобретение лицензии на сервер 1С) но эффективного ускорения работы 1С:Предприятие. Что касается СУБД Microsoft SQL Server — это самый быстрый и эффективный способ обработки информации в 1С:Предприятие, да, он не бесплатный но даёт прирост до 50 % по сравнению с POSTGRES.
Что касается дисков, то, разумеется, SSD новейших форматов NVMe x3 (и x4) является наиболее предпочтительным вариантом этот тип диска в связке с СУБД MS SQL даст наибольший прирост производительности, но если у вас стоит задача создать максимально производительный сервер 1С с минимальными затратами — можете смело использовать связку POSTGRES и старый добрый HDD.
В заключение, предлагаю ознакомиться с краткой таблицей сравнительного тестирования:
Таблица 2
Тип работы |
Формирование оборотной ведомости |
Перепроведение документов |
Рейтинг производительности |
MS SQL + NVMe SSD |
0:18 |
2:40 |
1 |
MS SQL + SATA SSD |
0:19 |
3:02 |
2 |
MS SQL + RAMDisk |
0:20 |
3:29 |
3 |
POSTGRES + NVMe SSD |
0:27 |
4:53 |
4 |
POSTGRES + SATA SSD |
0:35 |
5:03 |
5 |
POSTGRES + RAMDisk |
0:19 |
5:50 |
6 |
MS SQL + HDD |
1:18 |
4:21 |
7 |
POSTGRES + HDD |
0:52 |
5:20 |
8 |
RAMDisk |
0:35 |
12:55 |
9 |
NVMe SSD |
0:39 |
10:52 |
10 |
SATA SSD |
0:48 |
11:50 |
11 |
HDD |
6:21 |
12:53 |
12 |
Литература:
- https://habr.com/ru/post/694554/