注册 登录  
 加关注
查看详情
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

记录~~~

Stay Hungry. Stay Foolish.

 
 
 

日志

 
 

6.3重构查询的方式  

2013-06-11 11:44:58|  分类: 数据库\mysql |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
一个复杂查询还是多个简单查询:
传统实现不适合MySQL:
   传统实现中,总是强调需要数据库层完成尽可能多的的工作,这样做的逻辑在于以前总是认为网络通信、查询解析和优化是一件代价很高的事情。
   但这样的想法对于MySQL并不适用,MySQL从设计上让连接和断开连接都很轻量级,在返回一个小的查询结果方面很高效。
即使在一个通用服务器上,也能够运行每秒超过10w的查询,即使是一个千兆网卡也能轻松满足每秒超过2k次的查询。所以运行多个小查询现在不是什么大问题了。
MySQL 内部每秒能够扫描内存中上百万行数据。相比之下,MySQL响应数据给客户端就慢得多了。在其他条件都相同的时候,使用尽可能少的查询当然是更好的。但是有时候,将一个大查询分解成多个小查询是很有必要的。
当然在应用设计的时候,如果一个查询能够胜任时还写成多个独立查询还是不明智的。

/**
  我日,以上问题说了等于没说,我擦 ,这样写浪费了多少文字啊,怪不得这么厚一本书。
*/

************
切分查询:
  有时对于一个大查询我们需要‘分而治之’,将大查询切分成小查询,每个查询功能完全一样,只完成一小部分,每次只能返回小部分查询结果。

例如
删除旧的数据就是一个很好的例子:定时清除大量数据时,如果用一个大的语句一次性完成的话,则可能需要一次锁住很多数据、占满整个事务日志、耗尽系统资源、阻塞很多小但重要的查询。将一个大的delete语句切分成多个较小的查询可以尽可能小影响mysql性能,同时还可以减少mysql复制的延迟。例如,我们需要每个月运行一次下面的查询:



  评论这张
 
阅读(207)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018