![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
mysql
chenyang1010
通讯行业Java程序员
展开
-
数据库第一类第二类丢失更新
数据库在多任务并发的时候会发生两类数据丢失的问题,第一类数据丢失的问题是关于回滚覆盖的,第二类数据丢失的问题是更新覆盖。目前主流数据库支持的所有的隔离级别基本杜绝了第一类数据更新丢失的问题,但是第二类数据更新丢失的问题任然需要用户在使用数据库的时候注意。数据库第一类更新丢失的问题第一类更新丢失是指,由于某个事务的回滚操作,参与回滚的旧数据将其他事务的数据更新覆盖了。比如如下两个事务,事务一...原创 2018-11-24 09:56:04 · 2920 阅读 · 1 评论 -
数据库多版本并发控制
数据库多版本并发控制在一篇帖子中,看到一幅图片,我觉得基本诠释了什么是多版本并发控制,该图应用自https://www.cnblogs.com/aspirant/p/6920987.html,非原创:多版本并发控制的定义:所谓多版本并发控制,就是在数据表的每一行上面增加两个隐藏字段,一个是数据插入时的版本号,一个是数据删除时的版本号,这样给数据刚增加版本的控制,就成为数据库的多版本并发控制...原创 2018-11-26 19:04:58 · 1597 阅读 · 1 评论 -
数据库封锁协议
1. 三封锁协议A) 一级封锁协议事务 T 要修改数据 A 时必须加 X 锁,直到 T 结束才释放锁。可以解决丢失修改问题,因为不能同时有两个事务对同一个数据进行修改,那么事务的修改就不会被覆盖。B)二级封锁协议在一级的基础上,要求读取数据 A 时必须加 S 锁,读取完马上释放 S 锁。可以解决读脏数据问题,因为如果一个事务在对数据 A 进行修改,根据 1 级封锁协议,会加 X 锁,那...原创 2018-11-26 19:23:56 · 958 阅读 · 0 评论 -
如何在查出的数据为空的时候显示NULL
正常情况下如果select语句为空,会如下显示:mysql> select id from person where id=14 limit 1,1;Empty set (0.00 sec)可以在查询外面再套一层,能够显示NULL:mysql> select (select id from person where id=14 limit 1,1) aa;+------+...原创 2018-11-27 19:37:52 · 1889 阅读 · 0 评论