タイムアウト
Supabaseはデフォルトで、命令文の最大実行時間を、anonキーを使ってAPIにアクセスしているユーザーは3秒に、認証されたユーザーは8秒に制限しています。さらに、すべてのユーザーには、2分というグローバルな制限が適用されます。これは、クエリの書き方が悪かったり、乱用されたりすることによるリソースの枯渇を防ぐための措置です。
デフォルトのタイムアウトを変更
タイムアウトの値は、大部分のユースケースにおいて妥当なデフォルト値として選択されていますが、alter role
文を使用しても変更できます。
alter role authenticated set statement_timeout = '15s';
また、セッションの命令文のタイムアウトを更新もできます。
set statement_timeout to 60000; -- 1 minute in milliseconds
命令文の最適化
すべてのSupabaseプロジェクトには、pg_stat_statements
という拡張がインストールされています。この拡張は、プロジェクトに対して実行されたすべての命令文の計画と実行の統計を追跡します。これらの統計は、プロジェクトのパフォーマンスを診断するために使用できます。
このデータはさらに、Postgresのexplain
機能と組み合わせて使用することで、使用方法を最適化できます。