一,数据库设计优化
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中的分表,分库
1)分库,将一个数据库下面的表根据需要再分成多个模块 的数据库,然后将读和写分离,度功能数据库用MyISAM引擎,写用innoDB引擎,在需要查询表的地方,对应修改成use 数据库名
2)分表
将一个总表,结构不变拆分成多个从表,如user表,创建从表1将user_id从0到99数据放在从表1,创建从表2将user_id为100到199数据放在从表2.。。。
再需要user表的地方,更改为根据user_id来操作对应的从表即可
五,使用mycat实现MySQL的负载均衡
六,MySQL实现负载均衡
我对负载均衡的理解:从库和主库数据同步会需要一定时间,所以,数据的实效性会受影响
总结:以上也只是本人的愚见,如有问题欢迎指出,交流。