校园学生学习娱乐资源第一门户 校园第一站 源于校园 服务于校园 分享资源和快乐 网站地图 高级搜索 RSS订阅 收藏本站 设为首页
首页 | 校园 | 教育 | 考试 | 电脑 | 英语 | 读书 | 就业 | 论文 | 体育 | 健康 | 图片 | 分类信息
Q Q | 下载 | 游戏 | 音乐 | 影视 | 专题 | 祝福 | 百科 | 问答 | 博客 | 会员 | 社区 | 校园论坛
·偶像剧免费在线收看
·DEDECMS免费模板规则下载
·
·全能空间、网站建设仅200
文章搜索:
  当前位置: 主页>电脑>数 据 库>MySQL> 文章正文

MySQL语言九:MySQL 查询缓存

http://www.xydyz.com 来源:校园第一站 2007-11-30 阅读: 评论


9 MySQL 查询缓存

 

从 MySQL 4.0.1 开始,MySQL server 有一个重要的特征:Query Cache。 当在使用中,查询缓存会存储一个 SELECT 查询的文本与被传送到客户端的相应结果。如果之后接收到一个同样的查询,服务器将从查询缓存中检索结果,而不是再次分析和执行这个同样的查询。

注意:查询缓存绝不返回过期数据。当数据被修改后,在查询缓存中的任何相关词条均被转储清除。

在某些表并不经常更改,而你又对它执行大量的相同查询时,查询缓存将是非常有用的。对于许多 WEB 服务器使用大量的动态信息,这是一个很典型的情况。

下面是查询缓存的一个性能数据。(这些结果的产生,是通过在一个 a Linux Alpha 2 x 500 MHz、2GB RAM 和 64MB 查询缓存上执行 MySQL 基准套件和到的):

  • 如果你执行的所有查询均是简单的(比如从表中一行一行的选取);但是仍然是不同的,所以该查询不能被缓冲,查询缓存处于活动时,开销为 13%。这可以被看作是最差的情况。然而,在实际情况下,查询是比我们的简单示例要复杂得多的,所以开销通常显著得低。
  • 在只有一行记录表中搜索一行后,搜索将快 238% 。这可以被认为是接近于对一个被缓冲的查询所期望的最小的加速。
  • 如果你希望禁用查询缓存,设置 query_cache_size=0。禁用了查询缓存,将没有明显的开销。(在配置选项 --without-query-cache 的帮助下,查询缓存可以被排除在外码之外)

9.1 查询缓存如何运作

查询在分析之前先被比较,因而

SELECT * FROM tbl_name

Select * from tbl_name

对于查询缓存被当作是不同的查询,因而查询需要严格的一致(字节对字节的),才会被认为是同样的。 另外,如果一个客户端使用一个新的连接协议格式或不同于其它客户端的另一个字符集,一个查询将被视为不同的。

使用不同数据库的,使用不同协议版本的,或使用不同的缺省字符串的查询将被认为是不同的查询,并将分别的缓冲。

高速缓冲不对 SELECT CALC_ROWS ...SELECT FOUND_ROWS() ... 类型的查询起作用,因为找到的行的数目也是被存储在缓冲里的。

如果查询结果被从查询缓存中返回,那么状态变量 Com_select 将不会被增加,但是 Qcache_hits 却会增加。查看章节 9.4 查询缓存的状态和维护

如果一个表发生的改变 (INSERT, UPDATE, DELETE, TRUNCATE, ALTERDROP TABLE|DATABASE),那么所有这张表使用的缓冲的查询(可能通过一个 MRG_MyISAM 表!)将被得失效,并从缓冲中移除。

InnoDB 表的事务所做的更改将在一个 COMMIT 被完成时,使数据失效。

如果一个查询包括下面的函数,它将不能被缓冲:
函数 函数 函数
User-Defined Functions CONNECTION_ID FOUND_ROWS
GET_LOCK RELEASE_LOCK LOAD_FILE
MASTER_POS_WAIT NOW SYSDATE
CURRENT_TIMESTAMP CURDATE CURRENT_DATE
CURTIME CURRENT_TIME DATABASE
ENCRYPT (只有一个参数调用) LAST_INSERT_ID RAND
UNIX_TIMESTAMP (无参数调用) USER BENCHMARK

 

如果一个查询包含用户变量,引用 MySQL 系统数据库,或下列之一的格式,




【责任编辑:admin 】

共3页: 上一页 1 [2] [3] 下一页



评论
用户名: 新注册) 密码: 匿名评论
评论内容:不能超过250字,请自觉遵守互联网相关政策法规。
  相关文章
MySQL语言八:MySQL 全文搜索
MySQL语言七:MySQL 事务与锁定命令
MySQL语言六:基本的MySQL用户实用命令
MySQL语言五:数据定义
MySQL语言四:数据操纵
  最新图片
如何安全的远程使用MySQL GUI工具
如何安全的远程使用My
24小时TOP
   
·MySQL语言三:SELECT和WHERE子句的函数
·MySQL语言二:列类型
·MySQL语言五:数据定义
·MySQL语言四:数据操纵
·MySQL语言一:语言结构
·MySQL语言八:MySQL 全文搜索
·MySQL语言七:MySQL 事务与锁定命令
·MySQL语言六:基本的MySQL用户实用命令
热门图片
  更多>>>
如何安全的远程使用MySQL GUI工具
如何安全的远程使用
焦点聚焦
  更多>>>
·MySQL语言一:语言结构
论坛精华
  更多>>>
·真钱斗地主轧金花龙虎板玖和百家乐http://c
·22岁女大学生要嫁48岁乞丐(图)
·一条短信毁了一种水果 “蛆橘”传言流变调
·蒙古风情十四怪 (一)
·《中国高新技术企业》--www.txrb.com--科信
·东莞大金空调官方介绍 13559702882卢生
·乐众国际最新博彩游戏!真实!新鲜!刺激!
·快国庆了大家怎么安排
最新图片
  更多>>>
如何安全的远程使用MySQL GUI工具
如何安全的远程使用
推荐文章
  更多>>>
·如何安全的远程使用MySQL GUI工具
关于我们 - 版权声明 - 免责声明 - 欢迎投稿 - 广告服务 - 友情链接 - 网站建设 - 诚聘英才 - 联系我们 - -
Copyright @2007-2009 www.xydyz.com © All rights reserved.
校园第一站 版权所有 客服E-Mail:hyperblue@163.comn 点击这里给我发消息
Site design by hyperblue 鄂ICP备07009403号 Powered by DedeCms