fbpx
维基百科

快照隔离

快照隔离(snapshot isolation,SI)是数据库事务处理中的一个隔离级别,保证事务的读操作将看到一个一致的数据库的版本快照(实际上读取比该事务早的最后一次提交值)。该事务的写操作成功提交,仅当基于该快照的任何并发修改与该事务的修改没有冲突(即写-写冲突)。

很多重要的数据库管理系统已经采用了快照隔离,如InterBase, Firebird, Oracle, MySQL[1], PostgreSQL, SQL Anywhere英语Sql anywhere, MongoDB[2]Microsoft SQL Server (从2005)。原因是快照隔离比可串行性隔离级别的性能更好,且能避免绝大多数并发异常。快照隔离一般用多版本并发控制(MVCC)实现。 快照隔离避免了ISO SQL-92所列举的并发异常现象,但不是SQL-92定义的无并发异常的可串行化

定义

事务在启动时得到一个数据库的版本号。事务结束时,成功提交仅当它修改的快照的数据项此时没有被外界改变,即没有写-写冲突英语write-write conflict,否则事务流产(abort)。

写偏斜(write skew)异常,是指两个事务(T1与T2)并发读取一个数据集(例如包含 V1 与 V2),然后各自修改数据集中不相交的数据项(例如 T1 修改 V1, T2 修改 V2),最后并发提交事务。如果事物是串行执行,这种异常不会发生。而快照隔离允许这种异常发生。例如,设想 V1 与 V2是 Phil的个人银行账户。银行允许V1或V2是空头账户,只要两个账户总和非负(即 V1 + V2 ≥ 0). 两个户头的初值各是 $100. Phil启动两个事务,T1从V1取出$200,T2从V2取出$200。

解决写偏移异常的两种策略:[3]

  • 实现写写冲突:增加要给专门的冲突表,两个事务都修改它。
  • 提升:一个事务修改它的只读数据行(替换其值为一个相等的值)从而导致一个写-写冲突,或者使用等价的提升:SELECT FOR UPDATE语句。

在上述例子中,可以重建一个表,记录每个储户与其总金额。但这种方法违背了数据库范式。另一种方式把一个事物的读数据提升为写数据,如T2做V1 = V1。但这种操作不总是可能的。

历史

快照隔离源自多版本并发控制数据库。[4] InterBase(后来被Borland所有),从1985年版本4开始提供了不是真正的可串行化的SI[4][5],并带有写偏移异常。

ANSI SQL-92标准基于数据库锁机制,对MVCC系统缺乏认识。[4]

2008年Cahill等人的论文指出写偏斜异常可通过检测并流产危险的并发任务群解决。[6]已经被PostgreSQL 9.1采用[7][8][9] 这被称作"Serializable Snapshot Isolation", SSI.

2011, Jimenez-Peris等人申报专利[10]可以解决每秒上千万次事务提交的快照隔离,成为超大规模并发数据库引擎LeanXcale的基础 [11]. 2010成为CumuloNimbo European Project的部分 [12].

参考文献

  1. ^ MySQL :: MySQL 8.0 Reference Manual :: 15.5.2.3 Consistent Nonlocking Reads. dev.mysql.com. [2018-08-27]. (原始内容于2021-03-08) (英语). 
  2. ^ Multiversion concurrency control in MongoDB, MongoDB CTO: How our new WiredTiger storage engine will earn its stripes (页面存档备份,存于互联网档案馆
  3. ^ Fekete, Alan; Liarokapis, Dimitrios; O'Neil, Elizabeth; O'Neil, Patrick; Shasha, Dennis, Making Snapshot Isolation Serializable, ACM Transactions on Database Systems, 2005, 30 (2): 492–528, CiteSeerX 10.1.1.503.3169 , ISSN 0362-5915, doi:10.1145/1071610.1071615 
  4. ^ 4.0 4.1 4.2 引用错误:没有为名为berenson的参考文献提供内容
  5. ^ Stuntz, Craig. . [October 30, 2014]. (原始内容存档于2007-10-23). 
  6. ^ Michael J. Cahill, Uwe Röhm, Alan D. Fekete (2008) "Serializable isolation for snapshot databases", Proceedings of the 2008 ACM SIGMOD international conference on Management of data, pp. 729–738, ISBN 978-1-60558-102-6 (SIGMOD 2008 best paper award)
  7. ^ 引用错误:没有为名为psql91release的参考文献提供内容
  8. ^ 引用错误:没有为名为postgresdocs91的参考文献提供内容
  9. ^ Ports, Dan R. K.; Grittner, Kevin. Serializable Snapshot Isolation in PostgreSQL (PDF). Proceedings of the VLDB Endowment. 2012, 5 (12): 1850–1861 [2018-11-12]. arXiv:1208.4179 . doi:10.14778/2367502.2367523. (原始内容 (PDF)于2012-11-14). 
  10. ^ [1],JIMÉNEZ-PERIS, Ricardo & Marta PATIÑO-MARTINEZ,「System and method for highly scalable decentralized and low contention transactional processing」 
  11. ^ LeanXcale. leanxcale.com. [2017-08-20]. (原始内容于2020-11-01) (美国英语). 
  12. ^ Jimenez-Peris, Ricardo; Patiño-Martinez, Marta; Magoutis, Kostas; Bilas, Angelos; Brondino, Ivan. CumuloNimbo: A Highly-Scalable Transaction Processing Platform as a Service. ERCIM NEWS. April 2012 [2018-11-12]. (原始内容于2020-12-30). 

进一步阅读

  • Bettina Kemme , Gustavo Alonso, A new approach to developing and implementing eager database replication protocols, ACM Transactions on Database Systems (TODS), v.25 n.3, p.333-379, Sept. 2000.
  • Gerhard Weikum, Gottfried Vossen, Transactional information systems: theory, algorithms, and the practice of concurrency control and recovery, Morgan Kaufmann, 2002, ISBN 1-55860-508-8
  • Yi Lin, Bettina Kemme, Marta Patiño-Martínez, Ricardo Jiménez-Peris. Middleware based data replication providing snapshot isolation. Proceedings of the 2005 ACM SIGMOD international Conf., 2005.
  • Marta Patiño-Martinez, Ricardo Jiménez-Peris, Bettina Kemme, Gustavo Alonso. MIDDLE-R: Consistent database replication at the middleware level. ACM Transactions on Computer Systems (TOCS). Volume 23 Issue 4. Pages 375-423.
  • Khuzaima Daudjee, Kenneth Salem, Lazy Database Replication with Snapshot Isolation, VLDB 2006: pages 715-726

快照隔离, snapshot, isolation, 是数据库事务处理中的一个隔离级别, 保证事务的读操作将看到一个一致的数据库的版本快照, 实际上读取比该事务早的最后一次提交值, 该事务的写操作成功提交, 仅当基于该快照的任何并发修改与该事务的修改没有冲突, 即写, 写冲突, 很多重要的数据库管理系统已经采用了, 如interbase, firebird, oracle, mysql, postgresql, anywhere, 英语, anywhere, mongodb, microsoft, server, . 快照隔离 snapshot isolation SI 是数据库事务处理中的一个隔离级别 保证事务的读操作将看到一个一致的数据库的版本快照 实际上读取比该事务早的最后一次提交值 该事务的写操作成功提交 仅当基于该快照的任何并发修改与该事务的修改没有冲突 即写 写冲突 很多重要的数据库管理系统已经采用了快照隔离 如InterBase Firebird Oracle MySQL 1 PostgreSQL SQL Anywhere 英语 Sql anywhere MongoDB 2 与 Microsoft SQL Server 从2005 原因是快照隔离比可串行性隔离级别的性能更好 且能避免绝大多数并发异常 快照隔离一般用多版本并发控制 MVCC 实现 快照隔离避免了ISO SQL 92所列举的并发异常现象 但不是SQL 92定义的无并发异常的可串行化 目录 1 定义 2 历史 3 参考文献 4 进一步阅读定义 编辑事务在启动时得到一个数据库的版本号 事务结束时 成功提交仅当它修改的快照的数据项此时没有被外界改变 即没有写 写冲突 英语 write write conflict 否则事务流产 abort 写偏斜 write skew 异常 是指两个事务 T1与T2 并发读取一个数据集 例如包含 V1 与 V2 然后各自修改数据集中不相交的数据项 例如 T1 修改 V1 T2 修改 V2 最后并发提交事务 如果事物是串行执行 这种异常不会发生 而快照隔离允许这种异常发生 例如 设想 V1 与 V2是 Phil的个人银行账户 银行允许V1或V2是空头账户 只要两个账户总和非负 即 V1 V2 0 两个户头的初值各是 100 Phil启动两个事务 T1从V1取出 200 T2从V2取出 200 解决写偏移异常的两种策略 3 实现写写冲突 增加要给专门的冲突表 两个事务都修改它 提升 一个事务修改它的只读数据行 替换其值为一个相等的值 从而导致一个写 写冲突 或者使用等价的提升 SELECT FOR UPDATE语句 在上述例子中 可以重建一个表 记录每个储户与其总金额 但这种方法违背了数据库范式 另一种方式把一个事物的读数据提升为写数据 如T2做V1 V1 但这种操作不总是可能的 历史 编辑快照隔离源自多版本并发控制数据库 4 InterBase 后来被Borland所有 从1985年版本4开始提供了不是真正的可串行化的SI 4 5 并带有写偏移异常 ANSI SQL 92标准基于数据库锁机制 对MVCC系统缺乏认识 4 2008年Cahill等人的论文指出写偏斜异常可通过检测并流产危险的并发任务群解决 6 已经被PostgreSQL 9 1采用 7 8 9 这被称作 Serializable Snapshot Isolation SSI 2011 Jimenez Peris等人申报专利 10 可以解决每秒上千万次事务提交的快照隔离 成为超大规模并发数据库引擎LeanXcale的基础 11 2010成为CumuloNimbo European Project的部分 12 参考文献 编辑 MySQL MySQL 8 0 Reference Manual 15 5 2 3 Consistent Nonlocking Reads dev mysql com 2018 08 27 原始内容存档于2021 03 08 英语 Multiversion concurrency control in MongoDB MongoDB CTO How our new WiredTiger storage engine will earn its stripes 页面存档备份 存于互联网档案馆 Fekete Alan Liarokapis Dimitrios O Neil Elizabeth O Neil Patrick Shasha Dennis Making Snapshot Isolation Serializable ACM Transactions on Database Systems 2005 30 2 492 528 CiteSeerX 10 1 1 503 3169 ISSN 0362 5915 doi 10 1145 1071610 1071615 4 0 4 1 4 2 引用错误 没有为名为berenson的参考文献提供内容 Stuntz Craig Multiversion Concurrency Control Before InterBase October 30 2014 原始内容存档于2007 10 23 Michael J Cahill Uwe Rohm Alan D Fekete 2008 Serializable isolation for snapshot databases Proceedings of the 2008 ACM SIGMOD international conference on Management of data pp 729 738 ISBN 978 1 60558 102 6 SIGMOD 2008 best paper award 引用错误 没有为名为psql91release的参考文献提供内容 引用错误 没有为名为postgresdocs91的参考文献提供内容 Ports Dan R K Grittner Kevin Serializable Snapshot Isolation in PostgreSQL PDF Proceedings of the VLDB Endowment 2012 5 12 1850 1861 2018 11 12 arXiv 1208 4179 doi 10 14778 2367502 2367523 原始内容存档 PDF 于2012 11 14 1 JIMENEZ PERIS Ricardo amp Marta PATINO MARTINEZ System and method for highly scalable decentralized and low contention transactional processing LeanXcale leanxcale com 2017 08 20 原始内容存档于2020 11 01 美国英语 Jimenez Peris Ricardo Patino Martinez Marta Magoutis Kostas Bilas Angelos Brondino Ivan CumuloNimbo A Highly Scalable Transaction Processing Platform as a Service ERCIM NEWS April 2012 2018 11 12 原始内容存档于2020 12 30 进一步阅读 编辑Bettina Kemme Gustavo Alonso A new approach to developing and implementing eager database replication protocols ACM Transactions on Database Systems TODS v 25 n 3 p 333 379 Sept 2000 Gerhard Weikum Gottfried Vossen Transactional information systems theory algorithms and the practice of concurrency control and recovery Morgan Kaufmann 2002 ISBN 1 55860 508 8 Yi Lin Bettina Kemme Marta Patino Martinez Ricardo Jimenez Peris Middleware based data replication providing snapshot isolation Proceedings of the 2005 ACM SIGMOD international Conf 2005 Marta Patino Martinez Ricardo Jimenez Peris Bettina Kemme Gustavo Alonso MIDDLE R Consistent database replication at the middleware level ACM Transactions on Computer Systems TOCS Volume 23 Issue 4 Pages 375 423 Khuzaima Daudjee Kenneth Salem Lazy Database Replication with Snapshot Isolation VLDB 2006 pages 715 726 取自 https zh wikipedia org w index php title 快照隔离 amp oldid 68006233, 维基百科,wiki,书籍,书籍,图书馆,

文章

,阅读,下载,免费,免费下载,mp3,视频,mp4,3gp, jpg,jpeg,gif,png,图片,音乐,歌曲,电影,书籍,游戏,游戏。