MySQL ORDER BY 如何实现排序的?
MySQL是如何进行排序的?
假设有一个表t结构如下图所示:

id为主键,type上建有索引,那么如果要查类型为1,val最小的1000行,那么SQL语句如下:
SELECT type, val, detail FROM t WHERE type = 1 ORDER BY val LIMIT 1000;
假设有一个表t结构如下图所示:

id为主键,type上建有索引,那么如果要查类型为1,val最小的1000行,那么SQL语句如下:
SELECT type, val, detail FROM t WHERE type = 1 ORDER BY val LIMIT 1000;
InnoDB在处理更新语句时,先写内存再写redo log,并不会立即将数据页的更新落地到磁盘(WAL机制),这就会产生升内存数据页和磁盘数据页的数据不一致的情况,这种数据不一致的数据页称为脏页,当脏页写入到磁盘(这个操作称为flush)后,数据一致后称为干净页。
InnoDB存储引擎数据结构使用B+树
B+数据的基本结构如下图

MySQL为什么要选B+树作为存储结构呢,与B树相比有哪些优点?
从用户发起请求,到服务接口调用MySQL驱动,MySQL服务器执行完SQL语句返回结果中间发生了什么?首先放一张图来看整个过程使用到的各个组件,然后再对各个过程进行分析。
B+Tree
平衡树,查找树,所有叶子节点位于同一层
进行查找时首先再根节点进行二分查找,找到一个key所在的指针,然后递归的在指针所指向的节点进行查找,直到查到叶子节点,然后在叶子节点二分查找,找出key所对应的data
ACID
原子性
隔离性
一致性
持久性
AUTOCOMMIT:MySQL默认采用自动提交,不显示start transaction,每个查询都会被当成一个事务执行并自动提交