#其他问题检查
1.带宽
2.磁盘
3.连接数
#数据库排查 1.查看负载 2.查看慢查询,分析引起慢的语句 3.分析是否走索引 4.创建索引优化 uptime //查看负载 show full processlist; //慢语句查询 my.cnf 设置 //慢语句日志设置 long_query_time = 1 log-slow-queries = /data/3306/slow.log 如发现类似慢语句: select id ad_xxxx where ader='123123' and detaline='2018-08-13' 查看分析索引文件 explain select ad_xxxx where 字段1='123123' and 字段2='2018-08-13' 或 select SQL_NO_CACHE ad_xxxx where ader='123123' and detaline='2018-08-13' 如发现 没走索引,添加之 #看看表结构,是否有索引 show create table 表名\G #统计,查看哪个列唯一值,重复少的 select count(*) from 表; //此表总记录数 select count(distinct 字段) from 表; #可以创建如下联合索引 create index 索引名 on 需要索引的表(字段1,字段2(20),字段3(20))
案例2
数据库负载很高,load值20-30
[root@A-host ~]# uptime 14:13:44 up 4 days, 20:19, 3 users, load average: 30.00, 21.00, 20.00 #登录数据库 show full processlist; mysql -root -p12345 -e "show full processlist; "|grep -vi sleep 如果 语句中有LIKE %xxx内容% 两百分号的查询,走不了索引,MYSQL数据库没有太大优化余地,后面是%的就可以。 优化方案思路 1.从业务上实现用户登陆后再搜索 2.如果有大量频繁搜索,一般是爬虫再爬网站,分析web日志,IP封掉 (AWSTATS) 3.配置多个主从同步,程序上实现读写分离,最好让LIKE %xx内容%这样的查询内容去从库查,减轻主库读写压力 4.在数据库前端加上memcached缓存服务器。 5.LIKE %xx内容% 一般在mysql里很难优化,可以使用sphinx,xapian软件 实现搜索 6,可以利用c,rubu开发程序,实现每日读库计算搜索索引,保存在服务器上提供搜索,然后,每5分钟多一个从库做增量,为搜索做集群。
(AWSTATS)https://www.qinzc.me/post-127.html
停留在世界边缘,与之惜别