Oracle 18c新特性-Memoptimized Rowstore(内存优化的行存储)
1. 说明
从18c开始支持Memoptimized Rowstore,可用于提高查询性能。针对频繁基于主键查询的SQL语句的性能提高十分明显。
其是通SGA中的已一块存储区,叫memoptimize pool,其大小通过MEMOPTIMIZE_POOL_SIZE设置,其中存储着启用了fast lookup表的散列索引。
可以通过CREATE TABLE或ALTER TABLE…MEMOPTIMIZE FOR READ语句来启用表的fast lookup。
fast lookup是通过memoptimize pool中的散列索引结构来实现的,它可以快速访问表的块,从而永久的固定在缓冲区缓存中,以避免磁盘I/O。当配置并由Oracle数据库自动维护memoptimization Rowstore时,将创建这个散列索引。当启用表进行快速查找时,表的块被固定在缓冲区缓存中,表上的查询使用memoptimization pool中的散列索引来提高性能。
启用fast lookup要求:
- 表不能被压缩
- 表必须有主键约束
2. 启用memoptimize pool
要使用fast lookup必须先配置memoptimize pool,COMPATIBLE初始化参数要设置为18.0.0及以上。
SQL> SHOW PARAMETER MEMOPTIMIZE_POOL_SIZENAME TYPE VALUE------------------------------------ ----------- ------------------------------memoptimize_pool_size big integer 0SQL> ALTER SYSTEM SET MEMOPTIMIZE_POOL_SIZE=100M SCOPE=SPFILE;System altered.SQL> SHUTDOWN IMMEDIATEDatabase closed.Database dismounted.ORACLE instance shut down.SQL> startupORACLE instance started.Total System Global Area 1.1832E+10 bytesFixed Size 9010864 bytesVariable Size 1.1799E+10 bytesDatabase Buffers 16777216 bytesRedo Buffers 7766016 bytesDatabase mounted.Database opened.SQL> SHOW PARAMETER MEMOPTIMIZE_POOL_SIZENAME TYPE VALUE------------------------------------ ------------------- ------------------memoptimize_pool_size big integer 100M
3. 使用Fast Lookup
3.1. 启用Fast Lookup
可以创建表时指定MEMOPTIMIZE FOR READ,或者后面修改表时指定MEMOPTIMIZE FOR READ,都可以实现表启用fast lookup。
如:
- 创建表
SQL> create table cndba(id number(6) primary key,name varchar2(50))memoptimize for read;Table created.
- 修改
ALTER TABLE lei.cndba MEMOPTIMIZE FOR READ;
3.1.1. 查看执行计划
可以看到READ OPTIM表示了,是利用了Fast Lookup。
SQL> explain plan for select name from cndba where id=3;Explained.SQL> select * from table(dbms_xplan.display);PLAN_TABLE_OUTPUT------------------------------------------------------------------------Plan hash value: 313818278------------------------------------------------------------------------| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |------------------------------------------------------------------------| 0 | SELECT STATEMENT | | 1 | 40 | 1 (0)| 00:00:01 || 1 | TABLE ACCESS BY INDEX ROWID READ OPTIM| CNDBA | 1 | 40 | 1 (0)| 00:00:01 ||* 2 | INDEX UNIQUE SCAN READ OPTIM | SYS_C006370 | 1 | | 1 (0)| 00:00:01 |------------------------------------------------------------------------Predicate Information (identified by operation id):PLAN_TABLE_OUTPUT------------------------------------------------------------------------2 - access("ID"=3)14 rows selected.
3.2. 将表填充到Memoptimize Pool
execute DBMS_MEMOPTIMIZE.POPULATE('LEI','CNDBA');
3.3. 禁用Fast Lookup
ALTER TABLE lei.cndba NO MEMOPTIMIZE FOR READ;
3.3.1. 再看执行计划
不再使用fast lookup特性。
SQL> explain plan for select name from cndba where id=3;Explained.SQL> select * from table(dbms_xplan.display);PLAN_TABLE_OUTPUT------------------------------------------------------------------------Plan hash value: 313818278------------------------------------------------------------------------| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |------------------------------------------------------------------------| 0 | SELECT STATEMENT | | 1 | 40 | 1 (0)| 00:00:01 || 1 | TABLE ACCESS BY INDEX ROWID| CNDBA | 1 | 40 | 1 (0)| 00:00:01 ||* 2 | INDEX UNIQUE SCAN | SYS_C006370 | 1 | | 1 (0)| 00:00:01 |------------------------------------------------------------------------Predicate Information (identified by operation id):PLAN_TABLE_OUTPUT------------------------------------------------------------------------2 - access("ID"=3)14 rows selected.
Oracle 18c新特性-Memoptimized Rowstore(内存优化的行存储)相关推荐
- Oracle 18c新特性:多租户舰队 CDB Fleet
Oracle 18c新特性:多租户舰队 CDB Fleet 在 Oracle 18c 中,多租户的一个新特性 CDB Fleet 被引入进来,我们可以把这个特性称为:多租户舰队.(关注本公众号: Or ...
- oracle18c升级19,Oracle 18C新特性测试之滚动升级
原标题:Oracle 18C新特性测试之滚动升级 7月24日Oracle 18c通用版本正式对外发布后,三墩IT人在第一时间选取了Oracle 18c PDB在数据同步.迁移.切换方面的三项新功能的测 ...
- Oracle 18c 新特性:动态 Container Map 增强 Application Container 灵活性
数据技术嘉年华等你来 活动预告:11.16-17日,北京市东三环中路61号富力万丽酒店,相聚数据技术嘉年华,(99元票务)免费购票倒计时,点击查看大会详情. 盖老师带来主题"稳筑基石,云帆万 ...
- Oracle 18c新特性详解-多租户专题
Oracle 18c,传说中全球第一款自动驾驶数据库,正式到来.18c不仅仅是数据库,更是一种云服务,包括着Oracle数据库18c,Oracle云基础架构和Oracle云工具,机器学习,能够实现自治 ...
- Oracle 18c新特性:Schema-Only 帐号提升应用管理安全性
在 Oracle 18c 中,一个特殊类型的帐号被引入到数据库当中,这特特性被称为 Schema-Only 帐号,这个帐号通过 NO AUTHENTICATION 语句建立,没有密码,也就不允许直接登 ...
- Oracle 18c 新特性之CDB航母
给用户介绍Oracle多租户新特性时,多次忍不住将CDB比喻为航母,PDB则是停靠之上的舰载机.没想到18c竟然出了航母战斗群,^_^ 18c中引入了CDB fleet新特性,能够实现以下的功能: 扩 ...
- Oracle 18c 新特性-在线合并分区和子分区
说明 从18c开始支持在线合并分区或子分区,但不能合并引用分区表的分区.相反,父表上的合并操作将级联到所有子表.但是,当在主表上执行合并操作以合并分区或子分区时,可以使用dependency子句为从属 ...
- 专家视角 | 小荷的 Oracle Database 18c 新特性快速一瞥
作者介绍:何剑敏 大疆创新 互联网事业部 运维部数据库技术团队负责人,曾供职于中国联通,卓望数码,IBM 和 ORACLE ACS 华南团队.多年从事一线的数据库运维工作,有丰富项目经验.维护经验和 ...
- Oracle 12c新特性-多租户的维护管理
云和恩墨技术专家 现就职于云和恩墨,为某省电信公司数据库运维服务:在IT行业拥有10年以上的工作经历.擅长 ORACLE 数据库运维管理.shell 脚本开发:长期服务于电信.金融,政府行业:具有丰富 ...
最新文章
- iOS实现传递不定长的多个参数
- php设置ip,使用PHPIP的IP管理
- python官网下载步骤64位-Python 3.7 64位下载
- 演练:在组件设计器中创建 Windows 服务应用程序
- 5-python学习——条件语句
- 【转】带你玩转Visual Studio——01.开篇介绍
- 云栖专辑 | 阿里开发者们的第8个感悟:在信息大爆炸的时代,保持专注度显得尤为可贵...
- python执行shell命令行_python执行命令行:python中执行shell命令行read结果
- HTML5 Web Storage事件
- 无人驾驶插秧机智能辅助系统_无人驾驶插秧机搭载北斗导航驾驶系统,误差仅在2.5厘米内...
- Twitterrifi常用快捷键汇总
- 概率论与数理统计【三】一维随机变量及其分布
- 云课堂智慧职教网页版登录入口_云课堂智慧职教网页版
- 服务器lsass状态代码c0000005,lsass.exe是什么进程?Win7系统提示Lsass.exe系统错误的原因及解决方法...
- 在quartus II15.0中调用Modelsim进行时序仿真时出现Rerun the EDA Netlist Writer的原因
- 大连python薪酬_大连Python开发靠谱吗
- 《天赋》:第一章 天赋
- TLS Handshake failed: tls: server selected unsupported protocol version 301
- AI软件视频生成工具 抖音蓝V运营小助手
- Doris安装问题记录连续更新