SqlServer 併發系列之讀寫分離

2022-07-20 08:24:13 字數 991 閱讀 2772

資料庫處理高併發兩種方式 垂直和水平 區分

垂直區分[分布式資料庫]: 按模組獨立出單獨資料庫。

缺點:對系統各個模組設計要較高要求,高內聚低耦合,改造難度較大。

同時如果資料達到乙個新的臨界點,還是會存在訪問效能低下的可能,比如乙個訂單資料庫,訂單數量達到1000萬單。

水平區分[讀寫分離]: 劍聖分身的方式,分為 主資料庫(真身)和多個查詢資料庫(映象),主資料庫承擔 增刪改和實時性查詢 功能,

查詢伺服器承擔帶條件的大資料量的查詢。

讀寫分離好處

1.將讀和寫操作分離到不同的資料庫伺服器上.降低對主伺服器資源爭用。

2.主伺服器增刪改進行時,不影響查詢伺服器的查詢。降低阻塞的發生。

3.應用長鬚提交報表、不合理的查詢請求時,不會導致長時間的鎖表。

4.容災機制容許 主伺服器發生故障時,查詢伺服器接管使用者請求。

做法1.應用程式配置中設定兩個連線字串。乙個指向主伺服器,乙個指向查詢伺服器。

2.增刪改或者實時性查詢指向主伺服器的連線字串.

3.容許非實時的查詢及報表請求指向查詢伺服器的連線字串。

主伺服器資料同步技術引數

摘自 個人疑問和想法:

還看到一種做法是 是將5000萬條資料 切分到不同資料庫,每次插的時候 會先將資料和id的關係插入到乙個路由資料庫,查詢的時候先從路由資料庫查詢此id對應的資料庫,然後再去查改資料庫的資料。

這種方式旨在解決資料量過大的問題,似乎行之有效,每個資料庫的資料不相同。但是怎麼考慮容災機制? 

這兩種方式究竟如何取捨?

SQLServer之建立提交讀

語法 set transaction isolation level read committed。資料庫預設的是兩個會話事務之間是提交讀。read committed指定語句不能讀取已由其他事務修改但尚未提交的資料。這樣可以避免髒讀。其他事務可以在當前事務的各個語句之間更改資料,從而產生不可重複讀...

SQL Server邏輯讀 預讀和物理讀

預讀 用估計資訊,去硬碟讀取資料到快取。預讀100次,也就是估計將要從硬碟中讀取了100頁資料到快取。物理讀 查詢計畫生成好以後,如果快取缺少所需要的資料,讓快取再次去讀硬碟。物理讀10頁,從硬碟中讀取10頁資料到快取。邏輯讀 從快取中取出所有資料。邏輯讀100次,也就是從快取裡取到100頁資料。s...

併發程式設計系列之CLH鎖

clhlock作為自旋 公平併發鎖,其實現思路較為簡單。文中使用了threadlocal結構來維護每個執行緒的當前結點 currentnode 和前驅結點 prevnode 資訊。當前執行緒通過呼叫lock 方法,在前驅結點的voliate變數lock自旋,實現對共享資源的監聽。created by...