前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【12.2新特性】In-Memory列存储的FastStart管理

【12.2新特性】In-Memory列存储的FastStart管理

作者头像
数据和云
发布2018-03-07 15:24:24
1.4K0
发布2018-03-07 15:24:24
举报
文章被收录于专栏:数据和云数据和云

启用IM列存储时,In-Memory FastStart通过将IMCU直接存储在磁盘上来优化IM列存储中数据库对象的数量,使数据库通过将列数据存储在磁盘上更快地打开。数据库在崩溃和恢复之后或在复制到其他Oracle RAC实例期间也可以从IM FastStart区域读取。

简介

当数据库实例重新启动时,IM列存储将被填充,这个过程可能是I /O密集型和CPU密集型的慢速操作。

启用IM FastStart时,数据库会定期将一列列数据保存到磁盘中,以便在实例重新启动期间更快的重新填充。 如果数据库在关闭后重新打开,则数据库将从FastStart区域读取列数据,然后将其填充到IM列存储中,确保维护所有事务一致性。

在数据库处于open状态并可操作的情况下,IM FastStart表空间需要间歇性的I/O操作,在数据库重启时,由于避免了CPU密集型压缩和格式化数据的过程,因此在一定程度上提高了性能。

实现原理

FastStart区域是指定的表空间,用于存储和管理INMEMORY对象的数据。 Oracle数据库会自动管理FastStart表空间,无需DBA干预。

每个PDB或非CDB只允许一个FastStart区域和一个指定的FastStart表空间。 指定的IM FastStart表空间后,不能更改或删除。 在Oracle RAC数据库中,所有节点共享FastStart数据。

启用FastStart

使用DBMS_INMEMORY_ADMIN.FASTSTART_ENABLE过程启用FastStart表空间。 空间管理工作进程(Wnnn)创建一个名为SYSDBinstance_name_LOBSEG $的空的SecureFiles LOB。

FastStart区域的管理

在启用FastStart区域后的第一次填充或重新填充期间,数据库将会创建FastStart区域。

数据库自动管理FastStart区域,具体包括:

1、每当发生对象的填充或重新生成时,数据库将其列数据写入FastStart区域。

空间管理工作进程(Wnnn)将IMCU(而不是IMEU或SMU)写入名为SYSDBinstance_name_LOBSEG $的SecureFiles LOB。 数据库将FastStart元数据写入SYSAUX表空间,SYSAUX表空间必须一直处于online状态。

根据CU进行DML操作的频繁程度,FastStart区域中的CU和IM列存储中的CU之间可能存在滞后。 DML越频繁的一个CU,数据库在IM列存储中填充的频率越低,将其写入FastStart区域的频率也越低。 如果数据库崩溃,那么在IM列存储中填充的一些CU可能不存在于FastStart区域中。

2、如果在段上定义ADO策略,则数据库将根据策略中的规则管理FastStart区域中的段。 例如,如果ADO指定对象根据策略将其属性更改为NO INMEMORY,则IM列存储从FastStart区域中删除其数据。

3、如果填充对象的属性更改为NOINMEMORY,则数据库将自动从FastStart区域中删除其IMCU。

4、如果FastStart表空间的空间不足,则数据库使用内部算法来删除最旧的段,并继续写入FastStart区域。 如果没有剩余空间,则数据库停止写入FastStart区域。

当启用FastStart区域时,数据库还会将这些段的IMCU写入fs_tbs中的FastStart区域。 如果数据库重新打开或实例重新启动,则数据库可以验证IMCU进行修改以确保事务一致性,并重新使用IMCU。 无论FastStart区域是否启用,数据库都会将数据块和磁盘区段存储在用户表空间中。

FastStart区域的数据读取

FastStart区域定义的是数据库重新打开时加载哪些数据,而不是什么时候加载数据。

当数据库重新打开时,加载的数据量由优先级决定。例如,数据库根据需要填充PRIORITY NONE的对象时,优先级为CRITICAL的对象会优先于优先级为LOW的对象被填充。

例如,在单实例数据库中,销售,客户和产品表在IM列存储中填充有PRIORITY NONE。在每次重新生成时,数据库将这些表的IMCU保存到FastStart区域。假设实例意外终止,重新打开数据库时,IM列存储空。如果一个查询扫描了销售,客户或产品表,那么数据库将该表的IMCU从FastStart区域加载到IM列存储中。

在大多数情况下,FastStart区域会增加计算的速度。但是,如果FastStart区域中存储的任何CU达到DML活动的内部阈值,则数据库将从数据文件而不是FastStart区域填充行数据。

启用FastStart

使用DBMS_INMEMORY_ADMIN.FASTSTART_ENABLE过程为FastStart区域指定表空间。

设置为FastStart区域创建的LOB的日志记录模式。如果nologging参数设置为FALSE(默认),则数据库将使用NOLOGGING选项创建LOB。如果nologging设置为TRUE,则数据库将使用LOGGING选项创建FastStart LOB。

先决条件

要创建FastStart区域,必须满足以下先决条件:

1、将被指定为FastStart区域的表空间必须存在。

2、此表空间必须有足够的空间存储IM列存储的数据,并且在将其指定为FastStart区域之前,它不能包含任何其他数据。 Oracle建议您创建具有INMEMORY_SIZE设置大小的两倍的FastStart表空间。

3、必须具有管理员权限。

如何创建IM FastStart区域:

1、在SQL * Plus或SQL Developer中,使用必要的权限登录数据库。

2、使用DBMS_INMEMORY_ADMIN.FASTSTART_ENABLE过程。

以下示例创建一个表空间并将其指定为FastStart区域。

1、在SQL * Plus或SQL Developer中,以管理权限登录数据库。

2、创建一个名为fs_tbs的表空间:

3、启用IM FastStart,并使用FastStart LOB的默认NOLOGGING选项将fs_tbs表空间指定为FastStart区域:

4、查询FastStart区域的状态和大小:

在这个阶段,FastStart区域中没有用户数据。

5、查询FastStart LOB的日志记录模式:

6、强制IM列存储重新填充任何当前填充的对象。以下查询强制重新销售销售,产品和客户表:

7、查询FastStart区域的大小:

通过查询V$ INMEMORY_FASTSTART_AREA视图获取当前指定为FastStart区域的表空间的名称。

如果没有启用FastStart表空间,则STATUS列显示NOT ENABLED; 否则,该列显示表空间名称。

先决条件

要检索FastStart表空间的名称,必须具有管理员权限。

如何检索FastStart表空间的名称:

1、在SQL * Plus或SQL Developer中,使用必要的权限登录数据库。 2、查询V $ INMEMORY_FASTSTART_AREA视图。

以下示例获取当前IM FastStart表空间的名称

此示例查询FastStart表空间的名称和状态(包括示例输出):

FastStart区域的迁移

可以通过在DBMS_INMEMORY_ADMIN包中运行FASTSTART_MIGRATE_STORAGE过程将FastStart区域迁移到其他表空间。

在非CDB或PDB中,一次只能指定一个表空间作为FastStart区域。

先决条件

1、将被指定为新的FastStart区域的表空间必须存在。

2、此表空间必须有足够的空间来存储IM列存储的数据,并且在将其指定为FastStart区域之前,它不能包含任何其他数据。

3、必须具有管理员权限。

迁移IM FastStart区域的步骤:

1、在SQL * Plus或SQL Developer中,使用必要的权限登录数据库。 2、运行DBMS_INMEMORY_ADMIN.FASTSTART_MIGRATE_STORAGE过程。

以下示例将FastStart区域迁移到不同的表空间

将IM FastStart区域迁移到new_fs_tbs表空间。

1、在SQL * Plus或SQL Developer中,以管理权限登录数据库。

2、查询当前FastStart表空间的名称:

3、创建一个名为new_fs_tbs的表空间:

4、将FastStart区域迁移到新的表空间:

5、查询当前FastStart表空间的名称:

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2017-05-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 数据和云 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 通过查询V$ INMEMORY_FASTSTART_AREA视图获取当前指定为FastStart区域的表空间的名称。
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档