8.0逻辑架构
搜索的索引列,不一定是所要选择的列。最适合索引的列是出现在WHERE子句中的列,或连接子句中指定的列,而不是出现在SELECT关键字后的选择列表中的列。
使用唯一索引,考虑某列中值的分布。索引的列的基数越大,索引的效果越好。例如:存在出生日期的列具有不同的值,很容易区分各行,而用来记录性别的列,只有“M”和“F”,则对此列进行索引没有多大用处,因为不管搜索哪个值,都会得出大约一半的行。
锁
锁系统都会有共享锁
和排他锁
的分类,共享锁
也叫读锁
,排他锁
也叫写锁
加在同一个资源上,写锁会阻塞另外一把写锁或读锁的获取,读锁则允许另外一把读锁的获取,也就是读读之间允许并发,读写或者写写会阻塞,innodb中表锁和行锁都支持共享锁(简写S)
和排他锁(简写X)
。
因为innoDB支持多粒度的锁,允许表锁和行锁的并存,为了方便多粒度锁冲突的判断,innoDB中还存在一种名叫意向锁(Intention Locks)
的锁。
除此之外,还有一种特殊的表锁,自增锁,主要用来并发安全的生成自增id,一种特殊的意向锁,插入意向锁,用来防止幻读问题
https://sakthismysqlblog.wordpress.com/2019/08/02/mysql-8-internal-architecture/
https://dev.mysql.com/doc/refman/8.0/en/innodb-architecture.html
https://dev.mysql.com/doc/refman/8.0/en/group-replication-plugin-architecture.html