sql >> データベース >  >> RDS >> PostgreSQL

PostgreSQL9.4の改善点はほとんどありません

    PostgreSQL 9.4のベータリリースでは、DBAにpg_prewarm、JSONB、ALTER SYSTEM、レプリケーションスロットなどのいくつかの優れた機能が提供されています。このバージョンで提示された多数のアーキテクチャレベルの機能のうち、同様に、このブログでカバーしようとした他のいくつかのマイナーな機能強化があります。

    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)

    ありがとうございます。


    1. MySQLまたはMariaDBデータベースに接続する方法

    2. SQLでDateTime形式から時刻を取得するにはどうすればよいですか?

    3. postgresで指数移動平均を計算する方法は?

    4. AndroidはSQLiteのデータベースバージョンをどこに保存しますか?