在数据库或文件系统中同时处理的 INSERT/SELECT 个事务或 Read/Write 个操作
Simultaneous INSERT/SELECT transactions or Read/Write operations handled in a database or file system
现在,我正在阅读有关数据库或文件系统如何处理并行执行事务的内容。而且我知道数据库和文件系统会做日志操作来保证事务的失败原子性。据我所知,预写日志记录是一种很有前途的方式。
预写日志记录将维护修改数据的另一个副本。对于redo-logging,会先将待更新的数据写入日志,然后才是真正的更新。
我很好奇的是:
如果一开始,我在 table A 中执行了一个大的 INSERT 事务 I_TX,然后在 I_TX 期间,我执行了一个 SELECT 事务 S_TX 在同一个 table A 上,我会从 I_TX 中获取插入的数据吗?如果我得到它,我从日志获得的数据还是真正更新的数据?
谢谢。
您所指的属性是数据库的 ACID 属性。这个首字母缩写词代表原子性、一致性、隔离性和持久性,并且有自己的 Wikipedia page。这些更多地是通过锁定而不是通过日志来实现的。
这些是数据库非常重要的属性,日志记录是它们实现的重要组成部分。然而,完全实施 ACID 会产生大量开销,因此有时数据库有更宽松的要求,尤其是在修改数据时对数据的可见性。
您问题的答案是 select
是使用数据页而不是日志解析的。该日志用于 roll-back 目的。 (在某些情况下,某些数据库可能会使用日志。)区别在于由 update
事务 ("dirty pages") 修改的数据页与未更新的数据页之间的区别。有几种情况,例如:
select
可以读取已修改和未修改的数据页。
select
可以等待并且只从未修改的页面读取数据,无论是在事务提交之前还是之后。
select
可以读取 update
之前未修改的页面; update
可以(基本上)复制任何正在修改的页面。
select
可以等待 update
完成,然后阅读页面。
首先是数据视图不一致。其余一致。
"correct" 方法是 select
查看数据一致视图的某种方式。某些数据库允许读取 "dirty" 的页面,这意味着它们是事务的一部分但未提交。这不是严格意义上的 ACID-compliant,但速度更快。
此外,不同的数据库对各种锁定机制以及它们可以被覆盖的程度有不同的支持。数据库甚至在是否 update
"auto-commits" 或必须等待显式提交方面存在差异。
现在,我正在阅读有关数据库或文件系统如何处理并行执行事务的内容。而且我知道数据库和文件系统会做日志操作来保证事务的失败原子性。据我所知,预写日志记录是一种很有前途的方式。
预写日志记录将维护修改数据的另一个副本。对于redo-logging,会先将待更新的数据写入日志,然后才是真正的更新。
我很好奇的是:
如果一开始,我在 table A 中执行了一个大的 INSERT 事务 I_TX,然后在 I_TX 期间,我执行了一个 SELECT 事务 S_TX 在同一个 table A 上,我会从 I_TX 中获取插入的数据吗?如果我得到它,我从日志获得的数据还是真正更新的数据?
谢谢。
您所指的属性是数据库的 ACID 属性。这个首字母缩写词代表原子性、一致性、隔离性和持久性,并且有自己的 Wikipedia page。这些更多地是通过锁定而不是通过日志来实现的。
这些是数据库非常重要的属性,日志记录是它们实现的重要组成部分。然而,完全实施 ACID 会产生大量开销,因此有时数据库有更宽松的要求,尤其是在修改数据时对数据的可见性。
您问题的答案是 select
是使用数据页而不是日志解析的。该日志用于 roll-back 目的。 (在某些情况下,某些数据库可能会使用日志。)区别在于由 update
事务 ("dirty pages") 修改的数据页与未更新的数据页之间的区别。有几种情况,例如:
select
可以读取已修改和未修改的数据页。select
可以等待并且只从未修改的页面读取数据,无论是在事务提交之前还是之后。select
可以读取update
之前未修改的页面;update
可以(基本上)复制任何正在修改的页面。select
可以等待update
完成,然后阅读页面。
首先是数据视图不一致。其余一致。
"correct" 方法是 select
查看数据一致视图的某种方式。某些数据库允许读取 "dirty" 的页面,这意味着它们是事务的一部分但未提交。这不是严格意义上的 ACID-compliant,但速度更快。
此外,不同的数据库对各种锁定机制以及它们可以被覆盖的程度有不同的支持。数据库甚至在是否 update
"auto-commits" 或必须等待显式提交方面存在差异。