среда, 17 апреля 2019 г.

Тест pgbench PostgreSQL Windows vs PostgreSQL Linux


 На одной физической машине.

Установка сервера 1с на бюджетном CPU

Процессор G2020 SATA 2 SSD 16 Gb Windows 10

Посмотреть список баз:
"c:\Program Files\PostgreSQL\10.5-24.1C\bin\psql" -U postgres -c "\l"

"c:\Program Files\PostgreSQL\10.5-24.1C\bin\psql" -U postgres  -c "CREATE DATABASE example"

"c:\Program Files\PostgreSQL\10.5-24.1C\bin\pgbench" -U postgres -i -s 500 example

Опция -i(initialize) скажет pgbench инициализировать указанную базу данных.
По умолчанию pgbench будут созданы таблицы выше с количеством строк, показанных выше. Это создает простую 16MBбазу данных.
Так как мы будем использовать pgbenchдля измерения изменений в производительности, небольшой 16MB базы данных будет недостаточно, чтобы подчеркнуть наш экземпляр. Это где -s(масштабирование) опция вступает в игру.

-sОпция используется для умножения числа строк , введенных в каждую таблицу. В приведенной выше команде мы ввели параметр «масштабирования» 500. Это говорит pgbenchо создании базы данных в 500 раз больше размера по умолчанию.

Это означает, что в нашей pgbench_accountsтаблице теперь есть 50000000 записи. Это также означает, что размер нашей базы данных теперь 8 GB( 500 x 16MB).


Посмотреть размер базы example:

 "c:\Program Files\PostgreSQL\10.5-24.1C\bin\psql" -U postgres -d example -c "select pg_size_pretty( pg_database_size('example'))

----------
 7484 MB
(1 row)


"c:\Program Files\PostgreSQL\10.5-24.1C\bin\pgbench" -U postgres  -c 10 -j 10 -t 10000 example

При вызове pgbench мы добавляем в команду довольно много опций.
Первый - -c (клиенты), который используется для определения количества клиентов, с которыми необходимо связаться. Для этого испытания, я использовал , 10 чтобы сказать , pgbench чтобы выполнить с 10 клиентами.

Это означает, что при pgbench выполнении тестов открывается 10 разных сессий.
Следующий параметр - -j флаг (потоки). Этот флаг используется для определения количества рабочих процессов для pgbench. В приведенной выше команде я указал значение 10. Это скажет pgbench запустить 10 рабочих процесса во время бенчмаркинга.

Третий используемый вариант - -t(транзакции), который используется для указания количества транзакций для выполнения.
В приведенной выше команде я указал значение 10000. Однако это не означает, что 10000с нашей службой базы данных будут выполняться только транзакции. Это означает, что каждый сеанс клиента будет выполнять 10000 транзакции. Подводя итог, можно сказать, что базовый тестовый запуск состоял из двух pgbench рабочих процессов, имитирующих 10000 транзакции от 10 клиентов для общего количества 100000 транзакций.

3 измерения.

"c:\Program Files\PostgreSQL\10.5-24.1C\bin\pgbench" -U postgres  -c 10 -j 10 -t 10000 example
Password:
starting vacuum...end.
transaction type: <builtin: TPC-B (sort of)>
scaling factor: 500
query mode: simple
number of clients: 10
number of threads: 10
number of transactions per client: 10000
number of transactions actually processed: 100000/100000
latency average = 5.506 ms
tps = 1816.287277 (including connections establishing)
tps = 1821.690048 (excluding connections establishing)

"c:\Program Files\PostgreSQL\10.5-24.1C\bin\pgbench" -U postgres  -c 10 -j 10 -t 10000 example
Password:
starting vacuum...end.
transaction type: <builtin: TPC-B (sort of)>
scaling factor: 500
query mode: simple
number of clients: 10
number of threads: 10
number of transactions per client: 10000
number of transactions actually processed: 100000/100000
latency average = 5.601 ms
tps = 1785.270217 (including connections establishing)
tps = 1789.336452 (excluding connections establishing)

"c:\Program Files\PostgreSQL\10.5-24.1C\bin\pgbench" -U postgres  -c 10 -j 10 -t 10000 example
Password:
starting vacuum...end.
transaction type: <builtin: TPC-B (sort of)>
scaling factor: 500
query mode: simple
number of clients: 10
number of threads: 10
number of transactions per client: 10000
number of transactions actually processed: 100000/100000
latency average = 5.890 ms
tps = 1697.785587 (including connections establishing)
tps = 1703.934279 (excluding connections establishing)

"c:\Program Files\PostgreSQL\10.5-24.1C\bin\psql" -U postgres  -c "DROP DATABASE example"





Для Linux:
Настройка PostgreSQL с помощью pgbench
 
Тест  pgbench
$ sudo su postgres
$ psql -l
$ psql -c "CREATE DATABASE example;"
$ pgbench -i -s 500 example
$ psql -U postgres -d example -c "select pg_size_pretty( pg_database_size('example'))"
$ pgbench -c 10 -j 10 -t 10000 example

3 измерения.

$ pgbench -c 10 -j 10 -t 10000 example
starting vacuum...end.
transaction type: <builtin: TPC-B (sort of)>
scaling factor: 500
query mode: simple
number of clients: 10
number of threads: 10
number of transactions per client: 10000
number of transactions actually processed: 100000/100000
latency average = 3.391 ms
tps = 2949.072004 (including connections establishing)
tps = 2950.622925 (excluding connections establishing)

$ pgbench -c 10 -j 10 -t 10000 example
 
starting vacuum...end.
transaction type: <builtin: TPC-B (sort of)>
scaling factor: 500
query mode: simple
number of clients: 10
number of threads: 10
number of transactions per client: 10000
number of transactions actually processed: 100000/100000
latency average = 3.429 ms
tps = 2916.616416 (including connections establishing)
tps = 2918.001710 (excluding connections establishing)

$ pgbench -c 10 -j 10 -t 10000 example
starting vacuum...end.
transaction type: <builtin: TPC-B (sort of)>
scaling factor: 500
query mode: simple
number of clients: 10
number of threads: 10
number of transactions per client: 10000
number of transactions actually processed: 100000/100000
latency average = 3.616 ms
tps = 2765.201411 (including connections establishing)
tps = 2766.400625 (excluding connections establishing)

$ psql -c "DROP DATABASE example;"

Комментариев нет:

Отправить комментарий