Windows和Linux都有的Copy-on-write技術
MySQL技術內幕Innodb存儲引擎第2版 P375
SQL Server2008 實現與維護(MCTS教程)P199
LVM快照技術
LVM使用寫時復制copy-on-write技術來創建快照,當創建一個快照時,僅復制原始卷中數據的元數據metadata,并不會有數據物理操作,因此快照創建過程非常快。當快照創建完成,原始卷上有寫操作時,快照會跟蹤原始卷塊的改變,將要改變的數據在改變之前復制到快照預留空間里,因此這個原理的實現叫寫時復制。對于快照讀取操作,如果讀取的數據塊是創建快照后沒有修改過的,那么會重定向讀取操作到原始卷,如果讀取的是已經修改過的塊,讀取保存在快照中該塊在原始卷改變之前的數據,簡單來將就是讀取快照中的數據,因此采用寫時復制機制保證了讀取快照得到的數據和快照和快照創建時一致
簡單來講:
寫:有變更寫快照,無變更不寫快照,寫快照是變更之前的版本
SQL Server的快照技術
SQL Server使用寫時復制copy-on-write,SQL Server對區extent進行讀寫,首次對一個區中的數據頁進行修改時,SQL Server將區的前影像復制到數據快照。
讀取select:無更改過的,讀取源庫,更改過的,讀取快照
由于在首次發生改變時寫入了區的前影像,所以SQL Server一方面允許對源庫進行更改
另一方面保證對數據庫快照的任何查詢不會反映創建快照之后發生的任何改變
最初的更改寫入區的一個頁,而且SQL Server將這個區的前影像寫入數據庫快照之后,寫時復制功能會忽略后續對這個區的任何更改
由于可以為一個源庫創建多個數據庫快照,所以凡是沒有獲得區的副本的數據庫快照都會被寫入區的一個前影像
原理跟Linux LVM的快照原理是一樣的!
如有不對的地方,歡迎大家拍磚o(∩_∩)o
文章列表
![]() |
不含病毒。www.avast.com |