状況 :
私はテーブルAを持っています。
大量のデータをテーブルAにロードしたい(たとえば、数百万レコード以上)
さて、オプションなどを探して、ロード時にテーブルのインデックスを無効にする必要があるという結論に達しました。
* alter index your_index unusable; *
しかし、ロード中に他のプロセスやシステムがテーブルAのデータを検索し、テーブルAにデータを挿入する可能性があります。したがって、次を使用する必要があります。
*システム設定の変更skip_unusable_indexes=true; *
データがロードされた後、インデックスを再構築し、フラグをクリアします。
ここに質問があります:
クエリは私のインデックスを使用します(使用不可に設定されている場合)-大きなテーブルについて話しているのですが、インデックスがないとタイムアウトします
1が真の場合、インデックスを再構築する前に新しく挿入されたレコード(つまり、バルクロードではなく他のプロセスを介して挿入されたレコード)はどうなりますか?クエリされたときに返されますか?あるセッションでインデックスを部分的に再構築/無効にして、他のセッションで保持することは可能ですか?
つまり、大規模なシステムではそれほど珍しい状況ではないはずです。ロードするデータはたくさんありますが、システムは応答性を維持する必要があります。
要約すると、パーティショニングとパーティション交換は進むべき道のように見えます