12
返回列表 发新帖
楼主: waityou81

一个走主键的查询很慢的问题

[复制链接]
论坛徽章:
15
2013年新春福章
日期:2013-02-25 14:51:242015年新春福章
日期:2015-03-06 11:58:18美羊羊
日期:2015-03-04 14:52:28马上有钱
日期:2014-12-22 21:25:57马上有房
日期:2014-04-16 17:40:23马上有钱
日期:2014-04-10 10:55:56优秀写手
日期:2014-03-20 06:00:362014年新春福章
日期:2014-03-06 13:50:46马上有钱
日期:2014-02-18 16:43:092014年新春福章
日期:2014-02-18 16:43:09
11#
发表于 2013-8-20 11:53 | 只看该作者
1.统计下这些运行缓慢sql的 Time、ip、Id,会不会集中在一个特别的时间,或者来自相同的应用。
2.手工 IGNORE INDEX查询一下,看看所用时间大概是多少。

使用道具 举报

回复
论坛徽章:
5
ITPUB 11周年纪念徽章
日期:2012-10-10 13:11:142013年新春福章
日期:2013-02-25 14:51:242014年新春福章
日期:2014-02-18 16:44:08马上有对象
日期:2014-02-18 16:44:08马上有车
日期:2014-04-02 15:02:45
12#
发表于 2013-8-20 14:55 | 只看该作者
jinguanding 发表于 2013-8-20 11:14
这个lock 的意思,表示其锁记录的 或锁表的时长,不是其等待的时长~~~ 越是2个值差别大,越说明有锁等 ...

你的意思是说这个Lock值是当前分析的这个sql语句对涉及到的表锁住的时间,而不是等待被锁表的时间,是吧

使用道具 举报

回复
论坛徽章:
56
马上加薪
日期:2014-12-22 13:11:12复活蛋
日期:2011-08-31 14:55:20ITPUB9周年纪念徽章
日期:2010-10-08 09:32:252010世博会纪念徽章
日期:2010-09-07 08:52:012010年世界杯参赛球队:瑞士
日期:2010-06-24 09:16:222010年世界杯参赛球队:德国
日期:2010-04-27 09:40:272010年世界杯参赛球队:韩国
日期:2010-04-23 23:34:412010新春纪念徽章
日期:2010-03-01 11:06:222010新春纪念徽章
日期:2010-01-04 08:33:08参与WIN7挑战赛纪念
日期:2009-11-06 10:44:24
13#
 楼主| 发表于 2013-8-20 16:24 | 只看该作者
本帖最后由 waityou81 于 2013-8-20 16:25 编辑
jinguanding 发表于 2013-8-20 11:14
这个lock 的意思,表示其锁记录的 或锁表的时长,不是其等待的时长~~~ 越是2个值差别大,越说明有锁等 ...

你的意思和我理解的意思不同啊。我的理解是这个Lock_time是当前语句等待别的session释放锁的时间而不是当前语句锁记录或表的时间。按照你的意思,如果一个select的query time很长而lock_time很短,这代表这个select会锁住表或记录?

使用道具 举报

回复
论坛徽章:
56
马上加薪
日期:2014-12-22 13:11:12复活蛋
日期:2011-08-31 14:55:20ITPUB9周年纪念徽章
日期:2010-10-08 09:32:252010世博会纪念徽章
日期:2010-09-07 08:52:012010年世界杯参赛球队:瑞士
日期:2010-06-24 09:16:222010年世界杯参赛球队:德国
日期:2010-04-27 09:40:272010年世界杯参赛球队:韩国
日期:2010-04-23 23:34:412010新春纪念徽章
日期:2010-03-01 11:06:222010新春纪念徽章
日期:2010-01-04 08:33:08参与WIN7挑战赛纪念
日期:2009-11-06 10:44:24
14#
 楼主| 发表于 2013-8-20 18:13 | 只看该作者
jinguanding 发表于 2013-8-20 11:14
这个lock 的意思,表示其锁记录的 或锁表的时长,不是其等待的时长~~~ 越是2个值差别大,越说明有锁等 ...

我做了一个简单的测试。
session1:
MariaDB [test]> select * from ee;
+------+
| ee   |
+------+
|    8 |
|    8 |
+------+
2 rows in set (0.00 sec)

MariaDB [test]> show create table ee;
+-------+--------------------------------------------------------------------------------------+
| Table | Create Table                                                                         |
+-------+--------------------------------------------------------------------------------------+
| ee    | CREATE TABLE `ee` (
  `ee` int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
+-------+--------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

MariaDB [test]> begin;
Query OK, 0 rows affected (0.00 sec)

MariaDB [test]> update ee set ee=10;
Query OK, 2 rows affected (0.00 sec)
Rows matched: 2  Changed: 2  Warnings: 0

session2:
MariaDB [test]> update ee set ee=11;
Query OK, 2 rows affected (5.20 sec)
Rows matched: 2  Changed: 2  Warnings: 0

这个时候session 2会被阻塞。等待大概5s后提交session1,然后session2的语句会成功执行,同时slow log也会记录session2这个语句:
# User@Host: root[root] @ localhost []
# Thread_id: 60  Schema: test  QC_hit: No
# Query_time: 5.192962  Lock_time: 5.183352  Rows_sent: 0  Rows_examined: 2
SET timestamp=1377022063;
update ee set ee=11;


可以看到Lock_time: 5.183352,表示是它等待其他session释放锁的等待时间,而不是当前session锁记录的时间

使用道具 举报

回复
论坛徽章:
32
ITPUB十周年纪念徽章
日期:2011-11-01 16:25:22马上加薪
日期:2014-12-08 22:53:43马上有房
日期:2014-12-09 01:05:19美羊羊
日期:2015-03-04 14:52:282015年新春福章
日期:2015-03-06 11:58:18巨蟹座
日期:2015-11-17 11:02:55双子座
日期:2015-11-17 12:21:47白羊座
日期:2015-12-10 17:27:08狮子座
日期:2016-02-23 10:11:01双子座
日期:2016-02-23 10:17:05
15#
发表于 2013-10-16 14:12 | 只看该作者
sql语句本身没有问题就是有锁表情况。

使用道具 举报

回复
论坛徽章:
32
ITPUB十周年纪念徽章
日期:2011-11-01 16:25:22马上加薪
日期:2014-12-08 22:53:43马上有房
日期:2014-12-09 01:05:19美羊羊
日期:2015-03-04 14:52:282015年新春福章
日期:2015-03-06 11:58:18巨蟹座
日期:2015-11-17 11:02:55双子座
日期:2015-11-17 12:21:47白羊座
日期:2015-12-10 17:27:08狮子座
日期:2016-02-23 10:11:01双子座
日期:2016-02-23 10:17:05
16#
发表于 2014-2-7 17:23 | 只看该作者
还是可以lock锁的问题或某个事件等待造成的。

使用道具 举报

回复
论坛徽章:
3
ITPUB十周年纪念徽章
日期:2011-11-01 16:24:042014年新春福章
日期:2014-02-18 16:43:09马上有钱
日期:2014-02-18 16:43:09
17#
发表于 2014-2-12 13:14 | 只看该作者
提议看一下查询发生时系统资源的使用情况vmstat  , top。并且慢查询发生时用profiling工具抓一下查询的统计信息。
有可能是IO或者CPU繁忙的原因。

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表