合 Oracle的内存列存储介绍
简介
关于内存列存储的说明
1)内存列存储是SGA里的一个静态的池。以列为单位的方存储元数据。因此oracle可以存储列或行的方式存储元数据在内存里。
2)列存储的数据可以压缩,且sql查询语句直接访问压缩数据
3)当你想把对象放到列存储里时,可以控制对象的优先级。
4)支持的版本为12.1.0.2或更高的兼容性
能在如下几种级别中打开内存存储
1)列(column)
2)表(tables)
3)物化视图(materialized view)
4)表空间(tablespace)
5)分区(partition)
如果在表空间级别启用In-Memory Column Store,那么所有存储在该表空间中的所有表与物化视图将抽默认启用In-Memory Column Store。可以将一个数据库对象的所有列或者将一个数据库对象的部分列加载到In-Memory Column Store中。类似地,对于分区表或物化视图,可以将所有分区或部分分区加载到In-Memory Column Store中
能用以下语句实现数据库对象放到内存列存储中
CREATE TABLE
ALTER TABLE
CREATE TABLESPACE
ALTER TABLESPACE
CREATE MATERIALIZED VIEW
ALTER MATERIALIZED VIEW
查看那些对象被放入到了列存储中
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | SELECT OWNER, SEGMENT_NAME, INMEMORY_PRIORITY, INMEMORY_COMPRESSION FROM V$IM_SEGMENTS; SELECT * FROM v$im_column_level; SELECT * FROM v$im_segments; select pool,trunc(ALLOC_BYTES/1024/1024) ALLOC,trunc(USED_BYTES/1024/1024) USED,POPULATE_STATUS,con_id from V$INMEMORY_AREA; SELECT d.owner, d.table_name, d.tablespace_name, d.logging, d.degree, d.inmemory, d.inmemory_priority, d.inmemory_distribute, d.inmemory_compression, d.inmemory_duplicate, d.inmemory_service, d.inmemory_service_name FROM dba_tables d where d.table_name = 'T_OBJ_IOT'; exec dbms_stats.gather_table_stats(ownname=>'LHR',tabname=>'T_OBJ',degree=>8,cascade=>true); |
列存储的优先级
PRIORITY NONE-->LOW-->MEDIUM-->HIGH-->CRITICAL