新足迹

 找回密码
 注册

精华好帖回顾

· 吉祥物大PK——好一个花胖子 (2009-6-13) edith921 · 我的韩国游记 (2024-1-10) doublepines
· ❤一双好鞋可以把你带到想去的地方❤10.1更新Manolo Blahnik Hangisi 钻扣★LV CAPUCINES^ 一楼有直达电梯 (2013-12-30) FAN2Y · 用美食纪录我的台湾之旅 -- L75 最后一篇:西门町 (2010-7-6) 胡须康
Advertisement
Advertisement
查看: 1834|回复: 16

mysql 同一个query连续作两次,性能有何影响? [复制链接]

发表于 2011-5-19 18:27 |显示全部楼层
此文章由 niz 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 niz 所有!转贴必须注明作者、出处和本声明,并保持内容完整
连上sql,query一下看看结果,然后再同样的query一下,性能有何影响?有没有缓存?或者第2个query需要花费同样多的时间?
Advertisement
Advertisement

发表于 2011-5-19 18:39 |显示全部楼层
此文章由 limyae2009 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 limyae2009 所有!转贴必须注明作者、出处和本声明,并保持内容完整
Mysql不清楚,但Mssql会cache excution plan,所以第二次会比第一次快,特别是大的query

发表于 2011-5-19 18:43 |显示全部楼层
此文章由 Fernando 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 Fernando 所有!转贴必须注明作者、出处和本声明,并保持内容完整
data block 和 execution plany应该都会cache,这个所有的数据库产品应该都一样
Oracle 最新版本已经可以enable result cache了

发表于 2011-5-19 19:12 |显示全部楼层
此文章由 乱码 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 乱码 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 Fernando 于 2011-5-19 18:43 发表
data block 和 execution plany应该都会cache,这个所有的数据库产品应该都一样
Oracle 最新版本已经可以enable result cache了


Interesting !!

database那边作data cache不知道对asp.net作为app layer的app有什么正面的影响。

ms这边有类似的东西appfebric,用来做cache的,under the hood是用sql server.

好的cache机制是网站performance的关键.

发表于 2011-5-19 19:13 |显示全部楼层
此文章由 乱码 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 乱码 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 limyae2009 于 2011-5-19 18:39 发表
Mysql不清楚,但Mssql会cache excution plan,所以第二次会比第一次快,特别是大的query


很难说,如果cache的是不好的execution plan,性能会降低.

发表于 2011-5-19 21:37 |显示全部楼层
此文章由 fyang1024 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 fyang1024 所有!转贴必须注明作者、出处和本声明,并保持内容完整
Oracle自己的Cache很强大,第二次会比第一次快很多,特别是复杂的查询。
MySQL很久没碰了,自己用个客户端测一下
Advertisement
Advertisement

发表于 2011-5-20 10:09 |显示全部楼层
此文章由 jaszhou 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 jaszhou 所有!转贴必须注明作者、出处和本声明,并保持内容完整
MySQL可以enable query cache. LZ可以google一下, MySQL的文档很清楚。 Query Cache是把双刃剑,如果用的不好,反而会影响整体性能。
头像被屏蔽

禁止访问

发表于 2011-5-20 10:14 |显示全部楼层
此文章由 atransformer 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 atransformer 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 jaszhou 于 2011-5-20 10:09 发表
MySQL可以enable query cache. LZ可以google一下, MySQL的文档很清楚。 Query Cache是把双刃剑,如果用的不好,反而会影响整体性能。

  DBA 来了。

发表于 2011-5-20 11:08 |显示全部楼层
此文章由 niz 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 niz 所有!转贴必须注明作者、出处和本声明,并保持内容完整
其实问题是这样的:

网页这里有个xmlswf-chart第三方工具,用来显示图表的,这个工具要求提供一个url给他,自己实现自己的url来提供数据。
   'FlashVars', 'library_path=xmlswfchart/charts_library&xml_source=$url',

但是有时候从数据库取不到数据,这种情况下不应该走到这一步。但是能不能取到数据又是在这个url的php里面实现的,所以等到发现没有数据的时候已经调用了xmlswfchart,太晚了。除非在调用xmlswfchart之前就query数据库一次,如果有数据调用这个xmlswf,  但这里面又会再调用query一次,数据不多,多query一次也不要紧,但是总感觉很不爽。有什么好的建议?

发表于 2011-5-20 11:37 |显示全部楼层
此文章由 Fernando 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 Fernando 所有!转贴必须注明作者、出处和本声明,并保持内容完整
Oracle 11gr2 supports flash_cache, if the server has SSD. It's different from the traditional memory cache. It's for the new hardware, SSD as level 2 cache.

特殊贡献奖章

发表于 2011-5-20 11:51 |显示全部楼层
此文章由 kr2000 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 kr2000 所有!转贴必须注明作者、出处和本声明,并保持内容完整
如果query复杂,你应该用一个简单点的query来判断到底有没有数据

原帖由 niz 于 2011-5-20 11:08 发表
其实问题是这样的:

网页这里有个xmlswf-chart第三方工具,用来显示图表的,这个工具要求提供一个url给他,自己实现自己的url来提供数据。
   'FlashVars', 'library_path=xmlswfchart/charts_library&xml_source=$url',
...
Advertisement
Advertisement

发表于 2011-5-20 11:59 |显示全部楼层
此文章由 典 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 典 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 kr2000 于 2011-5-20 11:51 发表
如果query复杂,你应该用一个简单点的query来判断到底有没有数据


Agree...Use another simple query来判断到底有没有数据

发表于 2011-5-20 12:42 |显示全部楼层
此文章由 乱码 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 乱码 所有!转贴必须注明作者、出处和本声明,并保持内容完整
有没有数据是xmlswf-chart的问题,不是你的问题,你的职责就是给他query的url,是否有数据让它的Logic判断,你不用担心。

发表于 2011-5-20 12:57 |显示全部楼层
此文章由 niz 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 niz 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 乱码 于 2011-5-20 12:42 发表
有没有数据是xmlswf-chart的问题,不是你的问题,你的职责就是给他query的url,是否有数据让它的Logic判断,你不用担心。


可是xmlswf很傻,没数据也画一个大框,现在就是不想要这个大框。

发表于 2011-5-20 13:10 |显示全部楼层
此文章由 乱码 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 乱码 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 niz 于 2011-5-20 12:57 发表


可是xmlswf很傻,没数据也画一个大框,现在就是不想要这个大框。


那你可以做existence的check,不过这2个round trip的overhead要比database那边run 2次query的overhead高很多。

你可以在render page到browser之前做existence check,有数据就用xmlswf,没有就不在hmtl中用它。

相信php可以用 if..else..把html makeup wrap up起来的。

如果用ajax call来写logic,就会比较expensive.

[ 本帖最后由 乱码 于 2011-5-20 13:11 编辑 ]

发表于 2011-5-20 13:23 |显示全部楼层
此文章由 梦呓人 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 梦呓人 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 niz 于 2011-5-20 11:08 发表
其实问题是这样的:

网页这里有个xmlswf-chart第三方工具,用来显示图表的,这个工具要求提供一个url给他,自己实现自己的url来提供数据。
   'FlashVars', 'library_path=xmlswfchart/charts_library&xml_source=$url',
...




楼主,你既然这么说,“有时候从数据库取不到数据”的概率应该也不会很小吧。


假设[call一个简单的query判断有没有数据]花费1秒,你的主query花费10秒,这样做当然还是值得。


(当然如果2个query花的时间差不多长,或者99%的情况下都会有数据的,那你第一个query就不用写了)



有点像会计问题哈
Advertisement
Advertisement

发表于 2011-5-20 23:31 |显示全部楼层
此文章由 baobeima 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 baobeima 所有!转贴必须注明作者、出处和本声明,并保持内容完整
Mark

发表回复

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

本版积分规则

Advertisement
Advertisement
返回顶部