Mysql在大负载的时候,如何优化,更适合自己。看了车东的MySQL服务维护笔记,有点收获,简单总结如下。
程序端:
1. 尽量在程序总减少查询Mysql的次数,并且查询以后记得关闭链接,但是建议使用常连接,这样能够减少建立连接的开销。当然,如果能够生成静态页是最好了。
2. 尽量不使用关联查询,最好一个操作只针对一个表,一次关联查询就是一次笛卡儿乘积,极度的耗费资源。如果需要查询多个表,尽量使用多个程序来完成,让数据库的负担由程序分担一些。如果能够用left join解决的,就不要用inner join
3. 搜索的时候尽量少用like而改用全文搜索来提高效率
4. 进行统计这种实时性不是那么强的操作的时候最好能够生成静态的,定时进行统计,如果每次访问者访问的都是都对数据库进行统计查询将非常耗费资源
5. 程序中如果能够把很多页面,特别是访问量大的页面生成静态,这是最好的服务器端:
1. 如果Mysql的CPU占用率超过10%,就应该考虑优化了
2 安装的时候如果不使用innoDB,记得关闭:./configure --prefix=/home/mysql --without-innodb,因为它的速度比MyISAM的速度慢很多。
3. 如果有多个服务连接同一台Mysql服务器,相应单个MySQL服务的CPU占用仍然在10%以上, 就应该考虑把服务拆分到多端口来运行,这样还能够增大Mysql的连接数
4. 设计数据库结构一定要合理,最常被访问的10%的数据放在一个小表里,90%的历史数据放在一个归档表里。将所有的定长字段(char, int等)放在一个表里,所有的变长字段(varchar,text,blob等)放在另外一个表里,2个表之间通过主键关联,这样,定长字段表可以得到很大的优化。
5. 给关键字段建立索引,建立索引和不建立索引差别真的很大,特别是大批量查询的时候