暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

18c新特性Memoptimized Rowstore

原创 刘旭 2020-04-30
1656

特性概述

对于查询主要是基于主键列的表,Memoptimized Rowstore提供了快速查询数据的能力。
当启用快速查询时,Memoptimized Rowstore使用了系统全局区(SGA)中称作memoptimize 池的内存区域来存储表的hash索引。

快速查询由一个memoptimize池中的hash索引结构来启动。它提供了对特定表中的块的快速访问,此表永久的pin在buffer cache中来避免磁盘I/O。
这个hash索引在配置Memoptimized Rowstore时创建,并且由Oracle数据库自动维护。
当一个表启动了快速查询,这个表的块就会被pin到buffer cache里面,针对这个表的查询使用memoptimize池中的hash索引来改善性能。

要启动memoptimize池:

设置 MEMOPTIMIZE_POOL_SIZE 初始化参数为一个非0的值。最小设置是100M。
SQL> ALTER SYSTEM SET MEMOPTIMIZE_POOL_SIZE = 2G SCOPE=SPFILE;

为一个表启动快速查询

在CREATE TABLE或者ALTER TABLE语句中指定MEMOPTIMIZE FOR READ。
应事先启动memoptimize 池。
SQL> CREATE TABLE fast_lookup (id NUMBER(5) PRIMARY KEY, test_col VARCHAR2(15)) MEMOPTIMIZE FOR READ;
SQL> ALTER TABLE sh.products MEMOPTIMIZE FOR READ;

要将一个表迁移进Memoptimize池

SQL> execute DBMS_MEMOPTIMIZE.POPULATE(‘SH’,‘PRODUCTS’);

要禁用一个表上的快速查询

SQL> ALTER TABLE sh.products NO MEMOPTIMIZE FOR READ;

限制

启动快速查询的表不能被压缩。
启动快速查询的表上必须有一个启用状态的主键约束。

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论