MySQL体系结构![](https://i-blog.csdnimg.cn/blog_migrate/4730ae3ae8e23973f4b4b16cd774eef8.png)
存储引擎
存储引擎就是存储数据、建立索引、更新/查询数据等技术的实现方式。存储引擎是基于表的,而不是基于库的,所以存储引擎也可被
称为表类型。
InnoDB![](https://i-blog.csdnimg.cn/blog_migrate/2646c36d17881435e698e2eb0a86dd0e.png)
MyISAM
Memory![](https://i-blog.csdnimg.cn/blog_migrate/7526231f79eea830b40fe372e544bab9.png)
MyISAM和InnoDB的区别 ![](https://i-blog.csdnimg.cn/blog_migrate/ca76459bf0eb743d26ae6438c2c95902.png)
存储引擎的选择![](https://i-blog.csdnimg.cn/blog_migrate/f82e9de40d941b690cc8b734a6ffedcf.png)
索引
索引是种数据结构,用于高效获取数据。
索引结构![](https://i-blog.csdnimg.cn/blog_migrate/997bdbb72968233a83c7f6d0f4abc1ce.png)
B+ Tree![](https://i-blog.csdnimg.cn/blog_migrate/d1d272d05d5fe051a935dd85c6e235ab.png)
Hash![](https://i-blog.csdnimg.cn/blog_migrate/aea5445d95bdf4cda95a36e2b6e3e3db.png)
为什么InnoDB存储引擎选择使用B+tree索引结构?![](https://i-blog.csdnimg.cn/blog_migrate/091801b6ffbe19fb10579bc2a00a6bd2.png)
索引分类![](https://i-blog.csdnimg.cn/blog_migrate/f539ca167ed4d1807d1988818900d2b8.png)
回表查询![](https://i-blog.csdnimg.cn/blog_migrate/1ec3de595892d6bd9d5c59e5ceff7618.png)
思考题:InnoDB主键索引的B+tree高度为多高呢?![](https://i-blog.csdnimg.cn/blog_migrate/4054ea7db653e7af62d87d9204496908.png)
索引语法![](https://i-blog.csdnimg.cn/blog_migrate/49d4ac4da3e24b0f1986b46a2954b776.png)
SQL性能分析
SQL执行频率
慢查询日志 ![](https://i-blog.csdnimg.cn/blog_migrate/c4d99287b62f5d3404fb94d9e034309a.png)
profile详情
Explain执行计划
索引使用
最左前缀法则![](https://i-blog.csdnimg.cn/blog_migrate/bcdeb76cb7f0d57e162ff883dccf7a46.png)
索引失效![](https://i-blog.csdnimg.cn/blog_migrate/e93160753b25fa9eb8750fa54dd0b321.png)
SQL提示![](https://i-blog.csdnimg.cn/blog_migrate/eed862c3d1d5ef34c3f7b6c5cea50e22.png)
覆盖索引
覆盖索引不用回表查询。
思考题![](https://i-blog.csdnimg.cn/blog_migrate/e28e55eafbffe6bcbed8eaff20e97af3.png)
创建联合索引username和password,将联合索引作为二级索引,id为二级索引的值,就能做到覆盖查询。
前缀索引![](https://i-blog.csdnimg.cn/blog_migrate/60bbf71800f38f4e365c18966110a810.png)
单列索引与联合索引![](https://i-blog.csdnimg.cn/blog_migrate/4f640bac83864a4f68e41f0a3601d6d1.png)
设计原则![](https://i-blog.csdnimg.cn/blog_migrate/dde453fe4b705e1880f933578ae038a0.png)
垂直分表
按照业务维度将表拆分到不同的数据库中专库专用,分担数据库压力。
场景
全局表配置
水平分表
按某种规则将单表数据拆分到多张表中从理论上突破了单机数据量的瓶颈,是分库分表的标准解决方案。
场景![](https://i-blog.csdnimg.cn/blog_migrate/2fbd0f4bc4859226a0a0cb4f0d43eb15.png)
准备![](https://i-blog.csdnimg.cn/blog_migrate/92e8e73784a47b1518312bd85767ec74.png)
测试![](https://i-blog.csdnimg.cn/blog_migrate/02e8db183914597e59522b938f290e9e.png)