数据库缓存层如何优化

对于大型站点,如果没有中间缓存层,当流量打入数据库底层时,即便有之前的几层为我们挡住一部分流量,但是在大并发的情况下,还是有大量请求涌入数据库层,这样对数据库服务器的压力冲击很大,响应速度也会下降,因为添加中间缓存层很有必要。

  常见的缓存形式:内存缓存,文件缓存

缓存数据是为了让客户端很少甚至不访问数据库服务器进行数据的查询,高并发下,能最大程度的降低对数据库服务器的访问压力

用户请求→数据查询→连接数据库服务器并查询数据→将数据缓存起来→(HTML,内存,JSON、序列化数据)→显示

用户再次请求→数据查询→直接从缓存中获取数据→显示给客户端



 

  MySQL的查询缓存

  •   query_cache_type查询缓存类型,有0,1,2三个取值 0则是不使用查询缓存,1为始终使用查询缓存,2表示按需使用查询缓存 为0就没啥好说的了;
  •   当query_cache_type为1的时候,还是可以关闭掉查询缓存的,就是:SELECT SQL_NO_CACHE * FROM MY_TABLE WHERE condition;
  •   当query_cache_type为2的时候,要按需要来开启,开启sql为:SELECT SQL_CACHE * FROM MY_TABLE WHERE condition;
  •   query_cache_size默认情况下query_cache_size为0,表示为查询缓存预留的内存为0,则无法使用查询缓存;
  •   可以直接在my.ini(window底下,linux下是my.cnf)修改值,也可以用命令 SET GLOBAL query_cache_size = 268435456;
  •   查询缓存可以看成是SQL文本和查询结果的映射,当第二次查询的sql语句和第一次查询的sql语句完全一样的情况下,才会使用缓存 (多一个空格都不行呢);
  •   show STATUS LIKE 'QCACHE_HITS' ; 可以查看命中次数;
  •   当表的结构和数据发生改变的时候,查询缓存中的数据不再有效;
  •   清理缓存 FLUSH QUERY CACHE; 可以清理查询缓存内存碎片;
  •   RESET QUERY CACHE; 从查询缓存中移出所有查询;
  •   FLUSH TABLES; 关闭所有打开的表,同时该操作将会清空所有查询缓存中的内容。

  使用Memcache缓存查询数据

工作原理memcache是一个高性能的分布式内存对象缓存系统,通过在内存里维护一个统一的巨大hash表,它能够用来存储各种格式的数据,包括图像,视频,文件以及数据库检索的结果,简单的说就是将数据调用到内存,然后从内存中读取,从而大大提高读取速度。

  工具流程

先检查客户端的请求数据是否在mamcached中,如有,直接把请求数据返回,不再对数据库进行任何操作;如果请求的数据不在mamcached中,就去查数据库,把从数据库中获取的数据返回给客户端,同时把数据缓存一份到mamcached中。

方法

  •   获取get(key)
  •   设置set(key,val,expire)
  •   删除delete(key)
  •   通用缓存机制 用查询的方法名+参数作为查询时的key,value对中的key值

详细可以看php的memcache拓展

或者是mamcached(支持的方法多一点)

  使用redis缓存查询数据

与memcache区别

  •   性能相差不大
  •   REDIS在2.0版本后增加了自己的VM特性,突破物理内存的限制,memcache可以修改最大可用内存,采用LRU算法
  •   redis,依赖客户端来实现分布式读写
  •   memcache本身没有数据冗余机制
  •   redis支持(快照,aof),依赖快照进行持久化,aof增强了可靠性的同时,对性能有影响
  •   memcache不支持持久化,通常做缓存,提升性能。
  •   memcache在并发场景下,用cas保证一致性,redis事务支持比较弱,只能保证事务中的每个操作连续执行
  •   redis支持多种类的数据类型
  •   redis用于数据量较小的高性能操作和运算上
  •   memcache用于动态系统中减少数据库负载,提升性能;适合做缓存,提升性能。

(责任编辑:安博涛)

分享到:

更多
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
  • 微笑/wx
  • 撇嘴/pz
  • 抓狂/zk
  • 流汗/lh
  • 大兵/db
  • 奋斗/fd
  • 疑问/yw
  • 晕/y
  • 偷笑/wx
  • 可爱/ka
  • 傲慢/am
  • 惊恐/jk
用户名: 验证码:点击我更换图片
资料下载专区
图文资讯

“神经纹”身份验证系统 超越人脸识别和声

“神经纹”身份验证系统 超越人脸识别和声纹识别

Aerendir创始人马丁齐齐 (Martin Zizi)开发了一套身份验证系统,靠分析人类手部神经系...[详细]

Python黑科技:WiFi破解,你家的WiFi又被蹭

Python黑科技:WiFi破解,你家的WiFi又被蹭了吗?

今天给大家带来一个WiFi破解密码的好玩的东西,由于有时候我自己的宿舍里面的WiFi密码...[详细]

数据库缓存层如何优化

数据库缓存层如何优化

对于大型站点,如果没有中间缓存层,当流量打入数据库底层时,即便有之前的几层为我们...[详细]

如何降低数据中心机柜的局部高热

如何降低数据中心机柜的局部高热

数据中心内设备众多,内部虽然有完善的空调系统,但实际上内部温度分布是不够均衡的。...[详细]

什么路由器穿墙效果好?无线路由防坑指南

什么路由器穿墙效果好?无线路由防坑指南

买无线路由器,首要辨识什么路由器穿墙效果好。面对市面上五花八门的路由器,很多小白...[详细]

返回首页 返回顶部