суббота, 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 


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

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