複製鏈接
請複製以下鏈接發送給好友

讀寫分離

鎖定
為了確保數據庫產品的穩定性,很多數據庫擁有雙機熱備功能。也就是,第一台數據庫服務器,是對外提供增刪改業務的生產服務器;第二台數據庫服務器,主要進行讀的操作。·
中文名
讀寫分離
外文名
Read/Write Splitting
原    理
讓主數據庫處理事務性增、改、刪操作,而從數據庫處理SELECT查詢操作
誕生原因
為了確保數據庫產品的穩定性

讀寫分離簡介

讀寫分離(Read/Write Splitting)。
1.原理:讓主數據庫(master)處理事務性增、改、刪操作(INSERT、UPDATE、DELETE),而從數據庫(slave)處理SELECT查詢操作。
2.誕生原因:
2.1 為了確保數據庫產品的穩定性,很多數據庫擁有雙機熱備功能。也就是,第一台數據庫服務器,是對外提供增刪改查業務的生產服務器;第二台數據庫服務器,僅僅接收來自第一台服務器的備份數據(注意,不同數據庫產品,第一台數據庫服務器,向第二台數據庫服務器發送備份數據的方式不同)。當第一台數據庫崩潰後,第二台數據庫服務器,可以立即上線來代替第一台數據庫服務器,並且,在第一台數據庫服務器崩潰後,寶貴的數據,依然會存在於第二台數據庫服務器裏(根據目前業界的備份數據發送方式來看,當第一台數據庫崩潰後,第一台數據庫裏的仍然會有少量的新數據,沒能來得及被髮送到第二台數據庫服務器,所以,這部分數據就丟失了)。
2.2 一般來説,為了配置方便,以及穩定性,這兩台數據庫服務器,都用的是相同的配置(思考一下,如果兩台服務器的配置不同,會導致什麼結果)。
2.3 從上文的描述中,大家能看到,在實際運行中,第一台數據庫服務器的壓力,遠遠大於第二台數據庫服務器。因此,很多人希望合理利用第二台數據庫服務器的空閒資源。那麼,第二台數據庫服務器能做些什麼事情呢?
2.4 從數據庫的基本業務來看,數據庫的操作無非就是增刪改查這4個操作。但對於“增刪改”這三個操作,如果是雙機熱備的環境中做,一台機器做了這三個操作的某一個之後,需要立即將這個操作,同步到另一台服務器上。單向的同步,不復雜。但如果兩台機器都需要向對方進行同步,那邏輯就非常複雜,而且還會大大降低性能。(從保證ACID特性的角度,思考一下為什麼雙向同步會非常複雜且低性能?而單向同步卻不會?)出於這個原因,第二台備用的服務器,就只做了查詢操作。進一步,為了降低第一台服務器的壓力,乾脆就把查詢操作全部丟給第二台數據庫服務器去做,第一台數據庫服務器就只做增刪改了。
2.4 到這一步,就實現了所謂的讀寫分離。這樣做,缺點也非常明顯了。本來第二台數據庫服務器,是用來做熱備的,它就應該在一個壓力非常小的環境下,保證運行的穩定性。而讀寫分離,卻增加了它的壓力,也就增加了不穩定性。因此,讀寫分離,實質上是一個在資金比較缺乏,但又需要保證數據安全的需求下,在雙機熱備方案上,做出的一種折中的擴展方案。

讀寫分離簡單實現

通過RAID技術,RAID是英文Redundant Array of Independent Disks的縮寫,翻譯成中文意思是“獨立磁盤冗餘陣列”,有時也簡稱磁盤陣列(Disk Array)。
簡單的説,RAID是一種把多塊獨立的硬盤(物理硬盤)按不同的方式組合起來形成一個硬盤組(邏輯硬盤),從而提供比單個硬盤更高的存儲性能和提供數據備份技術。

讀寫分離無盤應用

在這裏我們將工作站需要讀的數據如系統包,遊戲包存放於陣列0通道中,將工作站使用過程中寫的數據存放於陣列1通道中。基於RAID的物理特性從而達到提高無盤工作站讀寫速度的效果。這裏的讀寫分離主要是指單台服務器下的PXD無盤如何實現讀寫分離,無盤應用中的讀寫分離技術遠不止步於單台服務器,雙台或多台的讀寫分離才是重點,才是進一步體現效能的高效利用,即多服備份和分服回寫的概念,將在其它詞條中進行説明。