公司动态

MySQL 性能优化・诗意化记忆

📅 2026/8/28 6:09:09
MySQL 性能优化・诗意化记忆
覆盖索引、explain、SQL、表设计、锁、配置古风短句面试背诵向总起库中万绪藏千行慢索翻寻耗时光。 优化不从一处取表、索、SQL、锁与章。一、表结构设计优化plaintext建表先把范式量适度冗余莫过僵。 字段类型宜精简大文本莫入寻常。 非空约束勤加设默认值补空位荒。 主键自增为上策乱序索引裂篇章。 分库分表逢海量冷热数据两厢藏。记忆点适度反范式不要死磕三范式小类型优先char/varchar 选对blob/text 尽量移出主表主键尽量自增无序主键会造成索引页分裂大数据量考虑分库分表、冷热分离二、索引核心重中之重plaintext索引如书目录章快寻记录少奔忙。 B树聚簇存主引二级索引携键行。 最左匹配须恪守失效条件记端详。 like%前通索引废隐式转换路即亡。 or无引全表扫函数运算引无光。 冗余索引当清理独一索引防乱章。 并非多索引便好写增开销暗自伤。记忆点索引失效场景like 以 % 开头索引列做函数、运算隐式类型转换or 条件一侧无索引违背最左前缀原则聚簇索引数据就在索引叶子二级索引存主键回表拿数据。 覆盖索引查询字段全在索引免回表性能大提升。覆盖索引plaintext查询字段索引藏不必回表访本行。 少读磁盘少耗费覆盖索引是良方。三、explain 执行计划plaintextExplain览行路方type列里辨短长。 system const优为上eq_ref ref次第扬。 range仅扫区间内index遍历索引章。 all全表全盘扫此景出现要提防。 Extra字段细端详using filesort排序伤。 using temporary建临时两害相逢性能僵。 using index覆盖好using where条件量。type 优先级system const eq_ref ref range index ALLALL全表扫描尽量消灭Using filesort文件排序消耗大Using temporary临时表多出现 group by、union四、SQL 语句优化plaintextselect莫用星号扬按需取列减行囊。 where早筛缩数据集join少连表数行。 limit深翻慎偏移分页大坑要提防。 in集过大性能降exists斟酌两相量。 避免大事务久悬置锁占长时祸祸殃。 join关联建索引笛卡尔积切莫尝。要点禁止select *大 offset 分页不要直接 limit offset,sizein 集合不要过大join 关联字段务必建索引控制 join 表数量大事务拆分事务尽量小而短五、锁与事务优化plaintext行锁粒度细如芒表锁横扫满仓伤。 意向锁辅行表判间隙锁防幻读殃。 事务简短速提交久持锁柄众争忙。 隔离级别慎调高RC多数业务彰。RC 读已提交大部分业务使用RR 可防幻读但有间隙锁容易死锁。 事务越长持有锁时间越久冲突、死锁概率飙升。六、配置层面优化plaintext缓冲池是核心仓innodb_buffer_pool_size。 内存大半归此用热数据驻内存疆。 日志刷盘调参数平衡性能与安康。 慢查询日志开启捕获慢SQL的祸殃。重点innodb_buffer_pool_size一般设置服务器物理内存 50%‑70%缓存索引 数据页减少磁盘 IO。完整七言背诵诗plaintext建表权衡范式章字段精简忌铺张。 自增主键防分裂大字段要避主行。 B加树作目录章最左匹配不可忘。 前通like隐转换函数运算索引亡。 覆盖索引免回表多引徒增写耗伤。 Explain看type行ALL全扫要提防。 filesort与临时表Extra见此细思量。 SQL勿用星号扬where筛减数据量。 分页深移需巧计大in慎用细权衡。 join字段建索引大事务要速收场。 行锁细粒度为上长持锁柄起争攘。 缓冲池内存多予慢志捕得劣SQL。 调优本是权衡术没有灵丹万事昌。极简面试口诀表要简键要增索引善忌失效覆盖免回表explain 看 type拒 ALL避临时排序SQL 少星号事务短join 建索引锁勿久持有缓冲池要够慢查把祸找