数据库
文章平均质量分 85
obvious__
这个作者很懒,什么都没留下…
展开
-
关于更新丢失的处理
关于更新丢失的处理预备知识《关于隔离性》概述在《关于隔离性》中,他们提到了更新丢失的问题。我们先来简单回顾下,如果多个用户按照如下流程并行地对数据库中的某个字段进行递增,就会出现更新丢失。-- x为程序变量begin;x = select value from test;x += 1;update test set value = x;commit;我们提到了一些数据的Repeatable Read和Serializable隔离级别可以解决更新丢失的问题。我们还提到,这样实现递增的方原创 2021-11-05 16:54:32 · 726 阅读 · 0 评论 -
关于隔离性
关于隔离性概述ACID是关系型数据库的重要特性,其中I表示Isolation隔离性。隔离性和操作系统的虚拟内存一样,是一种抽象,让并行执行的事务相互之间不会干扰,看起来就像一次只执行一个事务一样。也就是所谓的可串行化(Serializable),即多个并行的事务,在提交时其结果与串行执行完全相同。隔离级别的一个核心问题是:一个事务的执行过程和结果是否会影响到其他正在执行的事务。可串行化是最高级别的隔离,即事务之前互不影响。除此之外,为了并发性考虑还有几种弱一点的隔离级别,按照隔离度从低到高依次是:未提原创 2021-11-04 12:06:51 · 718 阅读 · 0 评论 -
不同数据库Serializable隔离级别的区别
不同数据库Serializable隔离级别的区别概述Serializable(可串行化)是数据库最高等级的隔离级别。从概念上来讲,Serializable的定义是:多个并行的事务,在提交时其结果与串行执行完全相同。当前主流数据库几乎都支持名为Serializable的隔离级别,为什么要用加上名为?因为不同数据库对于Serializable的实现方式不同,有些数据库的Serializable其实做不到真正意义的可串行化。下面,我们来分别看看MySQL、PostgreSQL、Oracle在可串行化隔离级别下原创 2021-11-02 15:48:43 · 905 阅读 · 0 评论 -
数据库重启恢复概述
参考资料《数据库系统设计》第二版,第6章 系统故障对策,P188~P200WALWAL(write ahead log)是基于重做日志恢复的一个先决条件。意思是,只有当相关日志落盘后,对应的数据才能落盘。比如,下面这条insert语句:begin;insert into test(id) values(1);commit;只有当insert对应的日志<T1,1,insert>落盘之后,这条insert的元组才能落盘。这是为什么?如果,insert元组先于日志落盘,假设在commi原创 2020-10-09 11:47:00 · 1572 阅读 · 0 评论