MySQL查询缓存

简介:   

  mysql通过查询缓存优化来优化查询效率,当执行相同的一条sql时,mysql会将数据缓存起来以供下次查询使用。

    查询缓存在mysql中需要手动开启。通过set session query_cache_type=on进行开启。同理,如需关闭,只需要将该参数设置为off即可。

    同时,当开启了查询缓存之后,还需设置数据库分配给缓存空间的大小,默认值为0。即缓存不生效。通过 set  @@global.query_cache_size=具体值进行设置。 如需永久生效,则修改my.cnf文件,添加query_cache_size=具体值

  对于查询缓存的使用,在实际工作中需要关注表的特性。如果说当前表中数据会经常发生改变的话,则不建议开启查询缓存,因为当表数据被改变之后,查询缓存中的相关数据就会被清空。因为查询缓存适合使用在会被频繁查询但基本不会被改变的表。

提高缓存命中率:

  1)保证客户端与服务端编码一致。如果两端编码不一致可能会导致数据不会被缓存。

  2)sql语句的编写虽然本身是不区分大小写的。但对于缓存来讲,相同但大小写不同的sql会被当作两条语句。

  3)当sql中包含用户自定义函数、自定义变量、存储函数、临时表这些由不同用户执行,会产生不同结果的查询,查询缓存不会对结果进行缓存。

  4)通过分区表提升缓存命中率。日常工作中,我们经常会碰到一个场景,对于一张表中某个时间段会频繁更新,但是其他时间段会频繁查询。如对该表采用查询缓存,则当表中数据发生更新,就会清空查询缓存。对于这种情况可以采用分区表。把频繁查询的时间段数据放入一个分区表中,以此提高命中率。

查询缓存的利弊:

  查询缓存虽然能够提升查询效率,但是也会造成一定的系统资源损耗。首先,mysql在查询的时候,首先会在查询缓存中判断当前是否存在相同的结果。其次,在进行查询的时候,如果缓存中没有相同的查询结果,会将结果先放入缓存。最后,如果表发生数据修改,查询缓存会被会将相应的结果进行删除。

查询缓存优化:

  1)尽量使用多张小表。

    2)写操作尽量一次性写入,否则会造成查询缓存产生数据清理。

  3)尽量对sql或某个连接设置是否使用查询缓存。

  4)如果当前应用存在大量数据更新,则最好不要开启查询缓存。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,723评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,080评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,604评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,440评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,431评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,499评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,893评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,541评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,751评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,547评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,619评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,320评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,890评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,896评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,137评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,796评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,335评论 2 342

推荐阅读更多精彩内容

  • 转载声明:本文为DBA+社群原创文章,转载必须连同本订阅号二维码全文转载,并注明作者名字及来源:DBA+社群(db...
    meng_philip123阅读 929评论 0 5
  • 今天看到一位朋友写的mysql笔记总结,觉得写的很详细很用心,这里转载一下,供大家参考下,也希望大家能关注他原文地...
    信仰与初衷阅读 4,723评论 0 30
  • 开启查询缓存后,查询语句的解析过程: 在解析一个查询语句之前,如果查询缓存是打开的,那么MySQL会优先检查这个查...
    hjqjk阅读 8,768评论 1 5
  • 一、MySQL优化 MySQL优化从哪些方面入手: (1)存储层(数据) 构建良好的数据结构。可以大大的提升我们S...
    宠辱不惊丶岁月静好阅读 2,410评论 1 8
  • 1.A simple master-to-slave replication is currently being...
    Kevin关大大阅读 5,938评论 0 3