1.访问慢问题
1.1 应用反应mysql网站打开慢
top查看CPU是否是mysql占得较多;
uptime查看负载情况;
进入到mysql库中,查看进程数:show (full) processlist;
1.2 开启慢查询日志
long_query_time=1
log-slow-queries = /data/3306/slow.log
1.3 explain某一条语句,看是否走索引
索引建议建在唯一值较多(即重复值少的)的列上,若三个列都很多,则可基于三个列建立联合索引。
对于数据库中像like‘%XXX%’这样的语句特别多,会导致数据库负载很高,但是没有太大的优化余地(如百度的搜索栏界面),这种情况下的优化方案思路:
1)从业务上实现用户登录后再搜索,可减少搜索次数,从而减轻数据库服务压力
2)如果有大量频繁的搜索,可能是爬虫在爬,这时需要分析web日志,封掉其IP
3)配置多个主从同步,程序上实现读写分离(最好让like这种查询去从库查),减轻主库读写压力
4)在数据库前端增加memcached缓存服务器
5)可以通过搜索服务Sphinx实现搜索
6)可以利用c,ruby开发程序,实现每日读库计算搜索索引,保存在服务器上提供搜索,然后每五分钟多一个从库做一次增量
2.mysql优化
2.1 硬件优化
CPU:一台服务器8-16颗
内存:96G-128G跑3-4个实例,32G-64G跑2