他DBMSとの比較

特徴

  • PostgreSQLはJSON(=jsonb型)はNative Indexをサポートしている為、中途半端なVirtual Columnという仕組みでIndexを模してるMariaDB(MySQL)とは、JSON型で値へのアクセス速度が必要になった場合速度が断然違う(速い)
  • REST APIを提供するPostgREST、GraphQL APIを提供するGraphileといったものがあり、JSON利用が簡単&性能が出る=モバイルアプリ&Single Page Application開発がより少ない負担で出来る
  • PostGISによるGIS機能のサポートが充実
  • MariaDBより機能が多い
  • データのエラー判定がMariaDBより厳格で、想定外の値処理による不正な値処理の正常扱い通過が起きにくい
  • 1テーブルが持てる索引の数にMariaDB/MySQLの様な制限(64個)がない

内部構造

Version

13

12

運用事例

JSON対応

JSONB

hstore型

パフォーマンスチューニング

バックアップ・リストア

ファイル形式

スクリプト形式

  • スクリプト形式の出力は、リストアに必要なSQL文の羅列が出る
  • psqlコマンドでリストア
  • スクリプト形式の場合はプレーンテキストなので、リストアの際にエラーが出たら、中を見れるという利点がある

アーカイブ形式

  • バイナリの形で出力される
  • リストアはpsqlコマンドでなくpg_restoreコマンドで行う
  • アーカイブ形式の利点は、 「指定したtableのみを選択してリストアできる」
  • アーカイブ形式には以下の2種類がある
    • custom形式
    • tar形式
  • custom形式はdefaultで圧縮されるので、ファイルサイズが小さくなる

バックアップ

リストア

バッチファイル

backup.bat

set USER=postgres

pg_dump --create --clean --if-exists --inserts -U %USER% -d %1 > %2

force_terminate_connection.sql

select * from pg_database where datname = 'XXXX';

update pg_database set datallowconn = 'false' where datname = 'XXXX';
alter database XXXX connection limit 1;

select pg_terminate_backend(pid) from pg_stat_activity where datname = 'XXXX';

restore.bat

set USER=postgres

psql -U %USER% -f force_terminate_connection.sql
psql -U %USER% -f %1

ODBCドライバ

インストール

DSN

  • システム DSN
    • システム全体で使用される DSN
    • プログラムが使用されているマシンでは、この DSN を作成しなければならない
    • レジストリキー:HKEY_LOCAL_MACHINE\Software\Odbc\Odbc.ini\Odbc データ ソース
  • ユーザー DSN
    • 特定のユーザー用に作成された DSN
    • DSN を作成したユーザーのみ使用することができる
    • レジストリキー:HKEY_CURRENT_USER\Software\Odbc\Odbc.ini\Odbc データ ソース
  • ファイル DSN
    • DSN を含むテキストをテキストファイルに格納
    • データソースに接続するための情報をファイルに格納するので,ODBC.INIやレジストリから情報を取得しないで接続を確立できる

ERROR [IM002] [Microsoft][ODBC Driver Manager] データ ソース名および指定された既定のドライバーが見つかりません。

  • まずは「システム DSN」にドライバーを追加しているか確認
    • プログラムが使用されているマシンでは「システム DSN」を作成しなければならない

IISとの接続トラブル

  • IISでODBC利用時のアクセス権限
    • レジストリ「HKLM \ SOFTWARE \ Microsoft \ ODBC \ ODBC.INI」に、IISの実行ユーザに対するアクセス許可を与える
      • 「ファイル名を指定して実行」で「regedit」を実行
      • 表示されたレジストリエディタのダイアログにて、ODBC.INIを右クリックし、「アクセス許可」を選択
      • 「ODBC.INIのアクセス許可」のダイアログが表示されるので、追加ボタンを押し、IISの実行ユーザを登録

インストール

Windows

Linux

Mac OS X

1. インストール

$ ./configure オプション
$ make
$ sudo make install(デフォルトでは/usr/local/pgsqlにインストールされる)

2. 共有メモリ関係の設定変更

/etc/sysctl.conf がある場合は、このファイルを以下のように編集

kern.sysv.shmmax=167772160
kern.sysv.shmall=65536
kern.sysv.shmmin=1
kern.sysv.shmseg=8
kern.sysv.shmmni=32

ない場合は、/etc/rc の64行目付近を以下のように編集

sysctl -w kern.sysv.shmmax=167772160 kern.sysv.shmmin=1 kern.sysv.shmmni=32 kern.sysv.shmseg=8 kern.sysv.shmall=65536

編集後、Macを再起動し、ターミナルを起動。以下のコマンドを打って変更が反映されているか確認。

$ sysctl -a | grep kern.sysv

kern.sysv.shmmax: 167772160
kern.sysv.shmmin: 1
kern.sysv.shmmni: 32
kern.sysv.shmseg: 8
kern.sysv.shmall: 65536
        : 

3. postgres というユーザーを作成

4. "su - postgres" でpostgresユーザーになって以下を実行

$ /usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data
$ /usr/local/pgsql/bin/pg_ctl -D /usr/local/pgsql/data -l postgres.log start
$ /usr/local/pgsql/bin/createdb test
$ /usr/local/pgsql/bin/psql test

5. 自動起動の設定 http://www.entropy.ch/software/macosx/postgresql/ より
 pgsql-startupitem-1.2.pkg.tar.gz をダウンロードしてインストール

設定

パスワード変更

ツール

pgAdmin4

クラウドでの運用

Amazon RDS for PostgreSQL

Azure Database for PostgreSQL

サポート

技術サポート

リンク集

関連製品


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2021-05-27 (木) 17:12:06 (1064d)