认识数据缓存

数据缓存概述:在特定硬件基础上,缓存(Cache)往往是提升系统性能的关键因素(前提是系统不存在设计上的缺漏和糟糕低效的SQL);

相对于JDBC的操作,HIbernate是一个ORM框架,当然会实现更多复杂的任务,以实现内部的管理,这些额外的开销使得ORM框架的效率会低于JDBC;为了弥补这些性能上的差距,数据缓存是一个重要的策略;

 

缓存是数据库在内存中临时的容器,包含了库表数据在内存中的临时拷贝;位于数据库和数据库访问层之间;

当ORM读取数据时,首先会根据其缓存的管理策略,在缓存中查询,如果在缓存中发现了想要的数据,直接拿出来使用,避免了执行SQL去数据库里查询;

 

数据缓存策略:

持久层设计中,往往会考虑到几个不同层次的数据缓存策略,这些层次的划分标准针对不同的情况有所差异,一般而言,ORM的数据缓存包含如下:

1,事务级缓存(Transaction Layer Cache)

   在当前事务范围内的数据缓存策略(事务:可能是一个数据库事务,也可能是一个应用级事务);对于Hibernate而言,事务级缓存是基于session生命周期实现的,每个session会在内部维持一个事务缓存,此缓存会伴随着session的创建而存在,session的关闭而销毁;也被成为session内部缓存(session Level Cache);

2,应用级/进程级缓存(Application/Process Layer Cache)

   在某个应用中,或者应用中的某个独立数据访问子集中的共享缓存;此缓存可由多个事务(数据库事务或应用级事务)共享;事务之间的缓存共享策略与应用的事务隔离机制有密切的联系;在Hibernate中,应用级缓存在sessionFactory层实现,所有由sessionFactory创建的session实例共享此缓存,因此也被成为SessionFactory Level Cache;

   多实例并发运行的环境(如多机负载均衡的环境中),要小心缓存机制带来的负面影响;

   如:用户A和用户B同时操作同一个数据库,并行运行,A和B各自维持着自己的缓存,如果没有同步机制的话,A在某个操作中对数据库进行了更新,而B并没有获得其更新的通知,其b缓存的的数据还是以前版本的数据,那么B在读取数据时就会读取了以前的数据;导致数据错误;在这种情况下,不能使应用级缓存,我们需要更好的缓存解决方案;

3,分布式缓存(Cluster Layer Cache)

   在多个应用实例,多个JVM之间共享的缓存模式;分布式缓存由多个应用级缓存实例组成集群,通过某种远程机制(如,RMI或JMS)实现各个缓存实例间的数据同步,任何一个实例修改数据,将导致整个集群之间的数据状态同步;因此解决了多实例并发运行过程中的数据同步问题;

   如果对于并发读取性能要求很高,且读取操作在持久层中展绝大部分的比重,目前的 分布式缓存有点力不从心;由于多个实例间的数据同步机制,都会同步到其余的实例下,这样的远程开销是很大的;目前主流的企业级数据均已具备数据库级的缓存机制,而分布式缓存可能给我们带来一些问题的下尽量少使用;

   如果当前应用与其他应用共享数据库,也就是说,在当前运行过程中,其他应用可能会更新数据库,那么此时运用缓存策略就要格外小心;这种情况下,需要采取一些保守策略(避免缓存机制的使用);

asp.NET 缓存 页面缓存、数据源缓存、数据缓存 cache 阅读详情

相关推荐

电力电子技术(13)——大功率可控整流电路

目录引言2.6.1 带平衡电抗器的双反星形可控整流电路电路结构的特点接平衡电抗器的原因平衡电抗器使得两组三相半波整流电路同时导电的原理分析谐波分析2.6.2 多重化整流电路概述原理目标1)移相多重联结2)多重联结电路的顺序控制3重晶闸管整流桥顺序控制带平衡电抗器的双反星形可控整流电路(是多重化整流电路的重要形式之一)的特点:适用于低电压、大电流的场合。多重化整流电路的特点:绕组的极性相反的目的:消除直流磁通势如图所示,虽然两组相电流的瞬时值不同,但是平均电流相等而绕组的极性相反,所以直流安匝(电流*匝数)互

weixin_45589295的博客 1万+

不同事务的情况下,mybatis一级缓存如何处理。

简述: 今天项目遇到了点问题,简单描述为:不同事务A和B。B事务查询mybatis的数据后,A事务更新了该表的数据,B再查时,走缓存还是走sql? 测试案例: 1-不同事务下,为什么一级缓存没有清空 结果:不同事务下,缓存不一样,无法清空。如截图:当执行到更新语句时(同一个表的update),本地缓存并不存在(但我一开始已经执行过一次查询了)。所以无法清空 mybatis的缓存处理在: org....

shenhaiyushitiaoyu的博客 1025

2019年数学建模美赛经验总结

北京时间2019年1月29号上午9时,数模美赛结束。美赛结束已经10多天了,我在这次竞赛中负责建模和编程,趁现在记忆还比较清晰,写下这篇博客记录第一次参加数学建模美赛的经历。 补更:2019年4月20日公布成绩,笔者最终获得了美赛一等奖 目录 1、基本情况 2、选题 3、分工合作 4、论文写作 5、建模 6、编程 7、入门资源 ...

Smallactive 7万+

什么是事务日志,什么是数据缓存

一、事务日志是每个数据库中的一张系统表,用来恢复用户错误或系统失败事件中的数据。

weixin_34167043的博客 423

ABAQUS应用15——Abaqus软件中边界条件与力学中自由度的关系

核心关系:Abaqus通过约束自由度实现边界条件,自由度类型由单元决定。正确设置步骤:确定模型类型(实体/梁/壳)。识别节点的自由度(平动或转动)。根据实际约束施加对应的自由度限制。验证:通过检查变形模式、反力分布等确认边界条件合理性。正确理解自由度与边界条件的关系,是确保有限元模型准确模拟实际物理行为的关键。

George的博客 1544

电子电器架构刷写方案——General Flash Bootloader

### 文章大体有如下内容: ### 1、简介 ### 2、刷写系统概述 ### 3、Flash Bootloader刷写流程 ### 4、Flash Bootloader架构介绍 ### 5、关于刷写的思考

Soly_kun的博客 2211

MyBatis(三) 事务管理和缓存机制

一、事务管理 1.1 Transaction接口 1、构成: (1)MyBatis的事务设计重点是Transaction接口,Transaction接口有两个实现类,分别是 JdbcTransaction和ManagedTransaction。 (2)同时MyBatis还设计了TransactionFactory接口和两个实现类JdbcTransanctionFactory和Managed

java那些事儿 3369

Python经典编程习题100例:第25例:求各个阶乘的和

不要自卑,去提升实力 互联网行业谁技术牛谁是爹 如果文章可以带给你能量,那是最好的事!请相信自己 加油o~ 本人初学Python,只为熟悉语法编写,大神请勿理会 点击下面链接 Python经典编程100例习题汇总 题目描述: 求1+2!+3!+…+20!的和。 解题思路: > 调用math模块中的factorial函数 代码: import math sum=0 for i in range(1,21): sum+=math.factorial(i) print(sum) ..

优快云 精品推荐 2736

hibernate事务,一级缓存,二级缓存

hibernate主要从以下几个方面来优化查询性能: [code]   1,降低访问数据库的频率,减少select语句的数目,实现手段有:使用迫切左外连接或迫切内连接;对延迟检索或立即检索设置批量检索数目;使用查询缓存。   2,避免加载多余的应用程序不需要访问的数据,实现手段有:使用延迟加载策略;使用集合过滤。   3,避免报表查询数据占用缓存,实现手段为利用投影查询功能,查询出...

天天开心 202

AIoT 在线工程实训平台案例——智能家居

AIoT 在线工程实训平台案例——智能家居的操作步骤

m0_53608652的博客 1431

AI自动化时代:一人公司的崛起与商业机会

AI技术正在重塑商业格局,催生"一人公司"创业新模式。这种轻资产、高效率的商业模式通过AI自动化运营,让个人创业者能以极低成本挑战传统企业。核心机会包括:1)AI自主公司替代人力密集型业务;2)为企业提供AI转型解决方案;3)利用AI工具实现个人创业。创业者需快速验证创意,聚焦人机协作,把握当前AI发展窗口期。未来,AI赋能的"一人公司"将成为商业新常态,带来更高的专业化和灵活性。抓住AI红利,学会人机协作,是个人创业成功的关键。

这里汇聚了前沿的技术分享与实用的开发技巧,带你探索从创意到企业的技术创业之路。 520

事务,缓存

JDBC事务 JDBC中的事务涉及到是三个方法(三个方法都通过Connection调用): setAutoCommit(boolean b) commit() rollback() 如果setAutoCommit(true);这是默认的方式,表示开启自动提交,即每条执行的SQL语句都是一个事务。 因此,如果要开启事务,即让一组SQL语句构成一个事务,那么需要进行设置: 首先,显式调用setAuto...

qq_33898680的博客 556

第182期 Claude Skills:深入探究Anthropic的智能体框架(一篇彻底讲透彻)

摘要: Claude Skills是Anthropic推出的智能体框架,通过连接外部工具和服务扩展Claude AI的功能,支持实时交互与任务执行。其核心架构包含技能路由器、注册表、执行引擎等模块,采用渐进式披露机制优化上下文管理。与MCP和A2A相比,Skills更注重模块化设计与Claude深度集成,通过SKILL.md文件定义可重复工作流程,兼具高效性和灵活性。开发者可创建自定义技能,遵循聚焦用户价值、安全隐私等最佳实践,实现AI能力的场景化拓展。该框架与MCP、A2A形成互补,共同推动智能体生态发展

全网120W+关注AI拉呱,专注人工智能以及科技前沿! 2132

利用Redis进行数据缓存

1. 引言 缓存有啥用? 降低对数据库的请求,减轻服务器压力 提高了读写效率 缓存有啥缺点? 如何保证数据库与缓存的数据一致性问题? 维护缓存代码 搭建缓存一般是以集群的形式进行搭建,需要运维的成本 2. 将信息添加到缓存的业务流程 上图可以清晰的了解Redis在项目中所处的位置,是数据库与客户端之间的一个中间件,也是数据库的保护伞。有了Redis可以帮助数据库进行请求的阻挡,阻止请求直接打入数据库,提高响应速率,极大的提升了系统的稳定性。 3. 实现代码 下面将根据查询商铺信息来作为背景进行代

Serendipity的博客 8615

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

页面缓存与数据缓存

2018-1-25 ubuntu里pwd查看当前目录 什么是redis? redis的全称为remote dictionary server,即远程数据服务,缓存数据库是由意大利人开发的一款内存高速,是用C语言编写的,数据模型为key-value,它支持丰富的数据类型,比如string,list,hash,set,sorted set,它可以支持持久化,保证了数据的安全。 缓存的两种类型:

qq_34600424的博客 8084

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

python数据缓存

数据缓存方式 基于内存,如将数据信息存储到字典中; 基于文件,如将数据存储到文件中**.txt, **.csv,**.sqlite; 基于数据库(radis,memcache)。 基于字典即内存的缓存 def huancun_info(fun_name): dict_info = {} def fun(*args, **kwargs): key = "-".join(args) i...

小胖_@的博客 4577

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

【缓存】数据库缓存

数据库缓存

秋之回忆Alex的博客 2126

数据缓存技术 数据库缓存VS程序缓存

数据库(查询)缓存 1、数据库性能: (1)mysql每秒可以处理5000次读取,或者3000次写入 (2)响应时间通常在10ms以内,但是并发量达到1万的时候,要保证10ms以内的响应速度,任务数据库都做不到 2、数据库缓存: (1)mysql缓存是KV(key-value)结构的,保存在内存中,key是执行过的sql语句,value是查询的结果 (2)如果执行删除、修改、新增操作,或者修改表结构,都会造成(表)缓存情况 3、数据库查询过程: 执行sql语句,MySQL先查询缓存。命中数据,就从缓存中提取

lzf2284466的博客 388

Vue中如何进行数据缓存

数据缓存是指将数据存储在内存中,以便在需要时可以快速访问。在前端开发中,数据缓存通常用于减少网络请求和提高应用程序的性能。当应用程序需要使用相同的数据时,它可以从缓存中读取数据,而不是从服务器重新获取数据。这可以减少网络延迟和带宽使用,并提高应用程序的响应速度。

徐师兄的博客 1万+

缓存和数据库的区别,缓存之缓存之缓存的使用场景

在Java中,缓存和数据库是常见的数据存储和访问方式,它们之间有着明显的区别和各自适用的场景。

weixin_43784341的博客 1859

【缓存技术:内存缓存和数据库缓存】

这些缓存技术的作用在于减少系统对磁盘、网络或数据库的访问次数,从而提高系统的性能和响应速度。它们能够加速数据的读取和查询,减少系统的负载,提高用户体验。

qq_31532979的贺公子之数据科学与艺术博客,致力于科技向善,拥抱开源,要用技术的影响力来领导团队,而不是威权和职位! 1573

缓存类,支持数据分页缓存

(缓存类,支持数据分页缓存).用来缓存数据,也可以一次性查询数据库之后缓存,下次查询数据时读取按照分页读取缓存.本人的第一主题.希望大家多多支持,这个是我参考FleaPHP的缓存写出来的.复制PHP内容到剪贴板PHP代码://///////////////////////////////////////////////////////////////////////////// FastCache

phphot 4493

数据库缓存

一、什么是数据库缓存 我们知道常见的数据库,比如oracle、mysql等,数据都是存放在磁盘中。虽然在数据库层也做了对应的缓存,但这种数据库层次的缓存一般针对的是查询内容,而且粒度也太小,一般只有表中数据没有变更的时候,数据库对应的cache才发挥了作用。但这并不能减少业务系统对数据库产生的增、删、查、改的庞大IO压力。所以数据库缓存技术在此诞生,实现热点数据的高速缓存,提高应用的响应速度,极...

heihei2017的博客 4812

浅谈数据缓存

什么数据需要缓存 热点数据、不易修改数据。建议缓存失效时间至多设置为7天。超过7天,再重新生成热点数据。 三级缓存 三级缓存分为堆内存、堆外存、硬盘。 什么样的数据适合放在一级缓存? 数据量小的热点数据。 什么样的数据适合放在二级缓存? 很少被修改的数据; 不是很重要的数据,允许出现偶尔并发的数据; 不会被并发访问的数据; 参考数据。 什么样的数据适合放在三级缓存? 数据量大,且访问频率低的数据。 缓存使用会遇到什么问题? 缓存并发问题,导致数据错误; 缓存命中率低的问题...

富平男娃 519

Android 保存数据到缓存

Android 保存数据到缓存 在 Android 开发中,应用程序可以处理多种类型的数据,包括用户偏好设置、临时数据和更持久的数据。为了提高应用的性能和用户体验,常常需要将一些数据保存到缓存中。本文将探讨如何在 Android 中保存数据到缓存,包括示例代码和相关概念。 什么是缓存? 缓存是一种存储临时数据的机制。与持久...

weixin_40735504的博客 554

spark数据缓存机制

在当前可用内存空间不足时,每次通过LRU替换一个或多个RDD(具体数目与一个动态的阈值相关),然后开始存储新的RDD,如果中途存放不下,就暂停,继续使用LRU替换一个或多个RDD,依此类推,直到存放完新的RDD。对于MEMORY_ONLY级别来说,只使用内存进行缓存,如果某个分区在内存中存放不下,就不对该分区进行缓存。如果mappedRDD中的第1个分区没有被缓存,那么需要先执行task0,算出mappedRDD第1个分区中的数据,然后才能执行task1、task2、task3。

分享学习的知识,记录我的技术成长道路 1337
上一篇: hibernate之脏数据检查
下一篇: Hibernate之数据缓存
keithJava
博客等级 码龄16年 2粉丝 41原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值