导图社区 MYSQL-进阶篇(一)
这是一篇关于MYSQL-进阶篇(一)的思维导图,包含存储引擎、索引、SQL优化等内容。希望对你有所帮助!
这是一篇关于MYSQL-基础篇(二)的思维导图,包含约束、 多表查询、窗口函数、事务等。有需要的朋友赶紧收藏吧!
这是一篇关于MYSQL-基础篇(一)的思维导图,MySQL是一个流行的关系型数据库管理系统(RDBMS),使用SQL(结构化查询语言)作为其主要的查询语言。
社区模板帮助中心,点此进入>>
互联网9大思维
组织架构-单商户商城webAPP 思维导图。
域控上线
python思维导图
css
CSS
计算机操作系统思维导图
计算机组成原理
IMX6UL(A7)
考试学情分析系统
MYSQL-进阶篇(一)
存储引擎
MYSQL体系结构:
简介:存储引擎是存储数据、建立索引、修改查询数据等技术的依赖,存储引擎基于表。
存储引擎相关的SQL语句:
三类常用存储引擎
InnoDB
简介:兼顾高可靠性与高性能的通用存储引擎,MYSQL5.5版本以后,成为MYSQL默认存储引擎
特点:
相关文件:
逻辑存储结构:
MyISAM
简介:MYSQL早期版本的默认存储引擎
Memory
简介:表数据存入内存,由于内存大小及断电等限制,只能将表作为临时表或缓存
三类常用存储引擎对比图:
存储引擎的选取:
索引
简介:索引是一种有序的数据结构,有助于MYSQL高效查询数据:
索引的优缺点:
索引结构
概述:由于索引依赖于存储引擎,因此不同的存储引擎支持的索引结构不完全相同
四类索引结构:
四类索引结构及支持的存储引擎:
B+树的升级与推导
二叉树:
红黑树:
B树:
B+树:
Hash索引结构
推导:
索引分类
普遍分类:
InnoDB存储引擎按照索引存储形似划分:
举例说明
原始数据:
id字段为主键,建立主键索引(聚集索引):
name字段建立索引(二级索引):
面临查询索引的作用:
索引语法
创建、查看、删除索引:
性能分析
查看数据表的查询执行频率(若数据表大多数操作为查询,则可以考虑建立索引进行优化):
通过慢查询日志筛选查询速度较慢的SQL语句:
通过profile获得所有SQL语句的执行时间:
查看所有SQL执行时间:
查看某一SQL详细信息:
通过Explain查看SQL的执行计划:
索引使用原则
最左前缀法则:
索引失效情况
索引列运算,导致索引失效
举例说明:
字符串类型索引列,不加单引号导致隐式类型转换,从而索引失效
头部模糊查询,导致索引失效
通过or连接的字段必须均有索引,索引才会生效:
数据分布影响:
SQL提示:
覆盖索引:
原理+举例:
前缀索引:
联合索引底层原理:
索引设计原则:
SQL优化
数据插入优化
方式一:尽量采用批量插入与手动事务提交:
原因:单条插入和自动事务提交会与服务器频繁建立连接与交互,降低性能
方式二:尽量按照主键顺序插入数据
方式三:大批量数据采用load方式(insert性能不足):
主键优化
方式一:满足业务需求的同时,尽量降低主键长度
原因:主键长度较长,导致二级索引较多,降低查询性能
方式二:插入数据时,尽量选择顺序插入,选择使用auto_increment自增主键
原因:乱序插入会出现页分裂现象,降低性能
页分裂:
页合并:
方式三:业务操作,尽量避免修改主键(代价很大)
order by优化
方式一:根据排序字段建立合适的索引,多字段排序遵循最左前缀法则
注意:多字段排序可以按照升序、降序创建特定索引:
方式二:尽量使用覆盖索引
原因:避免回表查询,降低性能
方式三:通过增大排序缓存区sort-buffer_size(默认256K)
原因:无法通过索引进行优化
group by优化
方式:根据分组字段建立合适的索引,多字段分组遵循最左前缀法则:
limit 优化
方式:覆盖索引+子查询:
count优化
方式:
update优化
方式:根据更新条件字段建立合适的索引,形成行锁,提高事务并发性能: