1.索引下推    msql5.6的新特性,默认开启。 对联合索引中包含的字段先做出判断,直接过滤掉不符合条件的记录。减少回表操作。

     索引下推一般可用于所求查询字段(select列)不是/不全是联合索引的字段,查询条件为多条件查询且查询条件子句(where/order by)字段全是联合索引

2.mysql中的常见三种日志

     redo log(重做日志,用于事务的持久化)   为了提升性能,事务提交之后,变更没有直接同步刷盘。而是计入Buffer poll,然后异步的将redo log变更写入磁盘文件。当Buffer Pool到达一定阀值之后,一般默认容量的75%,会同步进行刷盘。

     undo log(回滚日志,用户数据被修改前的数据)  在发送事务回滚的时候,回复到事务修改之前的状态

     bin log(同步日志) 一般在主从复制中,通过bin log slave从master中同步变更,保持数据同步。

3.MVVC 多版本并发机制

     InnoDB的MVVC机制中,每行记录有三个隐藏列来实现。记录隐式ID,事务id,回滚指针(只想当前记录的undo log).

    主要依赖Undo log及Read View:

      Undo log:用来记录一行记录的多个版本。

      ReadView:  用来判断当前版本的可见性。

      ReadView 版本链的机制,不同的事务隔离级别生成ReadView的时机不同。 在Read Commit情况下,每次select之前都会生成ReadView,在Repeated Read情况下,第一次select之前生成ReadView。

       用一个单链表的数据结构存放每个事务版本对应的行的数据,通过当前的事务id,可以获取对应的数据。 

       配合ReadView的活跃事务数组可以判断当前事务应该读取哪个节点的数据。

4.Mysql 索引类型  聚簇索引(主键索引):B+树上存在的是记录的完整信息、非聚簇索引(B+树上记录的是记录的主键索引ID)     

    覆盖索引:是指select的列和where条件列都在联合索引的列中。比如select *  from a where b='xxx'   就算b命中索引,也要回表。