MySQL数据库负载过高

1首先进入数据库中 show full processlist; 连续多执行几次 找出慢的语句
2找出语句后用explain 加上慢的整个语句 判断是否走索引
3查看表结构 show create table 表名\G
4查看表中列的重复值 select count(distinct 列名) from 表名;(查出列中的不重复的值唯一值)
5查看表中的总记录数 select count(*) from 表名;3000W 以下在线创建索引没有问题 如果大于则要想其他办法
6创建索引 create index 索引名 on 表名(建立索引的列);
7 再利用用explain 加上慢的整个语句 判断是否走索引成功
8 再show full processlist 查看慢语句是否减少
9 uptime 查看服务器负载

数据库负载过高,经过show full processlist;查寻 LIKE ‘%XXX%’语句很多如何解决
有可能这是在网站的搜索栏中用了模糊查寻
优化思路:
1 让用户登录后在搜索,这样减少了搜索次数,减少服务器压力
2 如果有大量的频繁搜索,一般是由爬虫爬网站引起,分析web日志 封掉IP
3 配置多个主从同步,实现读写分离,最好让LIKE’%xxx%’语句去从库查寻,减轻主库写压力
4 在数据库前端加memcache等缓存服务器
5 LIKE’%xxx%’语句在mysql里很难优化,可以通过搜索服务sphinx(俄罗斯的一款搜索软件)实现搜索
6 还可以利用c,ruby等语言开发程序,实现每日读库计算搜索索引,保存在服务器上提供搜索服务

猜你喜欢

转载自blog.csdn.net/bjgaocp/article/details/88203485