Как база данных может иметь худшие результаты теста на более быстром диске? - PullRequest
1 голос
/ 06 января 2020

Я сравниваю сравнительный сервер (2vCPU, 2G RAM) (Ubuntu 18.04) от DigitalOcean (DO) и AWS EC2 (t3a.small).

Тест производительности диска (fio) идет в линию с результаты https://dzone.com/articles/iops-benchmarking-disk-io-aws-vs-digitalocean

В итоге:

DO -

READ: bw = 218 МБ / с (229 МБ / с), 218 МБ / с-218 МБ / с (229 МБ / с-229 МБ / с), io = 3070 МБ (3219 МБ), пробег = 14060-14060 мсек c

ЗАПИСЬ: bw = 72,0 МБ / с (76,5 МБ / с) ), 72,0 МБ / с-72,0 МБ / с (76,5 МБ / с-76,5 МБ / с), io = 1026 МБ (1076 МБ), пробег = 14060-14060 мсек c

EC2 -

ЧТЕНИЕ: bw = 9015 КБ / с (9232 КБ / с), 9015 КБ / с-9015 КБ / с (9232 КБ / с-9232 КБ / с), io = 3070 МБ (3219 МБ), прогон = 348703-348703 мсек c

ЗАПИСЬ: bw = 3013 КБ / с (3085 КБ / с), 3013 КБ / с-3013 КБ / с (3085 КБ / с-3085 КБ / с), io = 1026 МБ (1076 МБ), пробег = 348703-348703 мсек c

, который показывает, что диск DO более чем в 10 раз быстрее, чем EBS EC2

Однако, sysbench, следующий за https://severalnines.com/database-blog/how-benchmark-postgresql-performance-using-sysbench, показывает DO медленнее , чем EC2 (используя Postgres 11 по умолчанию Реализация теста чтения-записи на oltp_legacy / oltp. lua)

DO -

транзакций: 14704 (243,87 per se c.)

Задержка ( мс):

мин: 9,06

ср: 261,77

макс: 2114,04

95-й процентиль: 383,33

EC2 -

транзакций: 20298 (336,91 само по себе c.)

Задержка (мс):

мин: 5,85

среднее: 189,47

макс: 961,27

95-й процентиль: 215,44

Что может быть объяснением?

Ответы [ 2 ]

3 голосов
/ 06 января 2020

Последовательная пропускная способность чтения / записи важна для больших последовательных сканирований, таких как хранилище данных, загрузка большой резервной копии и т. Д. c.

Ваш эталонный тест - OLTP, который выполняет множество небольших быстрых запросов. Для этой последовательной пропускной способности не имеет значения.

Для операций чтения (SELECT) наиболее важным фактором является наличие достаточного количества ОЗУ для хранения вашего рабочего набора в кэш-памяти и отсутствия реального ввода-вывода. В противном случае это время чтения произвольного доступа.

Для операций записи (UPDATE, INSERT) тогда задержка fsyn c, которая является временем, необходимым для фиксации данных в стабильном хранилище, является наиболее важным фактором, поскольку база данных будет только sh COMMIT после записи данных.

Скорее всего, EC2 имеет лучший произвольный доступ и производительность fsyn c. Может быть, он использует SSD или кэш с резервным питанием от батареи.

0 голосов
/ 06 января 2020

Последовательная пропускная способность и задержка / iops являются независимыми параметрами.

Некоторые рабочие нагрузки (например, БД) зависят от задержки для множества небольших IOs. Или пропускная способность для множества небольших операций ввода-вывода, iops (IOs в секунду).

...