Java 开发【开源组件结构图大全】

Java 开发【开源组件结构图大全】

Mysql

inonoDb 内存结构和磁盘结构

Java 开发【开源组件结构图大全】

模块分析

Java 开发【开源组件结构图大全】

page

Java 开发【开源组件结构图大全】

索引数据结构

B+Tree加强版多路平衡查找树

Java 开发【开源组件结构图大全】
Java 开发【开源组件结构图大全】

索引小结

可以看出mysql 索引是存在瓶颈的
即为B+Tree 子树节点彻底放满 2100w左右条数据,innoDB数据引擎性能急剧下降,
阿里巴巴java开发手册中说道 500w条数据 mysql 性能将会急剧下降,达不到2000w条数据
如果需要达到2000w mysql调优将会消耗大量的开发成本,建议使用【分库分表】

Java 开发【开源组件结构图大全】

创建索引的时机

1、在用于where判断order排序和join的(on)字段上创建索引。
2、索引的个数不要过多。
3、区分度低的字段,例如性别,不要建索引。
4、频繁更新的值,不要作为主键或者索引。
5、符合索引把散列性高(区分度高)的值放在前面。
6、创建复合索引,而不是修改单列索引。

为什么不建议用无序的值(例如身份证、UUID)作为索引?
怎样使用不到索引?
1、索引列上使用函数(replace\SUBSTR\CONCAT\sumcountavg)、表达式
2、字符串不加引号,出现隐式转换
3、like条件中前面带% 不符合最左匹配原则 无法命覆盖索引
4、负向查询能用到索引吗?<>!=NOT in

隔离级别

Java 开发【开源组件结构图大全】

Redis

Java 开发【开源组件结构图大全】
Java 开发【开源组件结构图大全】

后续 学习补充/_/