什么是索引下推? 索引下推(Index Condition Pushdown)是数据库查询优化的一种技能,通常用于处理包罗过滤条件的查询语句。它的原理是在利用索引进行查询时,将查询的过滤条件也应用到索引查找过程中,以淘汰需要读取和处理的数据量,从而进步查询性能。
举例:
对于辅助的团结索引(name,age,position),正常情况按照最左前缀原则,SELECT * FROM employees WHERE name like ‘LiLei%’ AND age = 22 AND position =‘manager’ 这种情况只会走name字段索引,因为根据name字段过滤完,得到的索引行里的age和position是无序的,无法很好的利用索引。 like KK%实在就是用到了索引下推优化
在MySQL5.6之前的版本,这个查询只能在团结索引里匹配到名字是 ‘LiLei’ 开头的索引,然后拿这些索引对应的主键逐个回表,到主键索引上找出相应的记载,再比对age和position这两个字段的值是否符合。
MySQL 5.6引入了索引下推优化,可以在索引遍历过程中,对索引中包罗的所有字段先做判断,过滤掉不符合条件的记载之后再回表,可以有效的淘汰回表次数。利用了索引下推优化后,上面那个查询在团结索引里匹配到名字是 ‘LiLei’ 开头的索引之后,同时还会在索引里过滤age和position这两个字段,拿着过滤完剩下的索引对应的主键id再回表查整行数据。
索引下推会淘汰回表次数,对于innodb引擎的表索引下推只能用于二级索引,innodb的主键索引(聚簇索引)树叶子节点上保存的是全行数据,以是这个时候索引下推并不会起到淘汰查询全行数据的效果。
并发事务处理带来的问题
G1 (Garbage-First)是一款面向服务器的垃圾收集器,紧张针对配备多颗处理器及大容量内存的机器. 以极高概率满足GC停顿时间要求的同时,还具备高吞吐量性能特征.
G1 也是基于年轻代老年代进行设计的。它将堆内存分为多个大小相等的区域(Region),每个区域都可以是 Eden 区、Survivor 区大概 Old 区。G1 有专门分配大对象的 Region 叫 Humongous 区,而不是让大对象直接进入老年代的 Region 中。
ZGC收集器(-XX:+UseZGC)