mysql中对执行效率慢的sql的抓取

一天又要过去了,为了不使得这一天过得虚无,没意义,结束今天 工作 之前来记录点东西,纯粹为了给自己一个以后的回顾。
  今天任务不是特别忙,于是想看点DB的东西,想到DB前端时间记录slow.sql的一个分享,于是打算研究下这一块,查询了下网络资料和自己实际动手实践了一遍。对于mysql数据库来说,本身有一个logdump的功能,可以将设置的符合条件的sql语句记录到我们指定位置的slow.log里面,而这些符合条件的条件的设置都可以在mysql的my.cnf文件里面设置,设置完成之后,需要重新启动mysql才能生效,其中的两个参数比较重要,一个是long_query_time,一个是slow_log_file所对应的位置(两个参数的意思就是直译的意思)。
   我这次的实验配置的long_query_time时间为5S(具体多少,可以自己根据实际情况配置),重启生效之后,在前端执行查询的操作,前端抓包看到对应的查询time_duration时间为12.65S,符合long的设置,于是查看生成的slow.log文件,其中记录的内容为执行的sql语句和消耗的时间。
   在这里需要注意,我们平常说为了减少对DBserver的压力,我们会在real-dbserver前面加上作为缓存的机器对查询的结果进行缓存,比如memcached就可以干这个。其实DBserver上的dbms服务软件本身也可以设置缓存,分为读写两部分缓存。
   在对本身的缓存所造成影响的分析上,注意下缓存的原理,这个地方使用缓存需要满足以下几个条件:
1、使用的sql语句文本是完全一致的,是完全一致(大小写貌似无所谓)

2、对应操作的表不能有更新的操作(insert,update等),只要一有更新的操作,cache会失效,再次查询,将不会从缓存中读取。

3、 需要注意,默认字符集对缓存命中率的影响。通常情况下,如果客户端与服务器之间所采用的默认字符集不同,则即使查询语句相同、在两次查询之间记录与表结构也没有被更改,系统仍然认为是不同的查询。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值