Oracle12.2体系架构图:Filesystem+Multitenant

简介:

全面解读Oracle 12.2体系架构图系列课程,精彩继续。本期的内容由两部分组成,一是数据库实例与文件系统的访问;二是多租户解决方案。文中将会简单列举视频要点,详细内容请点击原文链接下载视频。

数据库实例与文件系统


几个重要的进程和内存组件

  • RVWR:Recovery Writer Process,当数据库设置了闪回区域的时候,该进程定期将内存中,具体来讲是shared pool中的flashback buffer里面的闪回数据写入flashback logs.

  • Result cache --> RCBG:result cache 用于存放SQL语句或者plsql函数在执行过程中,对于原始数据进行运算所得的结果,当数据库再次对相同的对象做同样的操作,可直接获取结果,避免计算资源的浪费。

  • ASH  buffer-->MMNL: ASH buffer用于存放活动会话的统计信息,包括SQL的执行情况,应用连接情况,等待事件等。当ASH buffer 被写满的时候,MMNL进程负责将buffer中的数据写入到磁盘中。

  • In memory undo(IMU):在共享池中开辟一块区域,存放临时undo,一个事务中若修改多条数据,不再buffer Cache中的undo数据块做修改,而是增加IMU节点进行记录。主要是为减少undo所产生的Redo。

  • Private Redo log buffers:主要用于管理IMU所产生的临时Redo,将事务的Redo信息存放在共享池中,减少对Redo log buffer的消耗。

  • Flash Cache:全称是Database  smart flash Cache,是从11.2 开发的一项针对闪存的优化技术,旨在通过使用闪存代替传统的慢速磁盘设备来存储部分数据,已达到减少数据库整体延迟,提高数据库的IOPS,提升数据库性能的目的。


Flash Cache的工作原理如下:

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=


Flash Cache中存放的内容通过两种方式来控制:

1、flash  Cache的智能选择算法:评估数据块、索引块的访问频繁程度来决定。

2、对数据库对象的cell_flash_cache属性做修改。

Flash Cache存储内容基本标准

主要是小IO操作,以及数据块、索引块、文件头,控制文件等会被缓存;

针对RMAN备份的IO操作,数据泵IO操作ASM镜像操作以及表空间格式化等不会做缓存;

全表扫描的IO操作的缓存优先级比较低。

当数据存储在flash Cache中,主要是为了提高查询的速度,也就是说,它就相当于在内存之外又增加了一部分buffer Cache的区域,只是性能更好,速度更好。那么跟buffer Cache一样,flash Cache中的数据写满或者写到一定程度就需要把数据写入磁盘,留出空间给新的操作数据。


Flash Cache的flushing过程

缓存内数据写入磁盘称为flushing。可以配置Starting and stopping cache flushing levels值,这个值表示占用整个缓存大小的百分比。当缓存内未写入磁盘的数据达到starting flushing value时,控制器开始flushing(由缓存写入磁盘)。当缓存内未写入磁盘数据量低于stop flush value时,flushing过程停止。


如果start flushing level设置较高,可以在缓存内存更多的未写入数据。这有利于提高写操作的性能,但是要牺牲数据保护。如果要得到数据保护,可以使用较低的start and stop values。经测试表明,使用接近的start and stop flushing levels时性能较好。如果stop level value远远低于start value,在flushing时会导致磁盘拥塞。 


 Smart Flash Logging

长期以来,Redo log的IO瓶颈一直是困扰OLTP系统的一大难题,因为Redo的写入延迟直接拖累了整个系统 甚至整个集群的响应速度。

 

在传统的数据库架构中,一些DBA会将读写延迟较低的小块存储单独划分给Redo,从11204开始,Oracle提出一种新的方案,在闪存区域中专门为Redo开辟一块区域,用于存储临时Redo。


 In-Flash Column SCAN

将列存储落到Flash Cache,提高频繁操作的列存储对象的写IO。


  • Change  Tracking File:在增量备份中检测块的 变化,并记录到文件中。 记录单位为block。

  • wallet:Oracle Wallet是用来存储密钥的容器。简单点来说就是个密码箱,通过这个密码箱,可以使原来需要输入密码的场合能够实现免输密码使用,从而保护了账号口令等敏感信息,使得安全性得到了提高,而且更加方便使用。

多租户解决方案Multitenant

Application Container

应用容器Application Container是12.2提出来的新的组件,将同一应用下的数据库系统划分到一个子容器中,在保证多租户同一管理的情况下,实现相对的业务隔离和数据安全。


PDB拥有自己的undo表空间

从12.2开始,每个PDB都拥有自己的undo表空间。消除了多个PDB间的争用,若要进行闪回或者基于时间戳的恢复,只需要在自己的undo数据中寻找,提高效率。


PDB的灵活创建方式

1、从PDB$seed(或者application root)创建:通过文件复制的方式

2、现有PDB经过hot clone创建


注:在12.1中,基于一个PDB创建新的PDB的时候,需要将原库以read only的方式打开。

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=

而在12.2中,原库可以持续进行DML操作,并不受影响。

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=


克隆过程在后台执行。

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=

克隆完成以后,数据会持续刷新到新库。


3、来自其他CDB中的PDB的迁移:Relocate


640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=


前端执行 create pluggable database from relocate这样一条命令,后台会自动执行远程hot clone,做远程文件复制和同步。


4、通过ASM磁盘文件的shadow copy方式生成新的PDB。

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=


PDB的内存资源管理

在多租户环境下,多个PDB共享内存的资源,当一个PDB需要做buffer Cache的寻址时,需要从整个共享的资源中寻找,非常不方便。在12.2中,Oracle针对部分资源做了基于PDB的domain划分。


12.1的内存资源的hash链表是这样的:

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=


12.2中是这样的:

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=


更多PDB的新特性

1、字符集:在12.2中,若CDB的字符集为超集,也就是AL32UTF8,那么支持不同字符集的PDB。同时,通过Proxy PDB,可以实现不同字符集的PDB进行查询,Proxy将双方的字符集做识别和兼容,不会出现乱码。

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=


关于多租户更多的新特性详解,请参考

YH9:Oracle Multitenant 知识库

关注数据和云(OraNews)公众号,回复掌上手册,有更多惊喜学习礼包等你拿。


多租户技术已经被广大用户广泛应用,而云和恩墨作为数据服务行业的引领者,通过zData解决方案与Oracle 多租户的结合,帮助用户实现了互联网+时代的系统云化转型。


文章转自数据和云公众号,原文链接

相关文章
|
存储 缓存 文件存储
GFS架构启示 | Google File System
搞架构的人,Google的架构论文是必看的,但好像大家都不愿意去啃英文论文。故把自己的读书笔记,加入自己的思考,分享给大家。
1101 0
|
SQL Oracle 关系型数据库
Oracle Move a Datafile from Filesystem & ASM
-------------------------------------------------------by acdante--------------------------------------------------- 非系统表空间数据文件 前提 数据库版本:Oracle 11.
1857 0
|
22小时前
|
API 持续交付 开发者
构建高效微服务架构:后端开发的新视角
【5月更文挑战第8天】 随着现代软件开发的演变,微服务架构已经成为了企业追求敏捷、可扩展和灵活部署的重要解决方案。本文将深入探讨如何构建一个高效的微服务架构,包括关键的设计原则、技术栈选择以及持续集成与部署的最佳实践。我们还将讨论微服务带来的挑战,如数据一致性、服务发现和网络延迟,并提出相应的解决策略。通过本文,后端开发者将获得构建和维护微服务系统所需的深度知识,并了解如何在不断变化的技术环境中保持系统的健壮性和可维护性。
15 8
|
1天前
|
负载均衡 网络协议 应用服务中间件
理解现代微服务架构中的服务发现
微服务架构已经成为软件开发领域中的一股重要力量。在这种架构中,服务发现是关键的一环。本文旨在详细探讨服务发现的概念、其在微服务中的重要性,以及实现服务发现的常见方法和工具。
|
1天前
|
设计模式 Kubernetes 数据库
构建高效可靠的微服务架构:后端开发的新范式
【5月更文挑战第7天】在现代软件开发的浪潮中,微服务架构已经成为一种流行的设计模式。它通过将应用程序分解为一组小的、独立的服务来提高系统的可维护性和扩展性。本文深入探讨了微服务架构的核心概念、优势以及如何利用最新的后端技术构建一个高效且可靠的微服务体系。我们将讨论关键的设计原则,包括服务的独立性、通信机制、数据一致性和容错性,并展示如何在云环境中部署和管理这些服务。
16 3
|
2天前
|
监控 负载均衡 数据安全/隐私保护
探索微服务架构下的服务网格(Service Mesh)实践
【5月更文挑战第6天】 在现代软件工程的复杂多变的开发环境中,微服务架构已成为构建、部署和扩展应用的一种流行方式。随着微服务架构的普及,服务网格(Service Mesh)作为一种新兴技术范式,旨在提供一种透明且高效的方式来管理微服务间的通讯。本文将深入探讨服务网格的核心概念、它在微服务架构中的作用以及如何在实际项目中落地实施服务网格。通过剖析服务网格的关键组件及其与现有系统的协同工作方式,我们揭示了服务网格提高系统可观察性、安全性和可操作性的内在机制。此外,文章还将分享一些实践中的挑战和应对策略,为开发者和企业决策者提供实用的参考。
|
2天前
|
缓存 监控 数据库
构建高性能微服务架构:后端开发的终极指南
【5月更文挑战第6天】 在现代软件开发的浪潮中,微服务架构以其灵活性、可扩展性和容错性引领着技术潮流。本文深入探索了构建高性能微服务架构的关键要素,从服务划分原则到通信机制,再到持续集成和部署策略。我们将透过实战案例,揭示如何优化数据库设计、缓存策略及服务监控,以确保系统的稳定性和高效运行。文中不仅分享了最佳实践,还讨论了常见的陷阱与解决之道,为后端开发者提供了一条清晰、可行的技术路径。

推荐镜像

更多