![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据库
文章平均质量分 88
艾尔文大叔
14年IT农民工,解决过不少疑难杂症,也制造过"惊星动魄"的生产事故,陪运维兄弟通宵熬过肝、看过月亮,也跟客户推杯换盏一醉方休过,
北上广杭加上大武汉,10年多风雨兼程,志在四方,
熬了肝,长了肉,秃了头,长了皱,
结识了一帮IT界的天兵神将,一起灭了许多个"八阿哥",团灭过小学生的王者水晶塔,
曾经最愚蠢的投资是把血汗钱投给了股市,自己却要继续敲996的键盘
展开
-
什么是MVCC多版本并发控制
具体流程如下:先拿该行记录的事务ID(4)去跟Read View中的up_limit_id相比较,判断是否小于,通过对比发现不小于,所以不符合条件,继续判断4是否大于等于low_limit_id,通过比较发现也不大于,所以不符合条件,判断事务4是否处理trx_list列表中,发现不再次列表中,那么符合可见性条件,所以事务4修改后提交的最新结果对事务2 的快照是可见的,因此,事务2读取到的最新数据记录是事务4所提交的版本,而事务4提交的版本也是全局角度的最新版本。原创 2024-05-05 20:38:42 · 935 阅读 · 0 评论 -
MySQL Redo日志
在事务的实现机制上,MySQL采用的是WAL(Write-ahead logging,预写式日志)机制来实现的。就是所有的修改都先被写入到日志中,然后再被应用到系统中。通常包含redo和undo两部分信息。redolog称为重做日志,每当有操作时,在数据变更之前将操作写入redo log,这样当发生掉电之类的情况时系统可以在重启后继续操作。undo log称为撤销日志,当一些变更执行到一半无法完成时,可以根据撤销日志恢复到变更之间的状态。原创 2024-04-30 21:48:45 · 992 阅读 · 0 评论 -
数据库主键的类型该如何选择,是自增还是UUID?
因为 uuid 相对顺序的自增 id 来说是毫无规律可言的,新行的值不一定要比之前的主键的值要大,所以 innodb 无法做到总是把新行插入到索引的最后,而是需要为新行寻找新的合适的位置从而来分配新的空间。下一条记录就会写入新的页中,一旦数据按照这种顺序的方式加载,主键页就会近乎于顺序的记录填满,提升了页面的最大填充率,不会有页的浪费。在写的方面,因为是自增的,所以主键是趋势自增的,也就是说新增的数据永远在后面,这点对于性能有很大的提升。进行数据拆分、合并存储的时候,能保证主键全局的唯一性。原创 2024-04-23 21:45:01 · 248 阅读 · 0 评论