PostgreSQL10.6(CentOS8 1905)

2019/12/26


PostgreSQL10.6

最新版はPostgresql12.1だが、標準パッケージからPostgreSQL10.6とJDBCドライバをインストールする。

PostgreSQL10.6 インストール

個別にパッケージをインストールする。
dnf install -y postgresql postgresql-contrib postgresql-docs postgresql-jdbc postgresql-jdbc-javadoc postgresql-test

データベース初期化・設定

postgresql-setup --initdb ;#デーダースを初期化
systemctl enable --now postgresql;#起動セッションにpostgresqlを追加
systemctl status postgresql;#postgresqlが稼働していることを確認
#firewalldにpostgresqlの使用許可(永続的)を通知する
firewall-cmd --list-service 
firewall-cmd --add-service=postgresql --permanent
firewall-cmd --reload
firewall-cmd --list-service 
設定ファイルを修正
vi /var/lib/pgsql/data/postgresql.conf ;##listen_addresses = '*'に修正
vi /var/lib/pgsql/data/pg_hba.conf;#接続の範囲はこちらに明記
systemctl restart postgresql
データベースを初期化した後、データベースユーザを作成する。
#OSでユーザをつくる
adduser xxx ;#ホームディレクトリは/home/xxxになる

su - postgres
#データベースユーザをつくる
createuser -d xxx
#  -d xxxは新しいデータベースを作ることができる
#  -R xxxは別のロールを作成できない(デフォルト)
#  -S xxxはスーパーユーザになれない(デフォルト)

動作確認

データベースをつかう。ベンチマークを試す。
su - xxx
createdb
pgbench -i
psql -c '\dt'
pgbench -t 640 -c 1
pgbench -t 320 -c 2
pgbench -t 160 -c 4
pgbench -t 80 -c 8
pgbench -t 40 -c 16
pgbench -t 20 -c 32
pgbench -t 10 -c 64
pgbench -t 5 -c 128

psql
create table sample(tel int,name varchar(50));
insert into sample values(6547,'情報通信実験室');
insert into sample values(6447,'高橋研究室');
SELECT * FROM sample;
\q
トランザクション総数640として、いくつかのクライアント数について、処理速度を測定した。
単純な比較はできないが、Postgresql7より遅くなっている気がする。
-t x -c y client, transaction/clientlatenct ave.[mS]TPS(including)TPS(excluding)
-t 640 -c 11client, 640transaction/client1.918521.451241522.919769
-t 320 -c 22client, 320transaction/client2.144932.747382936.357389
-t 160 -c 44client, 160transaction/client4.765839.435624842.314431
-t 80 -c 88client, 80transaction/client9.554837.326034840.341197
-t 40 -c 1616client, 40transaction/client21.213754.241635756.688884
-t 20 -c 3232client, 20transaction/client46.081694.432735696.488864
-t 10 -c 6464client, 10transaction/client111.942571.724387573.388073
-t 5 -c 128128client, 5transaction/clientconnection to database "" failed:
FATAL: スーパーユーザによる接続用に予約される接続スロットの数を設定します。

かなり安っぽい構成であるが、Postgresql7(AMD64x2 2400+)のときよりはCPUはマシになっていると思うが、TPSは50%程度しか出ていない。

[参考]
CPUAMD A8-9600 2.4GHz
4core cache1MB (bogomips 6188.14)
Memory8GB
SSD/HDDSSD 120GB/HDD 1TB

リモート接続

リモートによる接続を確認する。
psql -h 192.168.70.xxx -U xxx -c 'SELECT * FROM sample'