この記事は機械翻訳のミラー記事です。元の記事にジャンプするにはこちらをクリックしてください。

眺める: 16305|答える: 0

[出典] データベースのマスタースレーブ遅延はクエリ解決の不正確さを引き起こします

[リンクをコピー]
2020年4月2日 20:41:03に投稿 | | | |
【序文】

データ量が一定に達すると、データベースがシステム全体のボトルネックとなり、最適化戦略として一般的に読み書き分離が採用されます。データベースはメインデータベースから分割することで読み書き分離を実現します(メインデータベースからの書き込み要求操作、データベースからの読み取り要求操作)。

【データ遅延解決のアイデア】

1. マスター・スレーブ同期の原理(ここでは最も人気のあるMySQLを例に挙げます)

以下は、binlogを使ったクラシックなMySQLマスター・スレーブデータ同期の概説図です:



2. 問題はどのように発生するのか?

1. 上記の回路図から、マスター・スレーブ同期には遅延があり、それが遅延サイズに影響を与えることが容易に分かります。

(1) 遅延の大きさは、前回の同期から現在まで生成されるデータ量に依存します

(2) サーバー間の現在のネットワーク状況

(3) マスタースレーブサーバー自体の負荷(CPU、メモリ、IOなど)

2. データベースサービスは一般的にイントラネット上にあり、サーバーは購入時に設定上位(実際の必要量より高く)されるため、同期は基本的に非常に高速で、一般的にミリ秒単位で行われます。

3. 一般的なビジネスシナリオでは、ミリ秒遅延は無視できます。



4. 一般ケースと特殊なケースがあり、一部の特殊な状況ではリアルタイムのミリ秒の時間差が必要です。 これらの特別な状況に対する一般的な解決策をご紹介します。

3. データレイテンシソリューション:

1. スキーム1:プログラムを二重に書く(メインデータベースを書き込みながら同時にデータベースを読み込む)



2. スキーム2:プログラムを読み込んでメインデータベースを確認する



3. スキーム3:メインデータベースを書き込みキャッシュを書き込む(通常はデータベース同期の最大遅延よりやや長くする有効期限を設定し)、プログラムを読み込み、キャッシュを読み込み、スレーブデータベースを読み込む



4. 3つのスキームの利点と欠点:

1. スキーム1:二重書き込みは一定の性能を消費し、実装は比較的簡単で、高並行書き込みシナリオには適していません。

2. スキーム2:読み取りプログラムはメインライブラリのパフォーマンスに影響を与えます。メインライブラリは実装が比較的簡単で、高同時読出のシナリオには適していません。

3. スキーム3:ほとんどの場合、読み書きと書き込みはより多くの書き込み性能を消費し、実装がより複雑で、高負荷の同時読み書きの両方に適しています(キャッシュの読み書きは非常に高速です)。

【概要】

1. 実行は重要ですが、それ以上に重要なのはアイデアです。

2. 多くの根底にある原理や考え方は普遍的である
翻訳元:https://blog.csdn.net/zhanghan18 ... le/details/91638443




先の:.net/c# ado.net 戻り値付きのストアドプロシージャを実行します
次に:MSSQL (NOLOCK)のダーティリード
免責事項:
Code Farmer Networkが発行するすべてのソフトウェア、プログラミング資料、記事は学習および研究目的のみを目的としています。 上記の内容は商業的または違法な目的で使用されてはならず、そうでなければ利用者はすべての結果を負うことになります。 このサイトの情報はインターネットからのものであり、著作権紛争はこのサイトとは関係ありません。 ダウンロード後24時間以内に上記の内容を完全にパソコンから削除してください。 もしこのプログラムを気に入ったら、正規のソフトウェアを支持し、登録を購入し、より良い本物のサービスを受けてください。 もし侵害があれば、メールでご連絡ください。

Mail To:help@itsvse.com