Lesson 2: In-Memory Column Store Tables
11. 对比In-Memory Column Store与buffer cache
set timing ON
-- 全表扫描一个3亿笔记录的大表。
SELECT Max(lo_ordtotalprice) most_expensive_order FROM lineorder;
-- 在buffer cache中访问
ALTER SESSION set inmemory_query = disable;
SELECT /* BUFFER CACHE */
Max(lo_ordtotalprice) most_expensive_order FROM lineorder;
-- 不要忘记改回enable .
ALTER SESSION set inmemory_query = enable;
虽然两者都是内存扫描,但是可以得到结论,在In-Memory Column Store中查询比
在传统的 buffer cache中要快。
In-Memory Column Store仅仅需要扫描单一一个列lo_ordtotalprice,而row store
(行存储)不得不扫描每一行中的所有columns, 直到reaches lo_ordtotalprice列。
我们也从出色的压缩比中受益,对于SIMD vector processing, 柱状格式不需要额外
的操作。
一般我们都是通过执行计划来查看SQL如何执行的。如果查询In-Memory Column Store Table,
那么执行计划中会显示 TABLE ACCESS IN MEMORY FULL 字样。 不过有很少的情况下,即使
object被标识为 IN MEMORY, 但是我们不能使用 In-Memory Column Store 。 这些就好比
在Exadata环境如何使用STORAGE 。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/35489/viewspace-1081459/ ,如需转载,请注明出处,否则将追究法律责任。