pg_stat_activityビューには、トランザクションID情報を追跡するための2つの新しい列(backend_xid / backend_min)が含まれていました。 pg_stat_activity.backend_xid列は、現在実行が開始されている最上位トランザクションのIDをカバーし、pg_stat_activity.backend_xmin列は、実行中の最小限のXIDの情報をカバーします。以下の2つの異なる状況で実行された2つのクエリ出力を確認してください。最初の1つは、同じ行でロック(テーブル/行)を取得しようとしているセッションのbackend_xmin列にトランザクションIDの階層情報を示していますが、もう1つは、邪魔されずに発生する独立したトランザクションです。同じ行。この種の情報は、ユーザーがデータベースで見つかったクエリを待機しているときにトランザクションについて詳しく知るのに役立ちます。
postgres=# select pid,backend_xid,backend_xmin,query from pg_stat_activity where pid<>pg_backend_pid();
pid | backend_xid | backend_xmin | query
-------+-------------+--------------+---------------------------
22351 | 1905 | 1904 | insert into a values (1);
785 | 1904 | | insert into a values (1);
12796 | | 1904 | truncate a;
12905 | | 1904 | delete from a ;
postgres=# select pid,backend_xid,backend_xmin,query from pg_stat_activity where pid<>pg_backend_pid();
pid | backend_xid | backend_xmin | query
-------+-------------+--------------+-----------------------------
22351 | | | insert into foo values (1);
785 | 1900 | | insert into foo values (1);
(2 rows)
CREATE TABLESPACE / ALTER TABLESPACEの新しい句は、それぞれ「with」および「move」オプションとして使用されます。同様に、メタコマンドdb +は、「with」オプションを使用して特定のTABLESPACEに設定されたパラメーターに関する詳細情報を提供します。
postgres=# h create tablespace
Command: CREATE TABLESPACE
Description: define a new tablespace
Syntax:
CREATE TABLESPACE tablespace_name
[ OWNER user_name ]
LOCATION 'directory'
[ WITH ( tablespace_option = value [, ... ] ) ]
Example:
postgres=# create tablespace t1 location '/usr/local/pgpatch/pg/ts' with (seq_page_cost=1,random_page_cost=3);
CREATE TABLESPACE
postgres=# db+
List of tablespaces
Name | Owner | Location | Access privileges | Options | Description
------------+----------+--------------------------+-------------------+--------------------------------------+-------------
pg_default | postgres | | | |
pg_global | postgres | | | |
t1 | postgres | /usr/local/pgpatch/pg/ts | | {seq_page_cost=1,random_page_cost=3} |
(3 rows)
タイプregclass、regproc、regprocedure、regoper、regoperator、およびregtypeに関する情報を提供する新しいシステム関数。すべてのタイプで、新しい関数はto_regclass()、to_regproc()、to_regprocedure()、to_regoper()、to_regoperator()、to_regtype()です。
Example:
select to_regclass('pg_catalog.pg_class'),to_regtype('pg_catalog.int4'),to_regprocedure('pg_catalog.abs(numeric)'),to_regproc('pg_catalog.now'),to_regoper('pg_catalog.||/');
to_regclass | to_regtype | to_regprocedure | to_regproc | to_regoper
-------------+------------+-----------------+------------+------------
pg_class | integer | abs(numeric) | now | ||/
(1 row)
役割のメンバーシップを指定するためのコマンドラインユーティリティCREATEUSERの新しい「-g」オプション。
-bash-4.1$ createuser -g rw -p 10407 r1
-bash-4.1$ psql -p 10407
psql (9.4beta1) Type "help" for help.
postgres=# dg
List of roles
Role name | Attributes | Member of
-----------+------------------------------------------------+-----------
postgres | Superuser, Create role, Create DB, Replication | {}
r1 | | {rw}
pg_stat_all_tablesビューには、新しい列「n_mod_since_analyze」があります。この列は、テーブルが最後に分析されてから変更された行数を強調表示します。以下の出力は、「n_mod_since_analyze」列の変更、最初の手動分析の実行、およびテーブルで自動バキュームが呼び出された後の簡単な出力です。この期間中に、さまざまなカタログ更新呼び出しで影響を受けた行数を把握できます。
postgres=# analyze a;
ANALYZE
postgres=# select relname,last_autoanalyze,last_analyze,n_mod_since_analyze from pg_stat_all_tables where relname='a';
relname | last_autoanalyze | last_analyze | n_mod_since_analyze
---------+------------------+-------------------------------+---------------------
a | | 2014-05-03 02:09:51.002006-07 | 0
(1 row)
postgres=# insert into a values(generate_series(1,100));
INSERT 0 100
postgres=# select relname,last_autoanalyze,last_analyze,n_mod_since_analyze from pg_stat_all_tables where relname='a';
relname | last_autoanalyze | last_analyze | n_mod_since_analyze
---------+------------------+-------------------------------+---------------------
a | | 2014-05-03 02:09:51.002006-07 | 100
(1 row)
postgres=# truncate a;
TRUNCATE TABLE
postgres=# select relname,last_autoanalyze,last_analyze,n_mod_since_analyze from pg_stat_all_tables where relname='a';
relname | last_autoanalyze | last_analyze | n_mod_since_analyze
---------+------------------+-------------------------------+---------------------
a | | 2014-05-03 02:09:51.002006-07 | 100
(1 row)
postgres=# select relname,last_autoanalyze,last_analyze,n_mod_since_analyze from pg_stat_all_tables where relname='a';
relname | last_autoanalyze | last_analyze | n_mod_since_analyze
---------+-------------------------------+-------------------------------+---------------------
a | 2014-05-03 02:14:21.806912-07 | 2014-05-03 02:09:51.002006-07 | 0
(1 row)
pg_stat_archiverは、生成されたすべてのWALを追跡するために導入された新しいビューであり、失敗したWALのカウントもキャプチャします。 Oracleの場合、これは「アーカイブログリスト」のようなものです。
postgres=# select * from pg_stat_archiver ;
-[ RECORD 1 ]------+------------------------------
archived_count | 167
last_archived_wal | 00000001000000000000009B
last_archived_time | 2014-05-02 20:42:36.230998-07
failed_count | 75
last_failed_wal | 000000010000000000000012
last_failed_time | 2014-05-01 12:09:57.087644-07
stats_reset | 2014-04-30 19:02:01.288521-07
pg_stat_statements、拡張モジュールには、ステートメントの解析ツリーから計算された内部ハッシュコードを追跡するための新しい列queryidがあります。
postgres=# select queryid,query from pg_stat_statements;
queryid | query
------------+------------------------------------
1144716789 | select * from pg_stat_statements ;
(1 row)
ありがとうございます。