这一周线上碰到一个诡异的BUG. 线上有个定时任务,这个任务需要查询一个表几天范围内的一些数据做一些处理,每隔十分钟执行一次,直至成功. 通过日志发现,从凌晨5:26分开始到5:56任务执行了三次,三次都因为SQL查询超时而执行失败,而诡异的是,任务到凌晨6:00多就执行成功了. 每天都是凌晨五点多失败,凌晨六点执行成功. 点开异常日志一看是这样的: 总结来说就是MySQL查询超时. 像这种稳定复现的BUG,我原以为只需三分钟能定位,没有想到却耗费了我半天的时间. 排查之路 Explain 看到…
一.问题概述 问题大概是这样的,有一个功能页面经常查询超时,有时候就算能查询出来也要很长的时间,但是有时又会很快.遇到的这种问题在排除掉网络原因之后基本上可以从查询语句上去找原因. 编译查询SQL语句和查询进程等待结果如下: 1.进程等待 2.编译查询 问题分析: 1.等待类型为SOS_SCHEDULER_YIELD并且CPU时长很长 2.而且查询时长基本上都是消耗在编译这块,实际的查询时长不到一秒. SOS_SCHEDULER_YIELD等待是SQL Server OS调度这块的线程之间的切换…
什么是 mysql-proxy? mysql-proxy是mysql官方提供的mysql中间件服务,上游可接入若干个mysql-client,后端可连接若干个mysql-server. 它使用mysql协议,任何使用mysql-client的上游无需修改任何代码,即可迁移至mysql-proxy上. mysql-proxy最基本的用法,就是作为一个请求拦截,请求中转的中间层: 进一步的,mysql-proxy可以分析与修改请求.拦截查询和修改结果,需要通过编写Lua脚本来完成. mysql-pr…
MySQL查询近一个月的数据 近一个月统计SQL select user_id, user_name, createtime from t_user where DATE_SUB(CURDATE(), INTERVAL 1 MONTH) <= date(createtime); 同理,近一个星期为: INTERVAL 7 DAY. @完…
mysql 查询当天.本周,本月,上一个月的数据 今天 select * from 表名 where to_days(时间字段名) = to_days(now()); 昨天 SELECT * FROM 表名 WHERE TO_DAYS( NOW( ) ) - TO_DAYS( 时间字段名) <= 1 近7天 SELECT * FROM 表名 where DATE_SUB(CURDATE(), INTERVAL 7 DAY) <= date(时间字段名) 近30天 SELECT * FROM 表…
mysql查询当天的所有信息: SELECT * FROM 表名 WHERE year(时间字段名)=year(now()) and month(时间字段名) = month(now()) and day(时间字段名) = day(now()); 这个有一些繁琐,还有简单的写法: SELECT * FROM 表名 WHERE date(时间字段名) = curdate(); 另一种写法没测试过 查询当天的记录 SELECT * FROM 表名 WHERE TO_DAYS(时间字段名) = TO_…
来源:http://blog.rds.aliyun.com/2014/05/23/%E4%B8%80%E4%B8%AA%E7%94%A8%E6%88%B7sql%E6%85%A2%E6%9F%A5%E8%AF%A2%E5%88%86%E6%9E%90%EF%BC%8C%E5%8E%9F%E5%9B%A0%E5%8F%8A%E4%BC%98%E5%8C%96/ 问题描述 一个用户反映先线一个SQL语句执行时间慢得无法接受.SQL语句看上去很简单(本文描述中修改了表名和字段名):SELECT cou…
MySQL 各种超时参数的含义 今日在查看锁超时的设置时,看到show variables like '%timeout%';语句输出结果中的十几种超时参数时突然想整理一下,不知道大家有没有想过,这么多的timeout参数,到底有什么区别,都是做什么用的呢? MySQL [(none)]> show variables like '%timeout%'; +------------------------------+----------+ | Variable_name | Value | +…
转了好多次帖子,其实就是为了使用heartbeat来搭建mysql集群,网上很多都是用make来生成RPM来安装,我也找了很多资料,mysql 自带的cluster用户不满意,只能再次vmware虚拟机尝试下,这里要感谢博客:http://kerry.blog.51cto.com/172631/110206/ ,很多是根据里面的经验来实现的,只是部分还是解决不出需要其他方法. 一.背景 当前大多网站采用Linux +MYSQL+APACHE+PHP这种经典配置,如何防止单点失败造成的整个网站的不…
目录 需求分析 使用示例 模块设计 UML 类图 入口 事务 连接池 连接 查询器的组装 总结 需求分析 本篇我们将通过 Swoole 实现一个自带连接池的 MySQL 查询器: 支持通过链式调用构造并执行 SQL 语句: 支持连接池技术: 支持多协程事务并发执行(协程安全性): 支持连接对象的健康检测: 支持连接对象断线重连: 程序需要可扩展,为未来的改造留好扩展点: 完整项目地址:[协程版 MySQL 查询器](https://github.com/linvanda/mysql) (注:该项…