一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - ASP.NET教程 - Asp.Net 網站優化系列之數據庫優化措施 使用主從庫(全)

Asp.Net 網站優化系列之數據庫優化措施 使用主從庫(全)

2019-09-05 11:26asp.net之家 ASP.NET教程

網站規模到了一定程度之后,該分的也分了,該優化的也做了優化,但是還是不能滿足業務上對性能的要求;這時候我們可以考慮使用主從庫。

網站規模到了一定程度之后,該分的也分了,該優化的也做了優化,但是還是不能滿足業務上對性能的要求;這時候我們可以考慮使用主從庫。

主從庫是兩臺服務器上的兩個數據庫,主庫以最快的速度做增刪改操作+最新數據的查詢操作;從庫負責查詢較舊數據,做一些對實效性要求較小的分析,報表生成的工作。這樣做將數據庫的壓力分擔到兩臺服務器上從而保證整個系統響應的及時性。

SQL Server提供了復制機制來幫我們實現主從庫的機制。我們看下如何在sql server 2005中實踐:

實踐前需要新創建一個Test的數據庫,這個庫中建一個測試表。

1. 打開sql server企業管理器,在對象資源管理器里面選擇復制à本地發布,右鍵選擇新建發布
 Asp.Net 網站優化系列之數據庫優化措施 使用主從庫(全)

2. 打開新建發布向導,點下一步,選擇發布數據的數據庫
Asp.Net 網站優化系列之數據庫優化措施 使用主從庫(全)

3. 我們選擇Test數據庫,并點擊下一步,選擇發布類型
Asp.Net 網站優化系列之數據庫優化措施 使用主從庫(全)

這里我們選擇的是事務性發布,事務性發布保證數據在做更新之后盡可能快的分發到訂閱服務器上。有關其他幾種發布類型的使用場景請參考msdn
4. 點擊下一步,選擇要發布的對象,這里我們只對表進行發布
 Asp.Net 網站優化系列之數據庫優化措施 使用主從庫(全)
5. 點擊下一步進入篩選數據設置,這里我們要復制表的所有數據所以不做設置
 Asp.Net 網站優化系列之數據庫優化措施 使用主從庫(全)
6. 點擊下一步,指定何時運行快照,我們選擇初始話數據,并選擇默認的運行快照頻率
 Asp.Net 網站優化系列之數據庫優化措施 使用主從庫(全)
7. 繼續下一步,設置快照代理的運行賬戶,我們選擇sql server agent賬戶
 Asp.Net 網站優化系列之數據庫優化措施 使用主從庫(全)
8. 點擊下一步選擇創建發布,再次點擊下一步設置發布的名稱
 Asp.Net 網站優化系列之數據庫優化措施 使用主從庫(全)
9. 點擊完成,完成發布的設置,并創建發布,現在在本地發布出新添加了我們創建的發布
 Asp.Net 網站優化系列之數據庫優化措施 使用主從庫(全)

現在成功創建了發布,我們還需要創建訂閱:在本地訂閱文件夾上右擊新建訂閱,通過向導可以很容易的創建訂閱,創建訂閱時可以選擇以發布者推送或者訂閱者主動的方式創建。具體步驟如下:
1. 通過右鍵菜單打開新建訂閱,點擊下一步,選擇我們剛剛創建的發布作為訂閱源

Asp.Net 網站優化系列之數據庫優化措施 使用主從庫(全)
2. 選擇是以推送還是以主動請求的方式同步數據,我們選擇主動訂閱
 Asp.Net 網站優化系列之數據庫優化措施 使用主從庫(全)
3. 設置執行分發代理的賬戶
 Asp.Net 網站優化系列之數據庫優化措施 使用主從庫(全)
4. 設置代理請求同步的頻率
 Asp.Net 網站優化系列之數據庫優化措施 使用主從庫(全)
5. 設定是否立即做數據的初始化操作
 Asp.Net 網站優化系列之數據庫優化措施 使用主從庫(全)
6. 完成創建訂閱

Asp.Net 網站優化系列之數據庫優化措施 使用主從庫(全)

創建完成之后,我們可以通過在主庫表中插入n條數據,然后在從庫中查詢的方式驗證復制是否成功。

在Sql server2005中的復制創建起來很簡單,我們需要根據業務需要設定復制的類型和同步的頻率,下面我們談談如何有效的在程序中使用主從庫。

主從庫之間是一種發布訂閱的關系,發布者和訂閱者之間并非實時同步的,通常會有幾分鐘的延時,更有甚者會有幾個小時的延時。所以我們需要通過合理的使用來避開有延時這個問題。 

我們希望主庫盡可能的少參與查詢,來提高寫的及時性;同時要讓從庫在不影響讀出數據的準確及時的前提下盡可能的分擔主庫的壓力。 

主從兩個庫需要在配置文件中配置兩個連接字符串,CONN_Master和CONN_Slave。我們需要設定一些規則決定當前的查詢應該從主庫查還是需要從從庫查。這個規則沒有定式,只能根據業務需要來確定。下面我舉幾個例子來說明: 

1. 以豆瓣讀書書的詳細頁為假定場景,你可以點擊這里看下頁面的結構(我不是豆瓣的技術,在這里只是拿這個頁面舉例) 
我們來分析呈現這個頁面需要的數據和這些數據的實效性要求 
1) 書的詳細信息 時效性要求:要求及時 
2) 豆瓣成員的常用標簽 實效性:不需要很及時 
3) 喜歡讀這本書的人也喜歡讀的書 屬于分析數據,不需要很及時 
4) 最新書評 要求及時 
5) 讀這本書的幾個用戶 及時性不高 
6) 喜歡這本書的人常去的小組 屬于分析數據不需要很及時 
從上面的分析可以看出只有1),4)兩項數據需要從主庫讀,而2),3),5),6)為非及時數據從從庫讀取即可。當然我們可以對這些實效性不高的數據做緩存處理。 

2. 以論壇帖子列表頁面為假定場景,玩論壇的人都喜歡頂貼,把自己的帖子頂到第一頁讓更多的人關注,而對于50頁之后的帖子則反讀的人很少;我們可以根據這個業務邏輯特征來決定在用戶訪問前50頁帖子列表數據時從主庫讀,而當用戶訪問超過50頁之后的數據時則從從庫進行查詢。 

3. 以訂單為例,通常超過三個月的訂單就不會再有變化了,假定我們把訂單號設計為日期格式時,根據訂單號去查詢訂單時就可以根據訂單號來決定該訪問主庫還是從庫。 

舉了幾個適用的場景,我們以第三個場景為例,寫一段簡單的示意代碼看下 

復制代碼代碼如下:


//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; 



正確的使用主從庫,可以很好的提升系統的性能。使用主庫還是從庫的選擇權決定在業務邏輯的手里。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国产高清在线精品一区二区 | 黑人又大又硬又粗再深一点 | 狠狠色婷婷日日综合五月 | www.日本在线播放 | 暖暖暖免费观看在线观看 | 国产精品视频一区二区三区不卡 | 色花堂中文字幕98堂网址 | 特级毛片全部免费播放器 | 99热精品久久 | 国产女王女m视频vk 国产农村一级特黄α真人毛片 | 色老板美国在线观看 | 免费国产高清精品一区在线 | 青草久久精品亚洲综合专区 | 成人男女啪啪免费观看网站 | 深夜草莓视频 | 国产精品一区二区三区久久 | 日本 片 成人 在线 日b视频免费 | 欧美亚洲国产精品久久第一页 | 香蕉视频久久 | 乌克兰成人性色生活片 | 丁香五香天堂 | 性色AV乱码一区二区三区视频 | 鬼吹灯之天星术免费观看 | 国产精品色拉拉免费看 | 亚洲色图图 | 欧美一级片在线视频 | 女教师系列三上悠亚在线观看 | 好大夫在线个人空间 | 免费在线观看中文字幕 | 视频大全在线观看免费 | 极品主播的慰在线播放 | 国产精品片 | 色淫阁小说 | 亚洲午夜大片 | 极品 女神校花 露脸91 | 极品虎白女在线观看一线天 | 黄 色 成 年人在线 幻女free性俄罗斯第一次摘花 | 俄罗斯一级成人毛片 | 欧美日韩精品乱国产538 | 欧美久久久久久久一区二区三区 | 国产1区二区 |