暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

20C 新特性 自动化管理 in memory

原创 由迪 2020-06-10
1168

自动化管理in-memory 对象

​ 自动内存中和自动数据优化(ADO)动态管理IM列存储中的对象,而无需用户干预。

​ 注意:

​ 自动内存和ADO当前不支持外部表和混合分区表。

配置 in-memory

​ 如果INMEMORY_AUTOMATIC_LEVELHIGH,所有对象均指定为INMEMORY默认。自动内存使用访问跟踪和列统计信息来管理IM列存储中的对象。

​ 注意:

​ 如果INMEMORY_FORCE初始化参数设置为BASE_LEVEL,则即使设置了自动内存也被禁用INMEMORY_AUTOMATIC_LEVEL。即使表的压缩级别为AUTO,也不会运行内存中自动后台操作。

自动化 in-memory 的目的

​ 自动内存可以在更改SQL工作负载时对其进行优化,而无需手动干预。

​ 该工作数据集包括最频繁查询段。通常,对于许多应用程序,工作数据集会随时间而变化。用户必须确定将哪些段启用为INMEMORY,监视使用情况以决定要填充和逐出的IM段,并创建ADO IM策略。这些任务需要对工作量有透彻的了解。为了使DBA免于手动维护工作,“ 自动内存”使用经常更新的内部统计信息来维护IM列存储中的工作数据集。Oracle数据库决定填充什么,驱逐什么以及何时进行。从某种意义上说,IM列存储变为“自动驾驶”。

自动化in-memory 是如何工作的?

​ 自动内存使用内部统计信息来确定内存对象和列的访问频率。

自动化in-memory 的数据热度级别

“自动内存中”使用类似于热图的列统计基础结构监视分段。

如下图所示,自动内存使用热量级别统计信息来确定要填充和逐出的段以及要压缩的列。

图1自动化 in-memory

image.png

图1 说明

INMEMORY_AUTOMATIC_LEVEL为时HIGH,“ 自动内存”将连续监视IM存储中的列统计信息。该数据库通过内部列统计信息来识别IM存储区的寒冷区域,这些区域类似于热图所使用的区域,但无需HEAT_MAP设置为ON。通过使用热量级别统计信息,自动内存可以通过填充和逐出对象以及压缩列来优化存储。

如何把一个对象放在自动化in-memory工作

​ 根据INMEMORY_AUTOMATIC_LEVEL设置,数据库或用户将启用特定对象以进行内存访问。

INMEMORY_AUTOMATIC_LEVEL初始化参数设置HIGH为时,INMEMORY将自动标记所有不具有预先存在的设置的段INMEMORY MEMCOMPRESS AUTO。对于分区表,Oracle数据库现有分区和新分区的压缩级别设置为MEMCOMPRESS AUTO。在所有情况下,如果段具有预先存在的 INMEMORY 设置,则保留先前的设置。

MEMCOMPRESS AUTO设置意味着将自动启用段以进行内存中访问,而无需DDL。请注意,内存中表具有DML的开销。如果您担心具有中等或较高DML级别的表的HIGH启用INMEMORY级别,则可以NO INMEMORY手动指定这些表。您可以NO INMEMORY通过指定INMEMORY MEMCOMPRESS AUTO子句来重新启用表。

如果INMEMORY_AUTOMATIC_LEVEL不是HIGH,则NO INMEMORY默认情况下所有对象都是。如果设置INMEMORY_AUTOMATIC_LEVELHIGH,并且以后又将其设置为其他值,则数据库会将之前的所有段都更改MEMCOMPRESS AUTONO INMEMORY。在这种情况下,您必须执行DDL以启用所需的段以进行内存访问,就像未启用“ Automatic In-Memory”时必须执行的操作一样。例子 设置 自动化in-memory 为high

在此示例中,启用了IM列存储,但是当前没有任何段具有用户指定的INMEMORY设置,并且禁用了“ Automatic In-Memory”。您salespdb以管理员身份登录,然后执行以下操作:

  1. 查询数据字典以确定是否将任何表指定为INMEMORY

`

SELECT TABLE_NAME, PARTITIONED, INMEMORY, INMEMORY_COMPRESSION 
FROM   DBA_TABLES 
WHERE OWNER='SH' AND TABLE_NAME IN ('COUNTRIES', 'PRODUCTS', 'TIMES') 
ORDER BY TABLE_NAME;

TABLE_NAME                 PAR INMEMORY INMEMORY_COMPRESS
-------------------------- --- -------- -----------------
COUNTRIES                  NO  DISABLED
PRODUCTS                   NO  DISABLED
TIMES                      NO  DISABLED
复制

`

设置countries表使用 in-memory

ALTER TABLE sh.countries INMEMORY MEMCOMPRESS FOR CAPACITY HIGH;
复制

查询数据字典进行确认

SELECT TABLE_NAME, PARTITIONED, INMEMORY, INMEMORY_COMPRESSION 
FROM   DBA_TABLES 
WHERE OWNER='SH' AND TABLE_NAME IN ('COUNTRIES', 'PRODUCTS', 'TIMES') 
ORDER BY TABLE_NAME;

TABLE_NAME                 PAR INMEMORY INMEMORY_COMPRESS
-------------------------- --- -------- -----------------
COUNTRIES                  NO  ENABLED  FOR CAPACITY HIGH
PRODUCTS                   NO  DISABLED
TIMES                      NO  DISABLED
复制

连接CDB 根并设置INMEMORY_AUTOMATIC_LEVEL为High

ALTER SYSTEM SET INMEMORY_AUTOMATIC_LEVEL = 'HIGH' SCOPE=SPFILE
复制

重启CDB

SHUTDOWN IMMEDIATE
STARTUP
复制

登录 salespdb 并查询数据字典确认现在in-memory 压缩设置

SELECT TABLE_NAME, PARTITIONED, INMEMORY, INMEMORY_COMPRESSION 
FROM   DBA_TABLES 
WHERE OWNER='SH' AND TABLE_NAME IN ('COUNTRIES', 'PRODUCTS', 'TIMES') 
ORDER BY TABLE_NAME;

TABLE_NAME                 PAR INMEMORY INMEMORY_COMPRESS
-------------------------- --- -------- -----------------
COUNTRIES                  NO  ENABLED  FOR CAPACITY HIGH
PRODUCTS                   NO  ENABLED  AUTO
TIMES                      NO  ENABLED  AUTO
复制

countries手动指定为的表将INMEMORY保留其先前的设置。现在,其他表具有压缩级别AUTO

INMEMORY MEMCOMPRESS AUTO属性应用于countries表:

ALTER TABLE sh.countries INMEMORY MEMCOMPRESS AUTO;
复制

查询数据字典以确定当前的INMEMORY压缩设置:

ELECT TABLE_NAME, PARTITIONED, INMEMORY, INMEMORY_COMPRESSION 
FROM   DBA_TABLES 
WHERE OWNER='SH' AND TABLE_NAME IN ('COUNTRIES', 'PRODUCTS', 'TIMES') 
ORDER BY TABLE_NAME;

TABLE_NAME                 PAR INMEMORY INMEMORY_COMPRESS
-------------------------- --- -------- -----------------
COUNTRIES                  NO  ENABLED  AUTO
PRODUCTS                   NO  ENABLED  AUTO
TIMES                      NO  ENABLED  AUTO
复制

现在所有表都显示压缩级别AUTO

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论