Показаны сообщения с ярлыком pgbench. Показать все сообщения
Показаны сообщения с ярлыком pgbench. Показать все сообщения

среда, 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;"

понедельник, 25 марта 2019 г.

Тест 1С и PostgreSQL Windows vs PostgreSQL Linux

Есть средство виртуализации debian с VirtualBox (kvm)
Поднимем, 2 виртуальные  машины:
1. Ubuntu 16.04 32 Gb 4 ядра
Виртуальная машина ubuntu 16.04.5 PostgreSQL версия 10.5-24.1C 1С 8.3.13.1690

Тест  pgbench
$ sudo su postgres
$ psql -c "CREATE DATABASE example;"
$ pgbench -i -s 500 example
$ 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 = 1.647 ms
tps = 6073.027124 (including connections establishing)
tps = 6078.146705 (excluding connections establishing)



Тест расчета зарплаты на 3000 сотрудников (с оптимизацией postgresql.conf):
Заполнить154 с
Провести 127 с

Тест Гилева


$ cat /proc/cpuinfo | grep MHz
cpu MHz         : 3599.998
cpu MHz         : 3599.998
cpu MHz         : 3599.998
cpu MHz         : 3599.998

$ sudo hdparm -Tt /dev/sda

/dev/sda:
 Timing cached reads:   34870 MB in  1.98 seconds = 17598.73 MB/sec
 Timing buffered disk reads: 1096 MB in  3.00 seconds = 365.07 MB/sec

$ free -ht
              total        used        free      shared  buff/cache   available
Память:         31G        2,5G        1,3G        2,5G         27G         25G
Подкачка:        1,0G        7,0M        1,0G
Всего:         32G        2,5G        2,3G


2. Windows 10  32 Gb 4 ядра
Установка PostgreSQL, версия 10.5-24.1C windows 10
PostgreSQL, версия 10.5-24.1C windows 10 postgresql.conf

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

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

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

C:\Users\user>"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 = 2.006 ms
tps = 4984.870590 (including connections establishing)
tps = 5021.018416 (excluding connections establishing)


Тест расчета зарплаты на 3000 сотрудников (с оптимизацией postgresql.conf):
Заполнить160 с
Провести 148 с





-----------------------------------------------------------------------
CrystalDiskMark 6.0.2 x64 (C) 2007-2018 hiyohiyo
                          Crystal Dew World : https://crystalmark.info/
-----------------------------------------------------------------------
* MB/s = 1,000,000 bytes/s [SATA/600 = 600,000,000 bytes/s]
* KB = 1000 bytes, KiB = 1024 bytes

   Sequential Read (Q= 32,T= 1) :   541.779 MB/s
  Sequential Write (Q= 32,T= 1) :   524.051 MB/s
  Random Read 4KiB (Q=  8,T= 8) :   277.270 MB/s [  67692.9 IOPS]
 Random Write 4KiB (Q=  8,T= 8) :   252.523 MB/s [  61651.1 IOPS]
  Random Read 4KiB (Q= 32,T= 1) :   188.719 MB/s [  46074.0 IOPS]
 Random Write 4KiB (Q= 32,T= 1) :   153.639 MB/s [  37509.5 IOPS]
  Random Read 4KiB (Q=  1,T= 1) :    22.986 MB/s [   5611.8 IOPS]
 Random Write 4KiB (Q=  1,T= 1) :    59.959 MB/s [  14638.4 IOPS]

  Test : 1024 MiB [C: 5.4% (53.8/999.5 GiB)] (x5)  [Interval=5 sec]
  Date : 2019/03/25 18:36:32
    OS : Windows 10 Professional [10.0 Build 16299] (x64)
 


воскресенье, 24 марта 2019 г.

Тест pgbench PostgreSQL Windows vs PostgreSQL Linux

Windows
Посмотреть список баз:
"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\psql" -U postgres  -c "CREATE DATABASE example"
Password for user postgres:
CREATE DATABASE


"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')) postgres

>"c:\Program Files\PostgreSQL\10.5-24.1C\bin\psql" -U postgres -d example -c "select pg_size_pretty( pg_database_size('example')) postgres
Password for user postgres:
 postgres
----------
 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 транзакций.


>"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 = 3.133 ms
tps = 3191.871025 (including connections establishing)
tps = 3278.326360 (excluding connections establishing)

Для Linux:
Настройка PostgreSQL с помощью pgbench
 

суббота, 19 января 2019 г.

Настройка PostgreSQL с помощью pgbench

Настройка PostgreSQL с помощью pgbench

$ psql
#postgres=# DROP DATABASE example;
postgres=# CREATE DATABASE example;
postgres=# \q

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

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

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

#postgres=# DROP DATABASE example;
postgres=# CREATE DATABASE example;
postgres=# \q

$ pgbench -i -s 1 example
postgres=# SELECT pg_size_pretty( pg_database_size( 'example' ) );
 pg_size_pretty
----------------
 23 MB
(1 строка)

#postgres=# DROP DATABASE example;
postgres=# CREATE DATABASE example;
postgres=# \q
$ pgbench -i -s 10 example

postgres=# SELECT pg_size_pretty( pg_database_size( 'example' ) );
 pg_size_pretty
----------------
 157 MB
(1 строка)

#postgres=# DROP DATABASE example;
postgres=# CREATE DATABASE example;
postgres=# \q
$ pgbench -i -s 100 example

postgres=# SELECT pg_size_pretty( pg_database_size( 'example' ) );
 pg_size_pretty
----------------
 1503 MB
(1 строка)

#postgres=# DROP DATABASE example;
postgres=# CREATE DATABASE example;
postgres=# \q
$ pgbench -i -s 500 example

postgres=# SELECT pg_size_pretty( pg_database_size( 'example' ) );
 pg_size_pretty
----------------
 7485 MB
(1 строка)


$ pgbench -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 транзакций.

postgres=# show shared_buffers;
 shared_buffers
----------------
 4GB
(1 строка)

postgres@u1604:~$ 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 = 1.600 ms
tps = 6250.430421 (including connections establishing)
tps = 6256.860642 (excluding connections establishing)

sudo nano /etc/postgresql/10/main/postgresql.conf
....
shared_buffers = 128MB
....
Сохранить.
sudo systemctl restart postgresql.service
 postgres@u1604:~$ 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 = 1.761 ms
tps = 5677.796580 (including connections establishing)
tps = 5681.195082 (excluding connections establishing)
postgres@u1604:~$
user@u1604:~$ free -m
              total        used        free      shared  buff/cache   available
Память:       32168        1542        5418         222       25207       29895
Подкачка:        1023           0        1023

sudo nano /etc/postgresql/10/main/postgresql.conf
....
shared_buffers = 1GB
....
Сохранить.
sudo systemctl restart postgresql.service
postgres@u1604:~$ 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 = 1.815 ms
tps = 5511.049911 (including connections establishing)
tps = 5517.989252 (excluding connections establishing)
postgres@u1604:~$



user@u1604:~$ free -m
              total        used        free      shared  buff/cache   available
Память:       32168        1518        4896         222       25753       29921
Подкачка:        1023           0        1023

$ 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 = 2.670 ms
tps = 3744.674440 (including connections establishing)
tps = 3746.879000 (excluding connections establishing)

$ pgbench -c 10 -T 60 example
sudo nano /var/lib/pgpro/1c-10/data/postgresql.conf
sudo systemctl restart postgrespro-1c-10.service