[Oracle]In-Memory的Join Group 位于内存的何处?

In-Memory的Join Group 的数据字典位于内存的何处?

有客户问到,使用Oracle 的In-Memory功能时,如果用到了 Join Group,
那么这些这些Join Group,位于内存的何处?

根据同事的执行结果,整理如下:

1.prepare test env.
create table t1 as select * from dba_tables
create table t2 as select * from dba_tables
create inmemory join group t_join (t2(table_name),t1(table_name)  )
create inmemory join group t_join1 (t2(owner),t1(owner)  )

alter table t1 inmemory
alter table t2 inmemory
alter system set inmemory_size =300M

==run sql
SELECT  t1.owner,t2.table_name
FROM t1  , t2  
WHERE t1.table_name = t2.table_name

==check gd
SELECT o.object_name Table_Name, c.column_name Column_Name, gd.head_address AS "GD Address"
FROM user_objects o, user_tab_columns c, v$im_segdict gd
WHERE gd.objn = o.object_id
AND o.object_name = c.table_name
AND gd.column_number = c.column_id;

T1 TABLE_NAME 000000008A8B10F0
T2     OWNER 000000008A8310F0

对内存进行Dump:

==dum sga memory
HEAP DUMP heap name="IMCA_RW"  desc=0x60001178                 ***<<<<<heap name , following chunks belong this heap.
extent sz=0x1040 alt=336 het=32767 rec=0 flg=0x2 opc=0
parent=(nil) owner=(nil) nex=(nil) xsz=0x3bfffd0 heap=(nil)
fl2=0xa4, nex=(nil), idx=0, dsxvers=1, dsxflg=0x0
dsx first ext=0x89800030
dsx empty ext bytes=0  subheap rc link=0x898000a0,0x898000a0
pdb id=1, src pdb id=1
EXTENT 0 addr=0x89800030
 Chunk        089800040 sz=      112    perm      "perm       "  alo=112
Dump of memory from 0x0000000089800040 to 0x00000000898000B0
.............
 Chunk        08a7e10d8 sz= 46137368    freeable  "cimadrv    "
Dump of memory from 0x000000008A7E10D8 to 0x000000008D3E10F0   ***<<<<<this chunk cover these two address.

Repeat 3489 times
08A8B10F0 0A0A0A0A 00011E8E 00000001 00000836  [............6...]
08A8B1100 8A8C10F0 00000000 00000000 00000000  [................]
08A8B1110 00000000 00000000 00000000 00000000  [................]

Repeat 3489 times
08A8310F0 0A0A0A0A 00011E8F 00000000 00000014  [................]
08A831100 8A8410F0 00000000 00000000 00000000  [................]
08A831110 00000000 00000000 00000000 00000000  [................]

可以得出结论,位于 内存的 in memory 的clumn store里。

时间: 2024-10-30 03:58:04

[Oracle]In-Memory的Join Group 位于内存的何处?的相关文章

Oracle和MySQL分组查询GROUP BY

Oracle和MySQL分组查询GROUP BY 真题1.Oracle和MySQL中的分组(GROUP BY)有什么区别? 答案:Oracle对于GROUP BY是严格的,所有要SELECT出来的字段必须在GROUP BY后边出现,否则会报错:“ORA-00979: not a GROUP BY expression”.而MySQL则不同,如果SELECT出来的字段在GROUP BY后面没有出现,那么会随机取出一个值,而这样查询出来的数据不准确,语义也不明确.所以,作者建议在写SQL语句的时候,

xcode里面使用Memory Leaks和Instruments检测内存泄漏

教程截图: Leaks和Instruments教程[检测内存泄露]" src="http://pic002.cnblogs.com/images/2011/283130/2011080816513182.jpg"> 作为一名无证程序员,无论你多么精通Objective-C的内存管理,随着时间的推移,你也不可避免的犯内存相关的错误.但通常因为代码量太大,以至于你不可能一行一行的去排除(等你解决完,你设计的动车早相撞了!) 幸运的是,苹果已经提供了一些好的方式来帮助你找到应

EF INNER JOIN,LEFT JOIN,GROUP JOIN

IQueryable<TOuter>的扩展方法中提供了 INNER JOIN,GROUP JOIN但是没有提供LEFT JOIN GROUP JOIN适用于一对多的场景,如果关联的GROUP没有条目,会显示List条目为0,这一点其实也是LEFT join, 但是如果反过来,对于多对一的场景,虽然可以用GROUP JOIN,但是对于单一的条目却还要用List进行包装,就有点逻辑的冗余. 这个时候Left join就派上用场了 /// <summary> /// InnerJoin

Linq中join &amp; group join &amp; left join 的用法

Linq中join & group join & left join 的用法 2013-01-30 11:12 12154人阅读 评论(0) 收藏 举报  分类: C#(14)  文章转自:http://www.cnblogs.com/c-jquery-linq-sql-net-problem/archive/2011/01/17/LINQ_Inner_Join_Group_Join_Left_Join.html 我们在做SQL查询的时候经常会用到Inner Join,Left Join,

oracle中Window和Window Group

参考文献: http://www.5ienet.com/note/html/scheduler/oracle-scheduler-using-window.shtml window概念 此Windows非彼Windows,通常说的Windows是指盖首富的操作系统,而此处所说的Windows,是指SCHEDULER特性中的一个子项.在SCHEDULER中,WINDOW对应的是一个时间窗口的概念. 我们知道普通的jobs是没有运行时间管理地概念的,就是说一个job启动之后,用户只能被动地等待其执行

oracle 表连接 - hash join 哈希连接

一. hash 连接(哈希连接)原理 指的是两个表连接时, 先利用两表中记录较少的表在内存中建立 hash 表, 然后扫描记录较多的表并探測 hash 表, 找出与 hash 表相匹配的行来得到结果集的表连接方法. 哈希连接仅仅能用于等值连接条件(=). 如果以下的 sql 语句中表 T1 和 T2 的连接方式是哈希连接, T1 是驱动表 select * from T1, T2 where T1.id = T2.id and T1.name = 'David'; oracle 运行过程例如以下

hive regex insert join group cli

1.insert Insert时,from子句既能够放在select子句后,也能够放在insert子句前,以下两句是等价的 hive> FROM invites a INSERT OVERWRITE TABLE eventsSELECT a.bar, count(*) WHERE a.foo > 0 GROUP BY a.bar; hive> INSERT OVERWRITE TABLE events SELECTa.bar, count(*) FROM invites a WHERE

Oracle Database Memory Structures

Oracle Database creates and uses memory structures for various purposes. For example, memory stores program code being run, data that is shared among users, and private data areas for each connected user. Two basic memory structures are associated wi

Oracle数据库案例整理-Oracle系统执行时故障-Shared Pool内存不足导致数据库响应缓慢

1.1       现象描写叙述 数据库节点响应缓慢,部分用户业务受到影响. 查看数据库告警日志,開始显示ORA-07445错误,然后是大量的ORA-04031错误和ORA-00600错误. 检查数据库日志,数据库仍处于活动状态的信息例如以下: Sat Jul 17 07:51:52 2010 Thread 1 advanced to log sequence 266272   Current log# 2 seq# 266272 mem# 0: /dev/rlv_redo121   Curre