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

postgresで行われたクエリの履歴を取得することは可能ですか?

    データベース自体に履歴はありません。psqlを使用している場合は、「\s」を使用してコマンド履歴を表示できます。

    log_statement postgresql.confファイル内。代わりにおそらく必要なのは、 log_min_duration_statement 、これを0に設定すると、すべてのクエリとその期間がログに記録されます。これは、アプリが公開されたら役立つ場合があります。これを高い値に設定すると、最適化に役立つ長時間実行クエリのみが表示されます(そこで見つかったクエリに対してEXPLAIN ANALYZEを実行して、その理由を理解できます)。遅いです。

    この領域で知っておくと便利なもう1つの点は、psqlを実行して「\ timing」と指定すると、その後のすべてのステートメントにかかる時間が表示されることです。したがって、次のようなSQLファイルがある場合:

    \timing
    select 1;
    

    適切なフラグを使用して実行し、各ステートメントが所要時間とインターリーブされていることを確認できます。結果は次のようになります。

    $ psql -ef test.sql 
    Timing is on.
    select 1;
     ?column? 
    ----------
            1
    (1 row)
    
    Time: 1.196 ms
    

    これは、構成ファイルを変更する場合とは異なり、データベースのスーパーユーザーである必要がないため便利です。また、新しいコードを開発してテストしたい場合は、使いやすくなっています。



    1. CodeIgniterPDOデータベースドライバーが機能しない

    2. SQLServerで「サーバーがデータアクセス用に構成されていない」を修正する方法

    3. SQL Server:すべてのテーブルのすべての行を削除します

    4. MySQLのcaseステートメント