mysql优化
-一、硬件优化(优化的主要点)
01.CPU----最好是64位的,例:8-16颗CPU
02.内存----例:96G-128G,3-4个实例
03.disk----数量越多越好,性能:ssd(适合高并发业务)>sas(普通上线业务)>sata(适合线下)
RAID----部署合适的RAID
04.网卡----多块网卡bond,以及buffer,tcp优化
-二、软件优化
01.操作系统----x86_64
02.软件:mysql,编译优化
-三、my.cnf里面参数优化 (一般效果不是很明显)
01.使用调优工具
-四、sql语句的优化
01.索引优化
a.抓取出慢查询sql
b.可以使用慢查询日志分析工具
(对于查询慢的select语句,可以使用explain查看查询;一般在唯一值或者重复比较少的列上面简历索引,如果多条件查询中的条件,全部都是唯一值少,重复较多,这时候可以采用联合索引,对于多个列一起进行建立索引)
c.晚上零点分析慢查询,发到核心开发,dba分析。
02.拆分大的复杂的sql语句
子查询,jion查询。
03.数据库是存储数据的地方不是计算数据的地方
04.对于LIKE "%XXXIII%"之类的前后都是%的查询,sql索引不起作用(一般是一些搜索会出现这种问题)
解决:a.从业务上,可以实现用户登录后再查询或者搜索,减少搜索次数
b.如果大量频繁的搜索,一般是爬虫在爬,这时就可以分析web日志,将频繁查询的IP封掉
c.配置主从同步,程序实现读写分离
d.在数据库前端加memcached缓存服务器
e.不用数据库进行查询,用搜索软件
-五、架构上的优化
01.业务拆分,搜索功能,like "%XXX%",一般不用mysql数据库
02.数据库前端必须加cache,例如:memcached
03.业务拆分,某些业务应使用nosql持久化存储
比如:粉丝关注、好友关系等
04.动态数据静态化
05.数据库集群与读写分离,一主多从
06.单表过多,进行拆库拆表
-六、流程,制度,安全优化