国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

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

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; 



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

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 激情视频综合网 | 久久xx| 一级久久 | 中文字幕在线免费 | 激情久久av一区av二区av三区 | 特级毛片在线大全免费播放 | 久久国产精品久久精品国产演员表 | 欧美日韩电影一区二区三区 | 成人a级片在线观看 | 欧美一区免费 | 亚洲另类视频 | 亚洲精品在线中文字幕 | 亚洲成人三级 | 精品无码三级在线观看视频 | 日韩欧美国产一区二区 | 久久久精品亚洲 | 久久久国产一区二区三区 | 国产成人一级片 | 99热热热 | 免费在线成人网 | 国产黄a三级三级看三级 | 伊人在线| 久久综合亚洲精品 | 毛片网免费 | 成人激情在线观看 | 国产一区网站 | 91亚洲国产 | 米奇777超碰欧美日韩亚洲 | 国产视频福利 | 亚洲国产精品久久 | 欧美在线一区二区 | 男女18免费网站视频 | 久久久精品网 | 欧美成人免费视频 | 国产欧美日韩在线 | 国产女人爽到高潮免费视频 | 精品视频免费在线 | 亚洲精品久久久久久久久久久 | 国产成人精品免费视频大全最热 | а_天堂中文最新版地址 | 日韩成人免费电影 |