一.网站访问慢案例套路
网站访问慢,可能有多种情况,这里主要是mysql数据库慢引起的排除情况。
1.show full processlist;进行查看,通常查询结果是空,如果执行两遍,结果都是一样的,那么基本就能确定是这条语句了。
2.在my.cnf中,
long_query_time=1
log-slow-queries= /data/3306/show.log
也是可以进行查看的,查看到底是哪个语句进行了慢查询。
、
3.查看当前的负载情况:uptime, 大致负载就是服务器的核数,分别表示 1分钟、5分钟、15分钟的负载,正常情况下,一般都是0.00,表示很空闲
[root@proxy ~]# uptime
19:53:30 up 1 day, 3:53, 3 users, load average: 0.00, 0.00, 0.00
4.对于查询出来的语句,要排查是否走了索引,查看索引情况:
explain sql语句 ---查看sql是否走了索引
select SQL_NO_CACHE sql语句 --不走缓存的查询sql语句
5.查看sql语句对应的所需要查询的所有列的行数,确定索引的建立
例如:select count(distinct ader) from ad_odlboy_detail;
这里需要注意:一般条件是=的索引效果最高
创建联合索引:
create index d_a_p on ad_olboy_detail(dateline,ader(20),pos(20));
6.再次测试,查看show full processlist,uptime 等,基本mysql数据库问题解决。
二、如果查询结果中有%%时,比如百度一个:脑白金,那么在后台mysql数据库中的语句是:select xx like ‘%脑白金%’
一般在数据库进行了阻塞后,整体网站打开是非常慢的,但是因为%%的原因,无法通过索引进行处理,这里给出4中方案:
1)从业务上解决,让用户登陆上再进行搜索,减少一部分用户的搜索情况
2)频繁搜索,一般是爬虫在爬,分析web日志IP封杀
3)配置主从同步,读写分离
4)在数据库前端加memcached缓存
短期情况 1)2)方案进行处理 ;后期情况发展为3)4)方案进行处理。
三、mysql数据库安全权限控制管理思想
1.项目制度与流程管理
办公室开发--办公司测试--IDC测试环境--IDC正式环境。通过这种较为完善的项目开发制度及流程控制,尽可能的防止潜在的问题隐患发生。
2.数据库更新流程
开发人员提交需求--开发主管--部门领导审核--DBA审核--DBA执行项目--IDC正式执行
注意:
1) 数据库流程执行完毕后,再项目制度与流程管理上进行执行操作完毕
2)开发在提交需要后,要告知领导和审核人员,然后依次审核,对于紧急需求,可以根据紧急程度特殊处理,可以制定紧急需求处理流程
3)通过这种完善的流程控制,可以防止很多潜在的数据丢失、破坏等问题的发生。(重要的思想是控制发生,并不是发生了解决的能力)
十二、网站访问慢数据库问题及数据库核心管理思想
原文:https://www.cnblogs.com/dangjingwei/p/11537553.html