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

DBAの〜/.psqlrcファイル

    通常のDBAモニタリングでは、pg_catalogクエリの非常に多くの組み合わせを使用して、トランザクション内の、待機中のクエリ、接続数などの情報を取得します。ほとんどのDBAは、ビューを作成して短い大きな組み合わせクエリをカットします。要件ごとに後で使用できるように手元に置いておきます。

    PostgreSQLは、psqlユーティリティで使用するときにデータベースに接続する前に実行されるスタートアップファイル(.psqlrc)を提供します。 .psqlrcファイルを使用すると、「set」コマンドを使用して1つの単語エイリアスですべての重要なクエリを配置し、大きなクエリを入力する代わりにpsqlターミナルで実行できます。 「postgres」ユーザーのホームディレクトリに.psqlrcファイルが表示されない場合は、明示的に作成できます。試してみたところ、とても役に立ちました。

    .psqlrcのポイント:
    • .psqlrcはスタートアップファイルであり、クラスターに接続するときに実行されます。
    • .psqlrcファイルは「postgres」ユーザーのホームディレクトリにあります。
    • psqlオプション-Xまたは-c、.psqlrcファイルを読み取らないでください。
    • .psqlrcファイルは、データベースレベルではなく、完全なセッションレベル用です。

    私の端末のスクリーンショット:

    これを実装する方法を見てみましょう。

    構文:

    set <alias-variable-name>  'query'
    注:クエリに一重引用符または二重引用符が含まれている場合は、クエリで「または」を使用してください。 エイリアスを使用して.psqlrcファイルに入れるサンプルクエリ:
    vi ~/.psqlrc

    set PAGER OFF

    set waits 'SELECT pg_stat_activity.procpid, pg_stat_activity.current_query, pg_stat_activity.waiting, now() - pg_stat_activity.query_start as "totaltime", pg_stat_activity.backend_start FROM pg_stat_activity WHERE pg_stat_activity.current_query !~ '%IDLE%'::text AND pg_stat_activity.waiting = true;;'

    set locks 'select pid,mode,current_query from pg_locks,pg_stat_activity where granted=false and locktype='transactionid' and pid=procpid order by pid,granted;;'

    :wq!

    使用法:

    postgres=# :waits
    procpid | current_query | waiting | totaltime | backend_start
    ---------+-------------------------------+---------+-----------------+----------------------------------
    9223 | insert into locks VALUES (1); | t | 00:00:18.901773 | 2011-10-08 00:29:10.065186+05:30
    (1 row)

    postgres=# :locks
    pid | mode | current_query
    ------+-----------+-------------------------------
    9223 | ShareLock | insert into locks VALUES (1);
    (1 row)

    役に立たなかった。楽しみ… :)。もう少しのもので戻ってきます。


    1. ストアドプロシージャの結果セットの列定義を取得します

    2. MariaDBでDEGREES()がどのように機能するか

    3. JSON_STORAGE_SIZE()–MySQLでJSONドキュメントのストレージサイズを検索する

    4. HibernateでPostgreSQLLTREE列をマッピングするときにエラーが発生する