数据库中万事皆事务
数据库中最核心的技术点:改变向量。
InnoDB存储中最核心技术点:MVCC(多版本并发控制)。
PostgreSQL中最核心技术点:事务版本控制。
A(原子性):事务只有成功和失败。
C(一致性):事务发生前后,不影响整体状态。
I(隔离性):事务之间不会发生互相干扰。
D(持久性):事务一旦提交就不能被回滚了。
oracle事务中只有三种隔离级别,read/write,read only,serialize。
mysql事务中有四种隔离级别,分别是:
read uncommitted(读未提交)可以看到某个事务未提交的状态。我们称这种读为脏读。
read committed(读已提交)当前会话只能看到别人提交事务以后的结果。这也是Oracle默认的隔离级别的方式。
read repeated(可重复读)我们以后的查询都以第一次查询结果为准。如果想要更新结果集的话,只需要在自己的会话中执行提交或回滚操作即可。也是MySQL默认的隔离级别。MySQL实现重复读的方式实际是使用了间隙锁(GAP LOCK)+ NEXT KEY。而且还有意向锁的概念。
serialize就是关闭数据并发功能,只允许一个会话发生事务。
delete会比update产生更多的日志,delete只是加入了unusable标记,没有真的删除数据元组。
UPDATE的相关处理细节。
行数据的元组性。
数据库中所有的行数据都是元组。
元组:类似于数组,但是元组的定义却没有数组定义的那么死,在元组中可以容纳不同数据类型的数据。而且元组的标是从1开始的,而不是从0开始的,也就是说,元组具备了并不严格逻辑定义。
但是有一点搭建一定要