-3

Oracle データベースを最適化しています。テーブルへの同時10リクエストの書き込みと10テーブルへの同時10リクエストの書き込みの間のIOパフォーマンスについて混乱しています

そして、10個のタイプのデータが1つのテーブルに格納できる場合-> 1つまたは10個のテーブルの間にデータを挿入して最高のパフォーマンスを実現する方法

誰もそれについて知っていますか?

4

1 に答える 1

2

パフォーマンス チューニングは大きなトピックであり、最初から情報が少なすぎて質問に答えることはできません。しかし、いくつかの基本的な指針を提供しようとします。

私が正しければ、主に、現在単一のテーブルへの挿入のパフォーマンスに関心があります。

最初のステップは、実際にパフォーマンスを制限しているものを見つけることです。いくつかのシナリオを考えてみましょう:

  • ディスク I/O: ディスクが遅い。したがって、入手できる最速のディスクを入手してください。これは、SSD を意味する可能性があります。それらをパフォーマンス用に調整された RAID に入れます。私の知る限り、「ストライピング」がキーワードです。もちろん、SSD は失敗します。HD と同じように、そのための計画を立てる必要があります。HD は、完全にいっぱいでない場合にも高速です (実際に確認したことはありません)。分割されたテーブルも同様に役立つ場合があります (以下を参照)。しかし、ほとんどの場合、I/O 負荷を減らすことができます。これは、より多くのより高速なハードウェアよりもはるかに効率的です...

  • ロックの競合 (主キーなど)。パーティション化されたテーブルとインデックスが解決策になる場合があります。パーティション化されたテーブルは、論理的には 1 つのテーブルです (通常のテーブルと同じように選択して書き込むことができます) が、内部的にはデータが複数のテーブルに分散されます。パーティション化されたインデックスは似ていますが、インデックスです。新しい値が追加されると一意のキーの基になるインデックスがロックされるため、2 つのセッションが同じ値を挿入できないため、これが役立つ場合があります。値が n 個のインデックスに分散されている場合、そのようなロックでの競合が減少する可能性があります。また、パーティションはさまざまなテーブルスペース/ディスクに分散できるため、物理的なものを待つ時間が少なくなります.

  • 非常に制約を受けるまでの時間: テーブルに制約がある場合、彼らは仕事をするのに時間が必要です。バッチ挿入を行う場合は、遅延制約を考慮する必要があります。それらは、すべての挿入ではなく、コミット時にのみチェックされます。アプリケーションに注意すれば、それらを無効にして、後でチェックせずに有効にすることもできます。これは高速ですが、もちろん、制約が実際に保持されていることを本当に確認する必要があります。もちろん、適切に実行するために必要なすべてのインデックスが制約に含まれていることを確認する必要があります。

  • バッチ挿入について話しています。直接ロードを調べたい場合は、http: //docs.oracle.com/cd/A58617_01/server.804/a58227/ch_dlins.htm (これは Oracle 8 バージョンだと思います。更新されたドキュメントがどこかにあることを確認してください)

それをまとめるために。パフォーマンスの問題がどこにあるかを正確に知らなければ、それを修正する方法を知る方法はありません。問題がどこにあるかを見つけてから、より正確な質問をして戻ってきてください。

于 2013-06-28T08:13:39.483 に答える