数据库
文章平均质量分 95
白鹿涧
这个作者很懒,什么都没留下…
展开
-
数据库索引
索引可以搜索 id、(id、name)、(id、name、age)字段组合,但不能搜索(name)索引基本上是精确匹配,但有时需要模糊匹配,基于相似度来查询。高扇出性,B+树矮胖,一般只有2~4层,查找某一键值只需要2-4次IO操作。使用组合索引的时候没有遵循最左前缀原则进行搜索,则索引不起作用。由于rebuild 使用现有索引项重建索引,速度较快,建议使用,MySQL中,索引在存储引擎实现的,不同存储引擎实现方法不同。实际上不是一种单独的索引类型,而是数据存储方式。(可能是稀疏索引也可以是稠密索引)。原创 2023-09-16 15:17:58 · 584 阅读 · 1 评论 -
数据库的锁(意向锁、临界锁、间隙锁、死锁)
当我们需要加一个排他锁(表锁)时,需要根据意向锁判读表中是否有数据行被锁定(行锁)。- 如果意向锁是行锁,需要遍历每一行数据确认- 如果意向锁是表锁,只需要判断一次就知道有没有数据行被锁定。根本原因是表锁与行锁之间是排斥的如果有一个事务占据了某个表的行排他锁,那么另一个事务要获取这个表的表排他锁或表共享锁都应该受阻碍,如果没有意向锁的存在,那么就得一行行判断,效率低,因此用意向锁的方式给行锁弱升级(虚张声势)。原创 2023-09-14 17:52:44 · 796 阅读 · 1 评论 -
数据库事务(特性、实现原理、乐观锁与悲观锁、MVCC)
MVCC在MySQL InnoDB中的实现主要是为了提高数据库并发性能,用更好的方式去处理读-写冲突,做到即使有读写冲突时,也能做到不加锁,非阻塞并发读。原创 2023-09-14 15:36:49 · 558 阅读 · 1 评论