主に次の側面からのSQL Server並行性の高いソリューション:
1.SQLの文の最適化:
A.正確にクエリ条件とクエリフィールドとして、(ページングクエリの使用を含む)検索結果を絞り込みます。
できるだけにおけるB.クエリ:のような、(ない)で、(ない)別個の順、nullの場合、COUNT(*)、=、<> ;!
C.は、フィールドクエリのない機能動作を実行します。
例えば:AAストリング( 'aa123'、1,2)= 'A' が、それがあるべき:. 'Aa123を 'のAA%' のような、インデックスに適用---
。B-B 'A' + '123' = 'aa123'、それがあるべきである: 'AA' =左( 'aa123'、2)
D.判定データが存在している、TOP 1を使用していませんが、次のようになります。EXITS
複雑なSQLクエリのE.、ストアドプロシージャは、(ビューがあまりにも複雑ではない)を直接使用するか、またはSQLビューを作成することができます。
、カーソルでできるだけ少ないトリガとしてF.。
表2の設計の最適化:
長手方向のパーティションテーブルのA.設計、特定の原理に従ってテーブル(読者は、フィールド周波数に応じて設計することができる)(オフ)主キークエリとの間の相関を使用して、複数のテーブルに対応するように設計されています。
横方向のパーティションテーブルのB.設計値に応じて使用されるデータテーブル(例:唯一の有効なデータは過去3ヶ月でのみ使用される)は、データテーブルの量を低減するため、バックアップデータを転送します。
C.パーティションテーブルデータは、テーブル内のデータがハードディスクIOの負担を軽減するために、一定のルールに従って店舗テーブルに物理パーティションを確立するために、物理的なデザインを格納するステップと
D.は、適切なインデックス(クラスタ化インデックスと非クラスタ化インデックス)を確立します。
3.トランザクションの最適化を設定します。
そこ:(トランザクションに有効なトランザクション分離レベル分離レベル、ロックが各SQL文に作用しながら)
分離レベル |
ダーティー読み取り |
非反復可能読み取り |
ファントム |
説明 |
対応するロックまたは等価物を生成します |
非コミット読み取り(コミットされていない読み取り) |
それはあります |
それはあります |
それはあります |
別のトランザクション更新した場合、関係なく、かどうかは、即時実施を提出します |
NOLOCK |
コミット(デフォルトでコミット読み取り)を読みます。 |
ノー |
それはあります |
それはあります |
提出されたデータを読み込みます。別のトランザクションの更新は提出しなかった場合には、待って |
HOLDのLOCK |
反復可能読み取り(反復可能読み取り) |
ノー |
ノー |
それはあります |
お問い合わせの際、他のトランザクションの更新を許可していません。 |
HOLDのLOCK |
直列化(シリアライズ) |
ノー |
ノー |
ノー |
お問い合わせの際、他の業務挿入またはDELETを許可していません。 |
HOLDのLOCK |
A.トランザクション分離の原則:読んで、排他的な書き込み共有を意味し、:厳密にすることができます、必要でない場合は、クエリを実行する場合、データの一貫性が厳しい場合は、再読み込み(反復可能読み取り)分離レベルすることができ私たちは、非コミット読み取りを使用することをお勧めします(非コミット読み取り)分離レベル。
4.サーバーのハードウェアの最適化:
A.コアハードウェアのパフォーマンスサーバーのメモリ、ハードドライブなど。もちろん、より強く、より良いです。
B.は、後で複数のサーバーを確立し、高い計算速度を得られるように複数のコンピュータを用いた並列計算を可能にするために、クラスタ化され、複数のコンピュータは、バックアップのために使用することができるので、機械または通常動作にシステム全体の任意の悪いこと。
C.確立DBミラー同期、及び多段分離にサーバによって読み取ら、すなわち:一又は許可指定された更新プログラムを有する複数のサーバに加えて、データのみミラー同期などサーバーの残りの部分は、唯一のクエリを更新することができません。