美文网首页
MySQL千万级表优化

MySQL千万级表优化

作者: 其实都没有_8881 | 来源:发表于2018-05-02 13:15 被阅读23次

一,数据库设计优化

      1)表字段名取名是小且有意义

       2)选择合适的字段类型,如性别可用enum

       3)字段默认不为null

        4)创建主键自增,和索引

         5)将经常需要修改的字段和基本不变的字段,分开存放,如登录表中的last_logintime和user所属角色

         6)存储引擎的选择:一般情况下,InnoDB都是正确的选择,除非说需要用到些InnoDB不具备的特性,优先选择InnoDB。对于一个数据库来说,一般都是选择性地使用InnoDB和MyISAM。在需要用到事务处理和崩溃恢复方面,那必定是选择InnoDB,那什么时候考虑使用MyISAM呢,在可以不考虑事务处理,对于崩溃恢复的代价可以承受的,需要更好的读操作,那么应该选择MyISAM,总做周知的是MyISAM在读的性能比InnoDB更快,如一些配置文件,就可以考虑使用MyISAM。

        7)。。。。。。

二,sql语句优化

       1)尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引

       2)任何地方都不要使用 select * from t ,用具体的字段列表代替“*”,不要返回用不到的任何字段

       3)为查询缓存优化你的查询

       4)当只要一行数据时使用 LIMIT

       5)使用explain工具来优化你的sql查询    explain MySQL 优化

       6)slow_query_log 启动定制记录慢查询日志

        7)。。。。。。

三,MySQL中的分区

      MySQL分区讲解

四,MySQL中的分表,分库

     1)分库,将一个数据库下面的表根据需要再分成多个模块 的数据库,然后将读和写分离,度功能数据库用MyISAM引擎,写用innoDB引擎,在需要查询表的地方,对应修改成use 数据库名

        2)分表

         将一个总表,结构不变拆分成多个从表,如user表,创建从表1将user_id从0到99数据放在从表1,创建从表2将user_id为100到199数据放在从表2.。。。

        再需要user表的地方,更改为根据user_id来操作对应的从表即可

五,使用mycat实现MySQL的负载均衡

      mycat 部署MySQL实现读写分离

六,MySQL实现负载均衡

     我对负载均衡的理解:从库和主库数据同步会需要一定时间,所以,数据的实效性会受影响

总结:以上也只是本人的愚见,如有问题欢迎指出,交流。

相关文章

网友评论

      本文标题:MySQL千万级表优化

      本文链接:https://www.haomeiwen.com/subject/thgqrftx.html