当前位置:网站首页>第三章 启用和调整IM列存储的大小(IM-3.1)
第三章 启用和调整IM列存储的大小(IM-3.1)
2022-04-23 09:52:00 【Grainger】
IM系列文章:第三章 启用和调整IM列存储的大小(IM-3.1)
通过指定IM列大小来启用IM列存储。您还可以调整IM列存储的大小或禁用它。
本章包含以下主题:
· 启用IM列存储概述 默认情况下,INMEMORY_SIZE _SIZE初始化参数设置为 0,这意味着IM列存储被禁用。要启用IM列存储,请在重新启动实例之前将初始化参数 INMEMORY_SIZE 设置为非零值。
· 评估IM列存储的所需大小 根据您的要求评估IM列存储的大小,然后调整IM列存储的大小以满足这些要求。应用压缩可以减少内存大小。
· 启用数据库的IM列存储 在将表或物化视图填充到IM列存储之前,必须为数据库启用IM列存储。
· 动态增加IM列存储的大小 当IM列存储需要更多内存时,可以动态增加其大小。
· 禁用IM列存储 您可以通过将 INMEMORY_SIZE 初始化参数设置为零来禁用IM列存储,然后重新打开数据库。
启用IM列存储概述
默认情况下, INMEMORY_SIZE 初始化参数设置为 0,这意味着IM列存储被禁用。要启用IM列存储,请在重新启动实例之前将初始化参数 INMEMORY_SIZE 设置为非零值。
您可以使用 ALTER SYSTEM 语句动态增加 INMEMORY_SIZE 大小设置。
默认情况下,必须使用表、表空间或物化视图的 CREATE 或ALTER 语句的 INMEMORY子句指定IM列存储中的填充候选项。
评估IM列存储的所需大小
根据您的要求评估IM列存储的大小,然后调整IM列存储的大小以满足这些要求。应用压缩可以减少内存大小。
IM列存储所需的内存量取决于存储在其中的数据库对象和应用于每个对象的压缩方法。为 INMEMORY 对象选择压缩方法时,请根据可用内存量平衡性能优势:
· 要最大程度地减少内存大小,请选择 FOR CAPACITY HIGH 或 FOR CAPACITY LOW 压缩方法。但是,这些选项在查询执行期间需要额外的CPU来解压缩数据。
· 要获得最佳查询性能,请选择 FOR QUERY HIGH 或 FOR QUERY LOW 压缩方法。但是,这些选项消耗更多的内存。
调整IM列存储大小时,请考虑以下准则:
1. 对于要填充到IM列存储中的每个对象,估计它消耗的内存量。
Oracle Compression Advisor估计您可以使用 MEMCOMPRESS 子句实现的压缩率。顾问程序使用DBMS_COMPRESSION接口。
2. 将单个数量添加到一起。
注:
填充后,V$IM_SEGMENTS 显示磁盘上对象的实际大小及其在IM列存储中的大小。您可以使用此信息来计算填充对象的压缩率。但是,如果对象在磁盘上压缩,则此查询不会显示正确的压缩率。
3. 添加额外的空间以应对数据库对象的增长,并在DML操作后存储更新的行版本。
动态调整大小的最小值为128 MB。
启用数据库的IM列存储
在将表或物化视图填充到IM列存储之前,必须为数据库启用IM列存储。
先决条件
此任务假定以下内容:
· 数据库是打开的。
· COMPATIBLE 初始化参数设置为 12.1.0或更高。
· INMEMORY_SIZE 初始化参数设置为 0(默认值)。
要启用IM列存储:
1. 在SQL * Plus或SQL Developer中,使用管理权限登录数据库。
2. 将 INMEMORY_SIZE 初始化参数设置为非零值。
最小设置为100M。
使用 ALTER SYSTEM 语句在服务器参数文件(SPFILE)中设置此初始化参数时,必须指定 SCOPE=SPFILE。
例如,以下语句将In-Memory Area大小设置为10 GB:
ALTER SYSTEM SET INMEMORY_SIZE = 10G SCOPE=SPFILE;
3. 关闭数据库,然后重新打开它。
必须重新打开数据库才能初始化SGA中的IM列存储。
4. 可选,检查当前为IM列存储分配的内存量:
SHOW PARAMETER INMEMORY_SIZE
注:
启用IM列存储后,您可以动态增加其大小,而无需重新打开数据库。
示例3-1启用IM列存储
假设 INMEMORY_SIZE 初始化参数设置为0.以下SQL * Plus示例将 INMEMORY_SIZE 设置为10 GB,关闭数据库实例,然后重新打开数据库以使更改生效:
SQL> SHOW PARAMETER INMEMORY_SIZE
NAME TYPE VALUE
------------------------------------ ----------- -----
inmemory_size big integer 0
SQL> ALTER SYSTEM SET INMEMORY_SIZE=10G SCOPE=SPFILE;
System altered.
SQL> SHUTDOWN IMMEDIATE
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> STARTUP
ORACLE instance started.
Total System Global Area 11525947392 bytes
Fixed Size 8213456 bytes
Variable Size 754977840 bytes
Database Buffers 16777216 bytes
Redo Buffers 8560640 bytes
In-Memory Area 10737418240 bytes
Database mounted.
Database opened.
SQL> SHOW PARAMETER INMEMORY_SIZE
NAME TYPE VALUE
------------------------------------ ----------- -----
inmemory_size big integer 10G
动态增加IM列存储的大小
当IM列存储需要更多内存时,可以动态增加其大小。
不能动态减少IM列存储的大小。如果将 INMEMORY_SIZE 设置为小于其当前设置的值,则必须在 ALTER SYSTEM 语句中指定 SCOPE=SPFILE。如果通过指定 SCOPE=SPFILE来设置此参数,则必须重新启动数据库才能使更改生效。
先决条件
要动态增加IM列存储的大小,必须满足以下先决条件:
· 必须启用列存储
· 兼容性级别必须为12.2.0或更高
· 数据库实例必须以SPFILE启动。
· IM列存储的新大小必须比当前 INMEMORY_SIZE 设置大至少128 MB。
1. 在SQL * Plus或SQL Developer中,使用管理权限登录数据库。
2. 可选,检查当前为IM列存储分配的内存量:
SHOW PARAMETER INMEMORY_SIZE
3. 使用指定 SCOPE=BOTH 或 SCOPE=MEMORY的 ALTER SYSTEM语句将INMEMORY_SIZE初始化参数设置为大于IM列存储的当前大小的值。
当动态设置此参数时,必须将其设置为高于其当前值的值,并且SGA中必须有足够的可用内存,以将IM列存储的大小动态增加到新值。
例如,以下语句动态地将 INMEMORY_SIZE 设置为 500M:
ALTER SYSTEM SET INMEMORY_SIZE = 500M SCOPE=BOTH;
禁用IM列存储
您可以通过将 INMEMORY_SIZE 初始化参数设置为零来禁用IM列存储,然后重新打开数据库。
假设
此任务假定在打开的数据库中启用IM列存储。
要禁用IM列存储:
1. 在服务器参数文件(SPFILE)中将 INMEMORY_SIZE 初始化参数设置为 0 。
2. 关闭数据库。
3. 启动数据库实例,然后打开数据库。
山东Oracle用户组(Shandong Oracle User Group),简称:SDOUG,是一个充满朝气、年轻的非营利性组织,旨在为济南及周边地区技术爱好者提供一个交流平台。SDOUG会不定期组织线下技术分享活动,促进本地区及周边IT技术的发展、帮助技术爱好者提高自己。分享技术、分享快乐,SDOUG在路上。
版权声明
本文为[Grainger]所创,转载请带上原文链接,感谢
https://cloud.tencent.com/developer/article/1986069
边栏推荐
- 论文阅读《Integrity Monitoring Techniques for Vision Navigation Systems》——4视觉系统中的多故障
- Golang force buckle leetcode 396 Rotation function
- Example of data object mask used by SAP translate
- Three challenges that a successful Devops leader should be aware of
- 杰理之有时候发现内存被篡改,但是没有造成异常,应该如何查找?【篇】
- 云身份过于宽松,为攻击者打开了大门
- [COCI] Vje š TICA (subset DP)
- How to use SQL statement union to get another column of another table when the content of a column in a table is empty
- 实践六 Windows操作系统安全攻防
- P1390 sum of common divisor (Mobius inversion)
猜你喜欢

重载、重写、隐藏的对比

Easy to understand subset DP

Where is int a = 1 stored

Comparison of overloading, rewriting and hiding

Dropout技术之随机神经元与随机深度

《谷雨系列》空投

Kernel PWN learning (3) -- ret2user & kernel ROP & qwb2018 core

JS DOM event

Leetcode question bank 78 Subset (recursive C implementation)

Nvidia最新三维重建技术Instant-ngp初探
随机推荐
Number theory blocking (integer division blocking)
[codeforces - 208e] blood cousins
Nvidia最新三维重建技术Instant-ngp初探
C语言:表达式求值(整型提升、算术转换 ...)
1D / 1D dynamic programming learning summary
Golang force buckle leetcode 396 Rotation function
Odoo 服务器搭建备忘
论文阅读《Integrity Monitoring Techniques for Vision Navigation Systems》——5结果
工业元宇宙平台规划与建设
MapReduce压缩
C language: expression evaluation (integer promotion, arithmetic conversion...)
个人主页软件Fenrus
SQL调优系列文章之—SQL调优简介
杰理之AES能256bit吗【篇】
Three challenges that a successful Devops leader should be aware of
Planning and construction of industrial meta universe platform
PHP notes (I): development environment configuration
MapReduce计算流程详解
Redis expired key cleaning and deletion policy summary
Epidemic prevention registration applet