一、概述
1、影响 MySQL 查询性能的因素
(1)cpu
(2)字段数量(尽量控制在)
(3)某一列数据本身大小
(4)数据量
(5)索引建立,回表
2、MySQL 性能优化演变过程
(1)单表单库
(2)读写分离
(3)表分区
(4)垂直分表
(5)水平分表
(6)分库
3、垂直切分的方案
一般采用冷热数据一刀切的方式,比如一张表,商品ID、商品名、商品货号比较常用,而商品内容不是很常用,就把商品内容这一列数据给切出来,独立为一张表,用商品ID进行关联
在项目之处,最好就要考虑到垂直切分,如果在项目完成或进行阶段再进行垂直切分,就需要修改代码了,比较麻烦
4、水平切分的方案
可能会根据时间、用户ID取模等规则进行水平切分。水平切分之后,必定会对一些查询非常不友好。这一点需要注意。
建议:单表数据量达到五百万,单表容量达到5G之后,再进行水平切分。
# 实现示例:
Createtable order_201901asselect*fromorderwhereyear=2019andmonth=1;
5、表分区(分片)
二、问题及解决
1、带来的问题
分表之后,原来很简单的查询操作比如:join、分页、orderby、groupby 等操作,实现上都将变得非常麻烦。
2、如何解决
市场上有很多mysql的中间件,其中使用最广泛,社区最活跃的中间件之一就是mycat。