Asp.Net Webサイト最適化データベース最適化対策メインスレーブライブラリ使用(下)


前編ではプライマリ・スレーブ・ライブラリを構成しましたが、プログラムでプライマリ・スレーブ・ライブラリを使用してみましょう.
プライマリ・スレーブ・ライブラリ間はパブリケーション・サブスクリプションの関係であり、パブリケーションとサブスクライバ間はリアルタイムで同期されず、通常は数分の遅延があり、さらには数時間の遅延があります.だから私たちは合理的な使用を通じて遅延という問題を避ける必要があります.
メインライブラリができるだけクエリーに参加しないことを望んで、書くタイムリー性を高めます.同時に,スレーブライブラリが読み出しデータの正確かつタイムリーに影響を及ぼさないことを前提に,マスターライブラリの圧力をできるだけ分担させる.
プライマリスレーブ2つのライブラリで2つの接続文字列を構成する必要があります.CONN_MasterとCONN_Slave.現在のクエリーがプライマリ・ライブラリから調べるべきか、ライブラリから調べるべきかを決定するルールを設定する必要があります.このルールは定式化されておらず、ビジネスのニーズに応じてしか確定できません.次に、いくつかの例を挙げて説明します.
1.豆弁読書本の詳細ページを仮定するシーンでは、ここをクリックしてページの構造を見ることができます(私は豆弁の技術ではありません.ここではこのページを例に挙げるだけです)このページを表示するために必要なデータとこれらのデータの実効性を分析する1)本の詳細情報の時効性要求:タイムリーな2)豆弁メンバーの常用ラベルの実効性:タイムリーな3)この本を読むのが好きな人も読むのが好きな本は分析データに属している.タイムリーではない4)最新書評要求タイムリー5)この本を読む数人のユーザはタイムリー性が高くない6)この本が好きな人がよく行くグループは,分析データが必要でないことをタイムリーに上の分析から見ることができるのは1),4)2つのデータはメインライブラリから読む必要があるが,2),3),5),6)は,タイムリーではないデータはライブラリから読み取ることができる.もちろん、これらの実効性の低いデータをキャッシュ処理することができます.
2.フォーラムの招待状のリストのページを仮定のシーンとして、フォーラムを游ぶ人はすべて贴るのが好きで、自分の招待状を第1ページに顶いてもっと多くの人に関心を持たせて、50ページの后の招待状に対して反読する人は少ないです;このビジネスロジックの特徴に基づいて、ユーザーが最初の50ページの投稿リストデータにアクセスしたときにプライマリ・ライブラリから読み、ユーザーが50ページを超えたデータにアクセスしたときにライブラリからクエリーすることを決定できます.
3.注文を例にとると、通常3ヶ月を超える注文は変更されません.注文番号を日付形式に設計した場合、注文番号に基づいて注文を照会すると、注文番号に基づいてメインライブラリにアクセスするか、ライブラリにアクセスするかを決定できます.
いくつかの適用シーンを挙げて、私たちは3番目のシーンを例にして、簡単な概略コードを書いて見てみましょう.
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 //orderNo 20100528120105000001 yyyyMMddHHmmss + public OrderInfo GetOrder( string orderNo) { string connString = ConnStringGetter.GetForOrder(orderNo); using (SqlConnection conn = new SqlConnection(connString)) { ... } }
  public class ConnStringGetter { public static string GetForOrder( string orderNo) { int year = int .Parse(orderNo.Substring(0,4)); int money = int .Parse(orderNo.Substring(4,2)); int date = int .Parse(orderNo.Substring(6,2)); DateTime orderTime = new DateTime(year, money, date);
  TimeSpan ts = DateTime.Now - orderTime; // if (ts.TotalDays > 30) return ConfigurationManager.ConnectionStrings[ "CONN_Slave" ].ConnectionString; return ConfigurationManager.ConnectionStrings[ "CONN_Master" ].ConnectionString; } }
プライマリ・スレーブ・ライブラリを正しく使用すると、システムのパフォーマンスが向上します.プライマリ・ライブラリを使用するか、ライブラリの選択権からビジネス・ロジックに決定します.
http://www.cnblogs.com/yukaizhao/archive/2010/06/03/sql-server-master-slave-mode-impl.html