MySQL优化
1、SQL语句优化
2、索引优化
3、数据库结构优化
4、InnoDB表优化
5、MyISAM表优化
6、Memory表优化
7、理解查询执行计划
8、缓冲和缓存
9、锁优化
10、MySQL服务器优化
11、性能评估
12、MySQL优化内幕
MySQL优化_第1张图片

MySQL 数据库引擎:常用的
InnoDB
.frm
.ibd:表空间
数据 索引

MyISAM
.MYD
.MYI
.frm

MySQL优化需要在三个不同层次上协调进行:MYSQl级别、OS级别、硬件级别

数据库层面的优化着眼点:
1、是否正确设定了表结构的相关属性,尤其是每个字段是否为最佳,同时,是否为特定类型的工作组织使用合适的表及表字段也将影响系统性能,比如,数据频繁更新的场景应该使用较多的表而每张表有着较少字段的结构,而复杂数据查询或分析的场景应该使用较少的表而每张表较多字段的结构等。
2、是否为高效进行查询创建了合适的索引。
3、是否为每张表选用的存储引擎,并有效利用了选用的存储引擎本身的优势和特性。
4、是否基于存储引擎为表选用了合适的行格式(row format),例如,压缩表在读写操作中会降低I/O操作需求并占用较少的磁盘空间,InnoDB支持读写应用场景中使用压缩表,但MyISAM仅能在读环境中使用压缩表。
5、是否使用了合适的锁策略,如在并发场景中使用共享锁,而较高优先级的需求使用独占锁等,同时,还应该考虑存储引擎所支持的锁类型。
6、是否为InnoDB的缓冲池,MyISAM的键缓存以及MySQL查询缓存设定了合适大小的内存空间,以便能够存储频繁访问的数据且又不会引起页面换出。

操作系统和硬件级别的优化着眼点:
MySQL优化_第2张图片

InnoDB:主索引(聚集索引),辅助索引

使用InnoDB存储引擎最佳实践:
MySQL优化

索引:
聚集索引
非聚集索引

主索引
辅助索引

稠密索引
稀疏索引

多级索引

B+树索引
Hash索引
空间索引
全文索引

B+树索引:
从根到每一个叶子结点的路径是等长的
平衡树索引 Balance Tree

索引:加速查询
降低写入速度

评价一个索引的性能不能只看加速查询,还看对插入、删除、更新等性能的影响。

Hash索引
key-value
hash码

hash查询时使用等值条件比较
InnoDB支持自适应hash索引

覆盖索引:只是索引使用方法

B树索引的使用场景:
适用全键值、键值范围或键前缀查找;

架构师
自动化运维 (Python)
DBA (MySQL , Oracle)