我刚开始使用Oracle In Memory(在单实例数据库中)的经验。 我已激活此功能,这是我的参数
select * from v$parameter where name like '%inme%'
inmemory_clause_default 2 NO INMEMORY
inmemory_force 2 DEFAULT
inmemory_max_populate_servers 3 9
inmemory_query 2 ENABLE
inmemory_size 6 5368709120
inmemory_trickle_repopulate_servers_percent 3 25
optimizer_inmemory_aware 1 TRUE
我已经为我的表激活了内存存储
alter table dwh.account_dh
INMEMORY MEMCOMPRESS FOR CAPACITY HIGH PRIORITY CRITICAL NO DUPLICATE
INMEMORY MEMCOMPRESS FOR CAPACITY HIGH(branchid,currencyid,corraccountid,account2id,clientid,attributevhd,
dateopen,dateclose,openingreason,ownertype,accounttype,krv_type,symincconid,
overestsign,figroup,accountparentid,ficoef,managaccountid,parentid,
profitcenterid,intercompanybranchid,accountgroupid,budgetportfolioid,
managmentfiid,bankproductid,acclevel,datematurity,payingagentacc,
operofficebranchid,respemployeeid,datebegin,dateend,closereason,
datasourceid,rowstatus,isforexreval,add_primarysource,loadid,nextloadid,
add_clienttype,add_retailsource,add_okatoid,vip)
INMEMORY NO MEMCOMPRESS(id,accountnumber,accountname,externalid,rid,add_primaryid);
然后我在桌子上进行了全面扫描
select /*+ FULL(T) NO_PARALLEL */ COUNT(*) FROM DWH.account_dh T;
我看到以下
select owner,segment_name,partition_name,inmemory_size,bytes,
bytes_not_populated,populate_status from v$im_segments order by bytes desc;
OWNER SEGMENT_NAME PARTITION_NAME INMEMORY_SIZE BYTES BYTES_NOT_POPULATED POPULATE_STATUS
DWH ACCOUNT_DH PMAX 9568256 292552704 268648448 COMPLETED
DWH ACCOUNT_DH P1 24248320 58720256 0 COMPLETED
与此同时,我的记忆区域没有完全填满
select * from V$INMEMORY_AREA;
POOL ALLOC_BYTES USED_BYTES POPULATE_STATUS CON_ID
1MB POOL 4293918720 132120576 DONE 0
64KB POOL 1056964608 3014656 DONE 0
为什么填充完成但是没有非填充字节?