mysql 优化(五)
9. 垂直分表
水平分表:是把一个表的全部记录信息分别在存储到不同的分表中(以一条记录信息为最小单位)
垂直分表:是把一个表的全部字段分别存储到不同的表里变(按字段分表,一个或多个字段存储在一个表中)
有的时候,一个数据表设计好了,里边有许多字段,但是这些字段有的是经常使用的,有的是不常用的。
例如,一个数据表有20个字段,其中10个字段是常用的,后10个字段是不常用的
那么在操作常用字段的时候,就不得不给其他不常用的字段也分配一定的资源进行操作。
数据表:
会员表: user_id 登录名 密码 邮箱 手机号码 身高 体重 性别 家庭地址 身份证号码
以上表,红色是常用的,蓝色的是不常用的
为了使得常用字段运行速度更快、效率更高,把常用字段给跳出来,因此数据表做以下设计:
会员表(主)字段:user_id 登录名 密码 邮箱 手机号码
会员表(辅)字段:user_id 身高 体重 性别 家庭地址 身份证号码
以上把会员表根据字段是否常用给分为两个表的过程就是垂直分表。
10. 架构设计架构设计也称为集群设计,由多台mysql服务器共同支撑网站的运行,每台服务器分担的工作就比较少,运行速度快,效率高
mysql数据库在运行的时候一般查询/写入的sql语句比例为 7/1,并且查询消耗的资源比写入的要更多
因此可以设计一个“主从模式”的集群,与之前redis的主从模式使用模式一样
维护备份的集群架构:
主从模式的集群架构:
11. 慢查询日志收集
我们要把系统里边一些执行速度非常慢的sql语句给收起来,并做分析优化,使得其执行速度加快
开启慢查询语句:set global slow_query_log =1;
设置慢查询判断时间阀值:set long_query_time=2;