Mysql
文章平均质量分 84
菜鸟翻身做主人
任重道远
展开
-
学习小记 -- MVCC之版本链和ReadView
版本链在InnoDB中,一张表必须包含两个字段,trx_id和roll_pointer。trx_id : 事务字段,当一个事务去操作某个行的数据时,会将自己的事务Id赋值给trx_id字段 roll_pointer : 回滚指针,当一个事务更新了一个字段的时候,并不会直接删除掉之前的字段,而是将该指针指向之前的字段存储到undo blogReadViewMVCC是由版本链和ReadView控制的,我们可以将Read View看作一个数组,整个数组的左边界和右边界时当前活跃事务的事原创 2021-08-29 18:19:49 · 582 阅读 · 0 评论 -
学习小记 -- Mysql事务日志(redo log)
最近又把事务仔细盘了一遍,防止忘记,赶紧记下来,嘿嘿????????????~我们都知到,InnoDB中的事务符合ACID的特性:原子性(atimicity) 一致性(consistency) 隔离性(ioslation) 持久性(durability)这里就不详细展开描述概念了,事务的隔离性由之前写到的mysql中的锁来控制。原子性、一致性、持久性通过数据库的redo log和undo log来完成。redo log称为重做日志,用来保证事务的原子性和持久性。undo log用来保证事务的原创 2021-07-04 20:12:38 · 333 阅读 · 0 评论 -
学习小记 -- Mysql事务日志(undo log)
这篇来小小的浅析一下undo log????~~概念redo log 记录了事务的行为,可以很好的对页进行“重做”操作,但是事务有时候还需要进行回滚操作,这时候就需要undo。与reod log不同,undo log存放在数据库内部的一个特殊段(segment)中,这个段就称为undo段。undo段位于共享表空间中。undo log主要存储的也是逻辑日志,比如我们要insert一条数据了,那undo log会记录的一条对应的delete日志。我们要update一条记录时,它会记录一条对应相反的u原创 2021-07-04 20:52:24 · 322 阅读 · 0 评论 -
工作小记 -- sql中使用函数会导致预编译失效吗?
前几天有个模糊查询的需求,我还是像往常一样写,xml例子如下:<if test="keyword != null"> and t1.customer_name like concat("%"#{keyword}"%")</if>新来的组长review我写的代码时候,反手提问了我几个问题:这样写有没有什么问题? sql的执行过程是什么? 啥是预编译? 勇敢<bind>标签吗?反手给我打了个措手不及,因为原来自己一直是上面这样写的。后来查资料才原创 2021-08-01 18:01:38 · 575 阅读 · 0 评论 -
学习小记 -- Mysql中的锁(间隙锁、Next-Key Lock)
InnoDB存储引擎有3种行锁算法:Record Lock:单个行记录上的锁。 Gap Lock:间隙锁,锁定一个范围,但不包括记录本身。 Next-Key Lock:Gap Lock+Record Lock,锁定一个返回,并且锁定记录本身。如果InnoDB在表建立的时候没有设置任何一个索引,那么这是InnoDB存储引擎会使用隐式的主键来进行锁定。在Next-Key Lock算法下,InnoDB对于行的查询都是采用这种算法,例如一个索引有3,10,15,26四个值,那么该索引可能被Next-K原创 2021-06-24 19:30:41 · 459 阅读 · 0 评论 -
学习小记 -- Mysql中的锁
锁是数据库区别与文件系统的一个关键特性。数据库使用锁是为了支持对共享资源进行并发访问,提供数据的完整性和一致性。对于MyISAM引擎,其锁是表锁设计。InnoDB存储引擎锁的实现和Oracle数据库非常类似,提供一致性的非锁定读、行级锁支持。行级锁没有相关额外的开销,并可以同时得到并发性和一致性。lock和latchlock和latch是两个比较容易混淆的概念,在数据库中两者都可以称为“锁”,但两者的含义截然不同。latch一般被称为闩锁(轻量级锁),因为其要求锁定的时间必须非常短,原创 2021-06-23 23:17:48 · 154 阅读 · 0 评论