免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: zhn158
打印 上一主题 下一主题

【讨论中】求高手诊断:70万条记录,select 要一个多小时,哪里除了问题 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2012-08-17 14:53 |只看该作者
回复 9# cenalulu


    待会使一下,回来报告

多谢版主

论坛徽章:
0
12 [报告]
发表于 2012-08-17 15:24 |只看该作者
本帖最后由 horizonhyg 于 2012-08-17 15:38 编辑
zhn158 发表于 2012-08-17 14:22
没有一个看明白的,还请多多指教:

1、顺序错是啥意思,我是用 create index regoin1 on tbl ...


      再诊断,CU的数据延迟超过两分钟。。。我发的时候还没有看到你发出的explain信息,所以那些都是我猜的,按照sql最慢执行的效率猜的。。坑爹啊!我是想你可以按照那个思路去查询。

      其实也不是全错,因为LAC_CI, start_date的顺序错了,所以他是不走的。所以推断没有LAC_CI索引是正确的。索引里Region1只有一条记录,那也是不走的,选择性非常低,没什么用处。
      
      再者,这样的执行计划能跑1个小时,我觉得已经不是索引的问题了,还有可能CPU跟不上,计算太多了。

论坛徽章:
0
13 [报告]
发表于 2012-08-17 16:00 |只看该作者
本帖最后由 zhn158 于 2012-08-17 16:06 编辑

回复 12# horizonhyg

多谢了,关于主键顺序的问题,如果是下面的查询语句
  1. select start_date,lac_ci,MC01 from tbl110 join tblcell using(lac_ci) where region1='TD' and (start_date between "2012-08-06 00:00:00" and "2012-08-10 00:00:00");
复制代码
或者
  1. select start_date,lac_ci,MC01 from tbl110 join tblcell using(lac_ci) where (start_date between "2012-08-06 00:00:00" and "2012-08-10 00:00:00") and region1='TD' ;
复制代码
哪种主键顺序好

Region1 字段的其他值的记录被我删掉了,以后还会补上的
   

查询时整个CPU(双核)利用率为50%多,而MYSQL占用的CPU资源最高也没有查过20%,大部分时间在10%以下。倒是Mysql的磁盘读写速度800000字节/秒,比较低

论坛徽章:
0
14 [报告]
发表于 2012-08-17 16:35 |只看该作者
tblcell 的 主键顺序改过了:
  1. mysql> show indexes from tbl110;
  2. +--------+------------+------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
  3. | Table  | Non_unique | Key_name   | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_Comment |
  4. +--------+------------+------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
  5. | tbl110 |          0 | PRIMARY    |            1 | LAC_CI      | A         |       10153 |     NULL | NULL   |      | BTREE      |         |               |
  6. | tbl110 |          0 | PRIMARY    |            2 | Start_Date  | A         |      700596 |     NULL | NULL   |      | BTREE      |         |               |
  7. | tbl110 |          1 | Start_Date |            1 | Start_Date  | A         |         115 |     NULL | NULL   |      | BTREE      |         |               |
  8. | tbl110 |          1 | LAC_CI     |            1 | LAC_CI      | A         |       10153 |     NULL | NULL   |      | BTREE      |         |               |
  9. | tbl110 |          1 | CELL_CI    |            1 | CELL_CI     | A         |       10153 |     NULL | NULL   | YES  | BTREE      |         |               |
  10. | tbl110 |          1 | CELL_LAC   |            1 | CELL_LAC    | A         |          39 |     NULL | NULL   | YES  | BTREE      |         |               |
  11. +--------+------------+------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
  12. 6 rows in set (0.01 sec)
复制代码
  1. mysql> explain select start_date,lac_ci,sum(MC01) from tbl110 join tblcell using(lac_ci) where region1='TD' group by start_date,lac_ci;
  2. +----+-------------+---------+------+-----------------+---------+---------+----------------------------+------+----------------------------------------------+
  3. | id | select_type | table   | type | possible_keys   | key     | key_len | ref                        | rows | Extra                                        |
  4. +----+-------------+---------+------+-----------------+---------+---------+----------------------------+------+----------------------------------------------+
  5. |  1 | SIMPLE      | tblcell | ALL  | PRIMARY,region1 | NULL    | NULL    | NULL                       | 5169 | Using where; Using temporary; Using filesort |
  6. |  1 | SIMPLE      | tbl110  | ref  | PRIMARY,LAC_CI  | PRIMARY | 24      | lyg_alc_gsm.tblcell.LAC_CI |   69 |                                              |
  7. +----+-------------+---------+------+-----------------+---------+---------+----------------------------+------+----------------------------------------------+
  8. 2 rows in set (0.02 sec)
复制代码
速度还是没有上来,

论坛徽章:
9
每日论坛发贴之星
日期:2016-01-04 06:20:00数据库技术版块每日发帖之星
日期:2016-01-04 06:20:00每日论坛发贴之星
日期:2016-01-04 06:20:00数据库技术版块每日发帖之星
日期:2016-01-04 06:20:00IT运维版块每日发帖之星
日期:2016-01-04 06:20:00IT运维版块每日发帖之星
日期:2016-01-04 06:20:00综合交流区版块每日发帖之星
日期:2016-01-04 06:20:00综合交流区版块每日发帖之星
日期:2016-01-04 06:20:00数据库技术版块每周发帖之星
日期:2016-03-07 16:30:25
15 [报告]
发表于 2012-08-17 16:50 |只看该作者
楼主到底是哪句慢阿。。。刚才还是select join。。。
这次又给了 group by
咱们一句句来,好不

论坛徽章:
0
16 [报告]
发表于 2012-08-17 16:51 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
17 [报告]
发表于 2012-08-17 16:56 |只看该作者
回复 15# cenalulu
不好意思,都很慢

   

论坛徽章:
0
18 [报告]
发表于 2012-08-17 16:58 |只看该作者
回复 16# kerlion


    把公式去掉了,只留了start_date, LAC_CI, MC01 还是很慢,等了半个小时,也没有出结果,就关掉了

论坛徽章:
9
每日论坛发贴之星
日期:2016-01-04 06:20:00数据库技术版块每日发帖之星
日期:2016-01-04 06:20:00每日论坛发贴之星
日期:2016-01-04 06:20:00数据库技术版块每日发帖之星
日期:2016-01-04 06:20:00IT运维版块每日发帖之星
日期:2016-01-04 06:20:00IT运维版块每日发帖之星
日期:2016-01-04 06:20:00综合交流区版块每日发帖之星
日期:2016-01-04 06:20:00综合交流区版块每日发帖之星
日期:2016-01-04 06:20:00数据库技术版块每周发帖之星
日期:2016-03-07 16:30:25
19 [报告]
发表于 2012-08-17 18:05 |只看该作者
你把所有列都去掉,换成count(*) 看看有多慢。
顺带看看运行的时候 iostat -x 1 的结果

论坛徽章:
0
20 [报告]
发表于 2012-08-17 18:47 |只看该作者
  1. select start_date, sum(mc01) from tbl110 join tblcell using(lac_ci) where region1='TD' group by start_date
复制代码
上面语句运行10秒
  1. select start_date, sum(mc01) from tbl110 group by start_date
复制代码
上面语句运行7秒
  1. select start_date, lac_ci,mc01 from tbl110
复制代码
上面语句运行4秒
  1. select start_date, lac_ci,mc01 from tbl110 join tblcell using(lac_ci) where region1='TD'
复制代码
上面语句运行9秒
  1. select start_date, lac_ci,mc01 from tbl110 join tblcell using(lac_ci) where region1='TD' group by start_date,lac_ci
复制代码
上面语句运行43秒
  1. select * from tbl110
复制代码
上面语句运行50秒
  1. select start_date,lac_ci,公式1.........公式60 from tbl110 join tblcell using(lac_ci) where region1='TD' group by start_date,lac_ci
复制代码
上面语句运行n秒
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP