Oracle 12c in memory选件通过在SGA中分配独立的内存区域(In Memory Area),对数据使用列式压缩存储来提高查询性能.
In Memory区的大小由参数inmemory_size控制, 是动态参数.
In Memory内存区可分为两个子池,分别为1M pool和64K pool. 1M pool用于存储列式数据. 64K pool用于存储对象的元数据(metadata)和事务日志(transaction journal). 1M pool 中分配的内存块的大小为1M的整数倍,64K pool中分配的内存块大小均为64K。
v$inmemory_area视图有每个pool大小的详细信息:
点击(
此处
)折叠或打开
SQL
>
select
pool
,
ALLOC_BYTES
/
1024 k
,
used_bytes
,
POPULATE_STATUS
,
con_id
from
v$inmemory_area
;
POOL K USED_BYTES POPULATE_STATUS CON_ID
---------------------- ---------- ---------- ---------------- ----------
1MB POOL 37711872 0 DONE 3
64KB POOL 8633024 0 DONE