MySQL
文章平均质量分 92
一个优雅的coder
这个作者很懒,什么都没留下…
展开
-
MySQL事务原理与优化最佳实践
我们的数据库一般都会并发执行多个事务,多个事务可能会并发的对相同的一批数据进行增删改查操作,可能就会导致我们说的脏写、脏读、不可重复读、幻读这些问题。这些问题的本质都是数据库的多事务并发问题,为了解决多事务并发问题,数据库设计了事务隔离机制、锁机制、MVCC多版本并发控制隔离机制,用一整套机制来解决多事务并发问题。原创 2023-07-06 15:57:07 · 491 阅读 · 1 评论 -
深入理解MySQL索引底层数据结构与算法
通过辅助索引首先找到的是主键,再通过主键值找到数据行的数据页,再通过数据页中的page Directory找到数据行。相同的page存储的主键索引更多,所以在数据行数相同的情况下,使用整型数据作为主键索引B+Tree的高度更低,查询效率更高。基于二叉树的这种数据结构,当数据是有序插入的时候,二叉树将会退化成链表,所以不适合做索引的实现。聚簇索引是按照每张表的主键构造的一颗B+树,同时叶子节点存的是整张表的行记录数据(也称为数据页)二叉树是一种有序的数据结构,根节点大于左子节点的数据,小于右子节点的数据。原创 2023-07-03 20:29:43 · 305 阅读 · 0 评论 -
MySQL锁机制与优化实践以及MVCC底层原理剖析
对于键值在条件范围内但并不存在的记录,叫做“间隙(GAP)” ,InnoDB 也会对这个“间隙”加锁,这种锁机制就是所谓的间隙锁。InnoDB 使用间隙锁的目的,是为了防止幻读,以满足串行化隔离级别的要求 ,对于上面的例子,要是不使用间隙锁,如果其他事务插入了 userid 大于 100 的任何记录,那么本事务如果再次执行上述语句,就会发生幻读。a. 若 row 的 trx_id 在视图数组中,表示这个版本是由还没提交的事务生成的,不可见(若 row 的 trx_id 就是当前自己的事务是可见的);原创 2023-07-03 20:39:58 · 295 阅读 · 1 评论