0

質問はすべてタイトルにあり、

1億行のテーブルでクラスタークエリを強制終了すると、データベースにとって危険ですか?

クエリは現在 2 時間実行されており、明日の朝 (できれば残り 12 時間) テーブルにアクセスする必要があります。

私のデータベースはraid ssdとBi-Xeonプロセッサで実行されています。

賢明なアドバイスをありがとう。

シド

4

2 に答える 2

2

いいえ、リスクなしでクラスター操作を強制終了できます。操作が完了する前は、元のテーブル ファイルとインデックス ファイルは何も変更されていません。マニュアルから:

インデックス スキャンを使用すると、インデックス順にテーブル データを含むテーブルの一時コピーが作成されます。テーブルの各インデックスの一時コピーも作成されます。したがって、少なくともテーブル サイズとインデックス サイズの合計に等しい空き領域がディスク上に必要です。

シーケンシャル スキャンと並べ替えを使用する場合、一時的な並べ替えファイルも作成されるため、ピーク時に必要な一時領域は、テーブル サイズの 2 倍にインデックス サイズを加えたものになります。

于 2012-04-24T16:12:50.947 に答える
0

@Frankが指摘しているように、そうしてもまったく問題ありません。

将来このクエリを実行する必要があり、サービス ウィンドウの余裕があり、ダウンタイムを許容できると仮定すると、いくつかの設定を微調整してパフォーマンスを少し向上させることができます。

あなたの構成では:

  1. ファイルシステムへのスループットを高めるために、fsync をオフにします。

Fsync は、ファイル システム同期の略です。fsync をオンにすると、データベースはページ フラッシュごとにファイル システムがコミットするのを待ちます。

  1. maintenance_work_mem を最大化する

生産時間中には割り当てられないため、使用可能なすべてのメモリを取得しても問題ありません。テーブルと作業中のインデックスの大きさはわかりませんが、メイン メモリに完全にロードできると、処理が速くなります。

于 2012-04-24T16:38:35.647 に答える