码迷,mamicode.com
首页 > 数据库 > 详细

mysql数据库性能优化 - 表优化

时间:2015-01-04 19:06:04      阅读:189      评论:0      收藏:0      [点我收藏+]

标签:

数据库对象优化                                                                                                                                       

1、优化表的数据类型

  • 使用procedure analyse()对当前应用的表进行分析,该函数可以对数据表中的列的数据类型提出优化建议。select * from tb1_name procedure analyse();

2、通过拆分提高表的访问效率--分库分表

  • 垂直拆分:把主码和一些列放到一个表,然后把主码和另外的列放到另一个表中
  • 水平拆分:根据一列或多列数据的值把数据行放在两个独立的表中。

3、逆规范化

4、使用中间表提高统计查询速度

5表维护

1)找到并修复损坏的表

2)更新索引统计信息

3)减少索引和数据的碎片

  • 分析表:analyze table sales;
  • 检查表:check table sales;
  • 优化表:optimize table sales;

 分库分表

1、分库分表策略演进

1)单库单表:最常见的数据库设计,例如,有一张用户表放在数据库db中,所有用户都可以在db库中的use表中查到

2)单库多表:随着用户数量的增加,user表的数据量越来越大,当数据量达到一定程度的时候对user表的查询会逐渐的变慢,从而影响整个db的性能,如果使用mysql,还有一个更严重的问题是,当需要添加一列的时候,mysql会锁表,期间所有的读写操作只能等待。可以通过某种方式将user进行拆表,产生两个表结构完全一样的user_0000、user_0001等表,user_0000+user_0001+...的数据刚好是一份完整的数据。

3)多库多表:随着数据量增加,也行单台db的存储空间不够,随着查询量的增加,单台数据库服务器已经没办法支撑,这时候可以再对数据库进行拆分。

 

2、分库分表规则

1)按号段分:user_id区分,1~1000的对应db1,1001~2000的对应db2,以此类推

2)hash取模分:对user_id进行hash(或者user_id是数值型的话可以直接使用user_id的值),然后用一个特定的数字,比如应用中需要将一个数据库切分为4个数据库的话,就用4这个数字对user_id的hash值进行取模运算,也就是user_id%4。

3)在认证库中保存数据库配置:就是建立一个db,这个db单独保存user_id到db的映射关系,每次访问数据库的时候都要查询一次这个数据库,以得到具体的db信息,然后才能进行我们需要的查询操作。

 

mysql数据库性能优化 - 表优化

标签:

原文地址:http://www.cnblogs.com/yezhaohui/p/4201584.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!