楼主: gyjohn

Mysql 简单SELECT,第一次很慢,以后很快,这是什么问题

[复制链接]
论坛徽章:
1
咸鸭蛋
日期:2013-04-29 10:44:35
11#
 楼主| 发表于 2013-1-9 14:19 | 只看该作者
本帖最后由 gyjohn 于 2013-1-9 14:25 编辑

把数据导到SQLServer,建立相同的索引,把上面的时间范围改成一个月,首次运行只要2秒不到,而Mysql要超过2分钟。
会不会是索引碎片问题?用了optimize table,但结果还是一样。
靠,真的开始怀疑Mysql的能力了。

使用道具 举报

回复
论坛徽章:
2
2013年新春福章
日期:2013-02-25 14:51:24蜘蛛蛋
日期:2013-07-22 09:34:38
12#
发表于 2013-1-9 16:42 | 只看该作者
gyjohn 发表于 2013-1-9 14:19
把数据导到SQLServer,建立相同的索引,把上面的时间范围改成一个月,首次运行只要2秒不到,而Mysql要超过2 ...

sql_no_cache竟然没起作用,比较奇怪

另外,show profile all的Sending data中的那行数据能完整贴下么?

使用道具 举报

回复
论坛徽章:
3
2013年新春福章
日期:2013-02-25 14:51:24蜘蛛蛋
日期:2013-07-09 17:23:56路虎
日期:2013-07-30 17:38:11
13#
发表于 2013-1-9 17:33 | 只看该作者
试下LOAD INDEX INTO CACH呢。

使用道具 举报

回复
论坛徽章:
1
ITPUB 11周年纪念徽章
日期:2012-10-09 18:11:48
14#
发表于 2013-1-9 18:42 | 只看该作者
查询缓存是有影响

使用道具 举报

回复
论坛徽章:
9
蛋疼蛋
日期:2011-10-18 11:00:17ITPUB十周年纪念徽章
日期:2011-11-01 16:25:51蜘蛛蛋
日期:2011-11-09 13:48:06迷宫蛋
日期:2011-11-24 10:38:342012新春纪念徽章
日期:2012-01-04 11:56:44蜘蛛蛋
日期:2013-07-12 21:52:36凯迪拉克
日期:2013-12-12 09:53:072014年新春福章
日期:2014-02-18 16:44:08马上有对象
日期:2014-02-18 16:44:08
15#
发表于 2013-1-9 20:32 | 只看该作者
第二次很快 说明是永乐query cache,
第一次很慢 原因可能是磁盘io能力,key cache设置太低等因素

使用道具 举报

回复
论坛徽章:
1
咸鸭蛋
日期:2013-04-29 10:44:35
16#
 楼主| 发表于 2013-1-9 21:39 | 只看该作者
G8bao7 发表于 2013-1-9 16:42
sql_no_cache竟然没起作用,比较奇怪

另外,show profile all的Sending data中的那行数据能完整贴下么 ...

show profile all只有我贴的这3列有数据:DURATION,CPU_USER,CPU_SYSTEM
其它列基本都为0,包括Sending data这一行,所以我没贴出来。

使用道具 举报

回复
论坛徽章:
1
咸鸭蛋
日期:2013-04-29 10:44:35
17#
 楼主| 发表于 2013-1-9 22:04 | 只看该作者
本帖最后由 gyjohn 于 2013-1-9 22:05 编辑
dukope 发表于 2013-1-9 20:32
第二次很快 说明是永乐query cache,
第一次很慢 原因可能是磁盘io能力,key cache设置太低等因素

第二次很快,迷惑了问题本质,仔细一想,第一次慢,就说明mysql处理这个sql有问题,因为客户第一次查询就timeoutl了,第二次再快也于事无补,反而令查错调试更困难。

Key cache的设置如下,有问题吗?
Variable_name
Value
binlog_cache_size
32768
have_query_cache
YES
key_cache_age_threshold
300
key_cache_block_size
1024
key_cache_division_limit
100
max_binlog_cache_size
4294963200
query_cache_limit
1048576
query_cache_min_res_unit
4096
query_cache_size
0
query_cache_type
ON
query_cache_wlock_invalidate
OFF
table_definition_cache
256
table_open_cache
256
thread_cache_size
8
key_buffer_size
333447168
max_seeks_for_key
4294967295


使用道具 举报

回复
论坛徽章:
1
咸鸭蛋
日期:2013-04-29 10:44:35
18#
 楼主| 发表于 2013-1-9 22:38 | 只看该作者
myeverything 发表于 2013-1-9 17:33
试下LOAD INDEX INTO CACH呢。

试了运行Load Index into Cache,用了5-6秒,但不能决定有没有效果,因为第二次运行都很快,明天重启机器试一试。

使用道具 举报

回复
论坛徽章:
1
咸鸭蛋
日期:2013-04-29 10:44:35
19#
 楼主| 发表于 2013-1-9 22:47 | 只看该作者
怀疑是mysql单表处理能力问题,因为另一台生产服务器,数据只有90多万记录,同样的sql查询很快就出来了。

试着用下面sql从300多万记录的表里取100万出来生成一个新的表,估计就300MB左右,但竟然运行了2个多小时还没完
create table new_table Select * from table_name limit 1000000;

使用道具 举报

回复
论坛徽章:
1
咸鸭蛋
日期:2013-04-29 10:44:35
20#
 楼主| 发表于 2013-1-10 22:12 | 只看该作者
myeverything 发表于 2013-1-9 17:33
试下LOAD INDEX INTO CACH呢。

试过,没效果

使用道具 举报

回复

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

本版积分规则 发表回复

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