23ai中的True Cache到底能做啥?
最近,Oracle的产品管理总监在Oracle数据库内幕中介绍了True Cache。

原文链接如下:
由于这篇文章比较火爆,我们国内已经有很多的数据库爱好者完整的翻译这篇文章,所以笔者也不需要重复翻译,本文旨在提炼文中关键信息,并使用大白话和大家一起探讨下23ai中的True Cache功能:
- 1.为什么需要True Cache?
- 2.True Cache工作原理
- 3.应用程序使用True Cache
- 4.True Cache的好处和应用场景
1.为什么需要True Cache?
通常这个问题会是IT部门的领导层最关心的问题,现有架构下,为什么需要引入True Cache?
回答这个问题,需要先了解下目前的发展趋势,当下随着数字化环境的不断发展,各类应用要求提供实时响应成为当务之急,而大家都知道数据库的资源很宝贵,大部分高并发应用其实都是读多写入的场景,所以业界常用的方案就是在数据库的前面加一个缓存层,且将它设计在内存中缓存(Caching),这个底层逻辑其实也非常简单,就是内存的速度一定是远远高于存储速度的,这是介质本身存在的数量级的性能差异。
当然,能接受用缓存的共识是这个缓存中无需最新的数据,说白了,无论你用什么样的缓存技术,读的数据无论多少,一定都是有延迟的,可应用需求一定会要求这个延迟越小越好,这里原文中立马就提到Oracle提供的True Cache是一个突破性的缓存解决方案,那这个突破性具体体现在哪里呢?
- 性能的进一步优化
- 缓解数据陈旧问题
- 有效管理缓存数据
这些方面的优势是因为True Cache相当于是一个主库的全功能的只读副本,类似ADG,但又比ADG轻量,它不需要数据文件的存储,别小看这一点,对于当下一个动辄几十T数据量的数据库来说,将会是非常大的成本节约。
2.True Cache工作原理
这里,提炼文中关键的几点:
- 应用程序通过Oracle JDBC Driver连接对应实例(主库和True Cache实例)
- 当发生Cache miss(缓存未命中)时,True Cache会从主库获取块
- 当True Cache实例首次启动,除了获取Cache miss的块,还会以large chunks的方式预热大量周围相关块
- 对于已经缓存到True Cache实例中的数据块,块的更新自动通过redo apply来更新,这其实就用到ADG ASYNC的技术,从而实现sub-second的延迟,实时性非常高,有效缓解了普通缓存技术的数据陈旧问题
- 数据一致性,这点基本是Oracle的万能优势,原生的缓存确保你从True Cache中读到的数据也是提交成功的数据
3.应用程序使用True Cache
文中提到了两种方式:
- 多个物理连接
- 一个逻辑连接
这里多个物理连接不用多说,主要优势点还是在于支持提供一个逻辑连接,然后通过Driver处理底层的物理连接,这就可以真正的简化应用配置。

4.True Cache的好处和应用场景
True Cache的好处体现在:
- 提升APP性能
- 简单高效:自动化维护、简化开发、提升SLA
- 成本节约
应用场景文中提到的可以给大家参考:
- 用户会话存储,提供微妙级的响应时间
- 电子商务,对在线产品目录的高效浏览
- 在线游戏,实时的排行榜,用户排名
- 用户身份验证
- 实时分析
- 边缘计算
- 数据主权
这些点大部分都比较好理解,也可以作为我们发现更多应用场景的一个启发。
不过最后这点“数据主权”的应用场景,笔者其实也是有一些疑问的,因为如果单纯使用True Cache技术,即便True Cache部署在特殊地区,数据其实都还在主库中,只是这个True Cache接受到的用户请求没有出境而已。如果要做到真正的数据主权,应该是还要配合Sharding技术。大家觉得呢?
最后总结部分,文中提到Oracle的True Cache是全面的解决方案,再次强调原生的Ture Cache能同时利用到Oracle DB的完整能力,这个其实也是所有Oracle原生技术的通用优势了,比较容易理解。
23ai中的True Cache到底能做啥?的更多相关文章
- iOS 中push和pop到底系统做了些什么事
iOS中的push和pop是一个很常用的视图切换方法,他们是成对出现的, 简而言之,push就是压栈,pop就是出栈! [self.navigationController pushViewContr ...
- ABP中使用Redis Cache(2)
上一篇讲解了如何在ABP中使用Redis Cache,虽然能够正常的访问Redis,但是Redis里的信息无法同步更新.本文将讲解如何实现Redis Cache与实体同步更新.要实现数据的同步更新,我 ...
- ABP中使用Redis Cache(1)
本文将讲解如何在ABP中使用Redis Cache以及使用过程中遇到的各种问题.下面就直接讲解使用步骤,Redis环境的搭建请直接网上搜索. 使用步骤: 一.ABP环境搭建 到http://www.a ...
- Android Intent到底能做些什么
Android Intent到底能做些什么 原文:http://www.toutiao.com/i6348296465147757058/?tt_from=mobile_qq&utm_camp ...
- treeview自动从表中添加标题和列值做目录的方法2
treeview自动从表中添加标题和列值做目录的方法2,该方法是借鉴万一老师的 http://www.cnblogs.com/del/archive/2008/05/15/1114450.html 首 ...
- Linux中Buffer和Cache的区别
1. Cache:缓存区,是高速缓存,是位于CPU和主内存之间的容量较小但速度很快的存储器,因为CPU的速度远远高于主内存的速度,CPU从内存中读取数据需等待很长的时间,而 Cache保存着CPU刚 ...
- CNN中,1X1卷积核到底有什么作用呢?
CNN中,1X1卷积核到底有什么作用呢? https://www.jianshu.com/p/ba51f8c6e348 Question: 从NIN 到Googlenet mrsa net 都是用了这 ...
- 怎么发现RAC环境中'library cache pin'等待事件的堵塞者(Blocker)?
怎么发现RAC环境中的'library cache pin'等待事件的堵塞者(Blocker) 參考自 How to Find the Blocker of the 'library cache pi ...
- 4-10 辅助方法controll_name,;SanitizeHelper; 伪元素和scss中的&, @Media; cache介绍。
回顾知识点 1. 在application.html.erb中: <main class="<%= controller.controller_name%>"&g ...
- Linux中的Buffer Cache和Page Cache echo 3 > /proc/sys/vm/drop_caches Slab内存管理机制 SLUB内存管理机制
Linux中的Buffer Cache和Page Cache echo 3 > /proc/sys/vm/drop_caches Slab内存管理机制 SLUB内存管理机制 http://w ...
随机推荐
- k8s之configmap应用
一.创建configmap 1.基于命令创建configmap root@k8s-master01:~# kubectl create configmap demoapp-cfg --from-lit ...
- Maven 必备技能:MAC 系统下 JDK和Maven 安装及环境变量配置详细讲解
开发中难免因系统问题或者版本变更反复折腾JDK和Maven环境变量,干脆写个笔记备忘个,也方便小伙伴们节省时间. =================JDK安装与环境变量配置====== 1.官网下载j ...
- linux 性能自我学习 ———— 软中断 [五]
前言 linux 性能的自我学习. 正文 什么是软中断呢? 举一个网络的例子. linux 将中断处理过程分为两个阶段: 上半部用来快速处理中断,他在中断禁止模式下运行,注意是处理跟硬件紧密相关或时间 ...
- 给蚂蚁金服 antv 提个 PR, 以为是改个错别字, 未曾想背后的原因竟如此复杂!
前言 什么? 你不了解G2Plot? 没关系, 今天咱们要分享的内容和G2Plot的关系, 就像雷锋和雷峰塔的关系. 因此, 不必担心听不懂. 我一直觉得, 如果我写的文章有人看不懂, 那一定是我写的 ...
- Koordinator v0.7: 为任务调度领域注入新活力
简介: 在这个版本中着重建设了机器学习.大数据场景需要的任务调度能力,例如 Coscheduling.ElasticQuota 和精细化的 GPU 共享调度能力.并在调度问题诊断分析方面得到了增强,重 ...
- 用了那么久的Lombok,你知道它的原理么?
简介: 在写Java代码的时候,最烦写setter/getter方法,自从有了Lombok插件不用再写那些方法之后,感觉再也回不去了,那你们是否好奇过Lombok是怎么把setter/getter方法 ...
- 当 Knative 遇见 WebAssembly
简介: Knative 可以支持各种容器化的运行时环境,我们今天来探索一下利用 WebAssembly 技术作为一个新的 Serverless 运行时. 作者:易立 Knative 是在 Kubern ...
- 深度解密|基于 eBPF 的 Kubernetes 问题排查全景图发布
简介:通过 eBPF 无侵入地采集多语言.多网络协议的黄金指标/网络指标/Trace,通过关联 Kubernetes 对象.应用.云服务等各种上下文,同时在需要进一步下钻的时候提供专业化的监测工具( ...
- 巧用友盟+U-APM 实现移动端性能优化—启动速度
简介: 移动端性能对用户体验.留存有着至关重要的影响,作为开发者是不是被这样吐槽过,"这个 APP 怎么这么大?"."怎么一直在 APP 封面图转悠,点不进去" ...
- [Go] golang 时间格式化 12小时制 与 24小时制
timestamp := int64(1591271169) # 12小时制 time.Unix(timestamp, 0).Format("2006-01-02 03:04:05" ...