美文网首页技术专题
mysql、innodb、索引、锁、事务关系

mysql、innodb、索引、锁、事务关系

作者: 飘风云间 | 来源:发表于2018-07-08 23:44 被阅读22次

1、常用有两种数据引擎myisam和innodb;
2、innodb的数据存储结构从大到小依次为tablespace(表空间)、segement(段)、extent(区)、page(页)、row(行);默认情况下page大小为16KB,一个extent最小为1MB最少有64个page


mysqlstoresturts.png

3、innodb的物理存储分为.frm和.ibd文件。其中.frm文件每创建一个表均产生一个frm文件,主要存储表结构信息;.ibd文件分为系统表空间和用户表空间
4、innodb最小按照按照页来存储数据,每个页存储2-200条记录;页内的用户记录按照链表的形式存储,B+树在查找对应数据时是读取整个页数据放到内存里面,然后根据page directory中的稀疏索引和n_owned、next_record读取对应的记录。
5、mysql索引使用B+树,索引分为聚集索引和辅助索引;聚集索引叶子节点直接指向对应数据,一般为主键和唯一索引;辅助索引仅记录对应的数据的指针;
6、锁从原理上分为乐观锁和悲观锁,乐观锁是一种思维方式并不真正对数据加锁,悲观锁是实际加锁,innodb实现的锁为悲观锁。
7、innodb实现了标准的行级锁共享锁(读取)和互斥锁(写入);
8、锁的粒度分为record lock(记录锁:对单一记录进行加锁)、gap lock(间隙锁:对一段记录进行加锁)、next-key lock(next-key锁锁定的是当前记录和之前范围的记录,next-key锁的作用是防止幻读);
9、事务的基本特性是A(原子性)C(一致性)I(隔离型)D(持久性);
10、事务的四种隔离性分别为READ UNCOMMITED(使用查询语句不会加锁,可能会读到未提交的行)、READ COMMITED(只对记录加记录锁而不会在记录之间加间隙锁,所以允许新的记录加到锁定记录的附近,所以多次使用查询语句可能会得到不同的结果)、REPEATABLE READ(多次读取同一范围的数据会返回第一次查询的快照,不会返回不同的数据行,可能会发生幻读)、SERIALIZABLE(innodb隐式的将所有的查询均加上了共享锁,解决了幻读的问题)。mysql中默认的事务隔离级别就是REPEATABLE READ,它通过Next-key lock解决了幻读的问题。
11、mysql结构分为client、sever(Connection/Thread Handing、Query cache、Parser、Optimization、Storage Engine)


mysql结构.png

整理自『浅入浅出』MySQL 和 InnoDB

相关文章

  • mysql、innodb、索引、锁、事务关系

    1、常用有两种数据引擎myisam和innodb;2、innodb的数据存储结构从大到小依次为tablespace...

  • 淘宝MySQL文档整理

    MySQL · 引擎特性 · InnoDB 事务锁系统简介 MySQL · 引擎特性 · Innodb 锁子系统浅...

  • 【学习】MySQL数据库

    存储引擎 存储引擎 索引 InnoDB索引原理索引 锁 锁不同Select加锁分析 事务 事务事务隔离级别XAMV...

  • face_mysql

    Mysql有什么数据引擎 InnoDB,支持行级锁、表级锁、事务、索引、独立表空间,其他引擎均不支持事务Myisa...

  • Mysql 隔离级别与锁的关系

    Innodb中的事务隔离级别和锁的关系MySQL加锁处理分析

  • MySQL 事务&锁

    MySQL(事务&锁) 引擎 InnoDB 索引默认聚簇索引主键索引-叶子节点包含整行数据、回滚指针、更新版本号、...

  • MySQL 基本概念

    MyISAM:无事务、锁表、读写互相阻塞、索引不缓存数据、数据与索引分离,都是【非聚集索引】InnoDB:有事务,...

  • 数据库事务和锁

    参考链接:MySQL中Innodb的事务隔离级别和锁的关系 1. 事务 事务:事务是作为单个逻辑单元工作执行的一些...

  • 如何解决秒杀场景下的超卖问题

    1、利用排他锁解决超卖问题 MySQL InnoDB存储引擎支持事务和行锁。如果不手动开启事务的话,InnoDB会...

  • MySQL知识集

    数据库引擎 Innodb和MyISAM的区别 Innodb 支持行锁 支持表锁 支持事务 支持外键 数据存储时索引...

网友评论

    本文标题:mysql、innodb、索引、锁、事务关系

    本文链接:https://www.haomeiwen.com/subject/lhkdjftx.html