下载此文档

MySQL 查询缓存.doc


文档分类:IT计算机 | 页数:约4页 举报非法文档有奖
1/4
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/4 下载此文档
文档列表 文档介绍
MySQL 查询缓存
从 MySQL 开始,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 的帮助下,查询缓存可以被排除在外码之外)
查询缓存如何运作
查询在分析之前先被比较,因而
SELECT * FROM tbl_name

Select * from tbl_name
对于查询缓存被当作是不同的查询,因而查询需要严格的一致(字节对字节的),才会被认为是同样的。另外,如果一个客户端使用一个新的连接协议格式或不同于其它客户端的另一个字符集,一个查询将被视为不同的。
使用不同数据库的,使用不同协议版本的,或使用不同的缺省字符串的查询将被认为是不同的查询,并将分别的缓冲。
高速缓冲不对 SELECT CALC_ROWS ... 和 SELECT FOUND_ROWS() ... 类型的查询起作用,因为找到的行的数目也是被存储在缓冲里的。
如果查询结果被从查询缓存中返回,_select 将不会被增加,但是Qcache_hits 却会增加。
查看章节  查询缓存的状态和维护。
如果一个表发生的改变(INSERT, UPDATE, DELETE, TRUNCATE, ALTER 或 DROP TABLE|DATABASE),那么所有这张表使用的缓冲的查询(可能通过一个 MRG_MyISAM 表!)将被得失效,并从缓冲中移除。
InnoDB MIT 被完成时,使数据失效。
如果一个查询包括下面的函数,它将不能被缓冲:
函数
函数
函数
User-Defined Functions
CONNECTION_ID
FOUND_ROWS
GET_LOCK
RELEASE_LOCK
LOAD_FILE
MASTER_POS_WAIT
NOW
SYSDATE
CURRENT_TIMESTAMP
CURDATE
CURRENT_DATE

MySQL 查询缓存 来自淘豆网www.taodocs.com转载请标明出处.

非法内容举报中心
文档信息
  • 页数4
  • 收藏数0 收藏
  • 顶次数0
  • 上传人drp539601
  • 文件大小0 KB
  • 时间2015-06-04