問題の説明
ApsaraDB RDS for PostgreSQLインスタンスでSQLステートメントを実行すると、次のエラーメッセージが表示されます。
エラー: 一時的なファイルサイズがtemp_file_limit(8388608kb) を超えています原因
SQL文を実行すると、大きな一時テーブルが生成され、一時テーブルが占有するストレージがtemp_file_limitパラメーターで指定された上限を超えます。
解決策
一時テーブルが占有できるストレージの上限を照会し、上限を増やします。
データ管理 (DMS) を使用してRDSインスタンスにログインします。 詳細については、「DMSを使用したApsaraDB RDS For PostgreSQLインスタンスへのログイン」をご参照ください。
DMSコンソールの左側のナビゲーションウィンドウで、必要なデータベースをダブルクリックします。 SQLConsoleタブが表示されます。
[SQLConsole] タブで、次の文を入力し、[実行] をクリックして、一時テーブルが占有できるストレージの上限を照会します。
temp_file_limitを表示します。[SQLConsole] タブで、次の文を入力し、[実行] をクリックして、一時テーブルが占有できるストレージの上限を増やします。
alter role all set temp_file_limit = [$Temp_File_Limit];説明[$Temp_File_Limit] は、一時テーブルが占有できるストレージの新しい上限を指定します。 (単位:KB) このパラメーターの値は、エラーメッセージに記載されている一時テーブルのサイズよりも大きくなければなりません。 たとえば、エラーメッセージに記載されている一時テーブルのサイズが
8388608kbの場合、このパラメーターを20000000kbに設定することを推奨します。[SQLConsole] タブを閉じ、[SQLコンソール] タブをクリックします。 [SQLConsole] タブで、次の文を再実行して、一時テーブルを占有できるストレージの新しい上限が適用されていることを確認します。
temp_file_limitを表示します。SQL文を再実行して, エラーメッセージが表示されないことを確認してください。
説明SQL文を実行して一時的なクエリを実行する場合は、SQL文の実行後に上限値を元の値に戻すことを推奨します。 上限を元の値に復元しないと、一時テーブルがRDSインスタンスのストレージを使い果たし、RDSインスタンスがロックされる可能性があります。
適用範囲
ApsaraDB RDS for PostgreSQL