zoukankan      html  css  js  c++  java
  • Windows和Linux都有的Copy-on-write技术

    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 

  • 相关阅读:
    java中的访问控制符
    DDD CQRS和Event Sourcing的案例:足球比赛
    你用过Spring中哪些功能?
    基于角色的权限访问控制初步
    mybatis深入学习
    GNU make学习笔记
    XmlFactoryBean和DefaultListableBeanFactory学习
    重新组织函数
    【JRebel 作者出品--译文】Java class 热更新:关于对象,类,类加载器
    不吹不黑,关于 Java 类加载器的这一点,市面上没有任何一本图书讲到
  • 原文地址:https://www.cnblogs.com/lyhabc/p/4842906.html
Copyright © 2011-2022 走看看