Java缓存技术是什么?很多小伙伴对此还不是很了解,下面就由小编来告诉大家。
(1)Cache是高速缓存的特殊内存子系统,将常用的数据复制在其中,方便快速访问。
(2)对于速度差异较大的两种硬件/软件,使用协调两者数据传输速度差异的结构,可以称为Cache.
不同层次的系统架构之间,为了加快访问速度,可以有缓存
操作系统磁盘缓存 -> 减少磁盘机械操作
数据库缓存 -> 减少文件系统 I/O
应用程序缓存 -> 减少对数据库的查询
Web 服务器缓存 -> 减少应用程序服务器请求
客户端浏览器缓存 -> 减少对网站的访问
(1)文件系统提供的磁盘缓存:操作系统会将经常访问的文件内容放入内存,由文件系统管理。
(2)应用程序通过文件系统访问磁盘文件时,操作系统从Disk Cache中读取文件内容,加快了文件读取速度。
(3)Disk Cache由操作系统自动管理,一般不需要人工干预,但要保证足够的物理内存,让操作系统尽可能多的使用Disk Cache,加快文件读取速度
(4)特殊应用对文件系统Disk Cache要求较高。他们会绕过文件系统Disk Cache,直接访问磁盘分区,自行实现Disk
(5)Cache策略。
Oracle的裸设备(raw device)——直接放弃文件系统
InnoDB for MySQL:innodb_flush_method = O_DIRECT
(1)重要性
数据库通常是企业应用系统的核心部分
数据库中存储的数据量通常非常大
数据库查询操作通常非常频繁,有时也很复杂
以上原因导致数据库查询导致非常频繁的磁盘I/O读操作,迫使CPU挂机等待,数据库性能极低
(2)缓存策略
1)查询缓存
以 SQL 为键值缓存查询结果集
一旦查询涉及的表记录被修改,缓存将被自动删除
设置合适的 Query Cache 将大大提高数据库性能
Query Cache 尽量不要大,Qquery Cache 太大会浪费内存。
MySQL:query_cache_size=128M
2)数据缓冲区
数据缓冲区是数据库数据在内存中的容器
数据缓冲区的命中率直接决定了数据库的性能
数据缓冲区越大越好,越多越好
MySQL InnoDB 缓冲区:innodb_buffer_pool_size = 2G
MySQL 建议将缓冲池扩大到服务器物理内存的 60-80%
(1)对象缓存
由Hibernate等O/R Mapping框架提供,透明访问,对数据库查询结果进行细粒度缓存,无需对业务代码进行显式编程,是最省事的缓存策略
当软件结构按照O/R Mapping框架的要求设计时,对象缓存的使用将大大减少Web系统的数据库访问请求
精心设计的数据库结构和对象缓存的使用可以提供极高的性能。对象缓存适用于OLTP(在线事务处理)应用
(2)查询缓存
缓存数据库查询结果集,类似于数据库的Query Cache
适用于一些耗时但时效性不高的要求。查询缓存和对象缓存适用于不同的场景,相辅相成
当查询结果集中涉及的表记录被修改时,需要注意清除缓存
(3)页面缓存功能
页面缓存技术不仅可以减轻数据库服务器的压力,还可以减轻应用服务器的压力
好的页面缓存可以大大提高页面渲染速度
页面缓存的难点在于如何清理过期缓存
基于代理服务器模式的Web服务器端缓存,如squid/nginx
Web服务器缓存技术用于实现CDN(内容分发网络)
国内主流门户大量采用
无需编程,但仅限于新闻发布网站,页面实时性要求不高
使用AJAX调用时,在浏览器端缓存数据库
只要不离开当前页面或不刷新当前页面,就可以直接读取缓存数据
仅适用于使用AJAX技术的页面
你适合学Java吗?4大专业测评方法
代码逻辑 吸收能力 技术学习能力 综合素质
先测评确定适合在学习