有关数据库缓存

有关数据库缓存的一些点

 

缓存块大小

  • 一般大小是一页(4K),太大会造成碎片

   

替换策略

  • LRU(Least Recently Used),最常用
  • LFU(Least Frequently Used)

   

缓存的性能指标

  • 命中率(不要盲目追从)
  • 命中率和更新率的比
  • 命中的查询的执行时间(如果很小,可能性能提升不明显/甚至降低)

       

   

数据库缓存调优

  • 使用绑定变量的查询方式(preparestatement),数据库会缓存SQL解析、优化结果
  • 必要时可以减小缓存区大小/关闭,如果缓存命中率不高,反而造成额外开销;另外,缓存作为共享资源,竞争会降低并发度和系统性能;还有,过大的缓存,会导致数据库启动/关闭时间加长(启动后,缓存预热时间长)
  • 使用buffer pool dump功能(如果有,例如MariaDB 10+),加快缓存预热
  • 必要时可以使用mlock将缓存区锁定(如果支持的话)
  • 异步IO/Direct IO
  • 预取(prefetch
  • 缓存flush策略配置
  • 段的私有缓冲区池(如Oracle)

   

大对象/字符串对缓存的影响

   

   

总之,数据库缓存并不是一定会提升性能(其他缓存亦是如此),使用不当反而可能降低性能。缓存引入额外的开销:查询、插入、失效、内存管理、碎片。只有经过实际的测量,不断优化配置,才能真正的达到优化目的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值