Oracle 11g R2 新特性:Deferred Segment Generation
当你安装一个包含成千上万的表和索引的应用时,如果每个表和索引都初始分配一个 10MB 的初始 extent 。你很快会意识到如果每个对象在创建时都要分配 10 MB 的磁盘空间,则部署 DDL 需要花费大量的时间。你可能会想到让 Oracle 延迟每个对象的初始 extent 分
当你安装一个包含成千上万的表和索引的应用时,如果每个表和索引都初始分配一个 10MB的初始 extent。你很快会意识到如果每个对象在创建时都要分配 10 MB的磁盘空间,则部署DDL需要花费大量的时间。你可能会想到让 Oracle延迟每个对象的初始extent分配直到该表中实际插入记录为止。
要延迟对象初始 segment的生成,唯一的方式就是使用 Oracle Database 11g R2。从 Oracle Database 11g R2以后,默认情况下,表(及其关联的索引)的物理 extent分配会延迟到该表插入首条记录时。
下面我们以一个简单的小例子来说明这一新特性:
首先,我们新建一张表(不插入任何记录):
SQL> create tabletest as select * from emp where 1=2;
Table created.
然后,我们查询 USER_SEGMENTS和 USER_EXTENTS来验证该表是否分配了物理的存储空间:
SQL> selectcount(*) from user_segments where segment_name='TEST';
COUNT(*)
----------
0
SQL> selectcount(*) from user_extents where segment_name ='TEST';
COUNT(*)
----------
0
接下来我们往新建的 TEST表中插入一条记录,验证记录插入后是否为该表分配存储空间:
SQL> insert intotest select * from emp where rownum
1 row created.
SQL> selectcount(*) from user_extents where segment_name ='TEST';
COUNT(*)
----------
1
SQL> selectcount(*) from user_segments where segment_name='TEST';
COUNT(*)
----------
1
上面的行为与之前的 Oracle版本有很大区别。在之前的Oracle版本中,只要创建一个对象,就会为该对象分配初始化 segment及相应的 extent。Deferred segment generation同样适用于分区表和分区索引。表在其初始记录插入之前不会分配初始 extent空间。
从 Oracle Database 11g R2以后,对于在 local managed的表空间中创建的非分区堆表,其初始 segment会延迟到该表中的第一条记录插入时创建。
Oracle 11g R2 的新特性deferred segment creation:
在创建表对象时不会分配任何物理存储空间,直至该表插入首条记录时才会分配初始 segment空间。这使得与之前的Oracle版本相比,在表中插入第一条记录时的速度要稍显得慢点,对于大多数场景,这种性能上的影响基本可以忽略。
将DEFERRED_SEGMENT_CREATION初始化参数设置为 FALSE可以禁用deferred segment creation特性。此参数的默认值为 TRUE。我们还可以在创建表时指定如下子句(新特性)来控制deferredsegment creation的
行为:
SEGMENT CREATION IMMEDIATE and SEGMENT CREATION DEFERRED
示例如下:
create table f_regs(
reg_id number
,reg_namevarchar2(2000))
segment creationimmediate;
注意要使用SEGMENTCREATION DEFERRED子句,必须将 COMPATIBLE参数设置为11.2.0.0.0及以上版本。
作者:xiangsir
9063657
QQ:444367417
MSN:xiangsir@hotmail.com

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

热门话题

Oracle 数据库启动顺序为:1. 检查前置条件;2. 启动监听器;3. 启动数据库实例;4. 等待数据库打开;5. 连接到数据库;6. 验证数据库状态;7. 启用服务(如果需要);8. 测试连接。

Oracle 数据库日志的保留期限取决于日志类型和配置,包括:重做日志:由 "LOG_ARCHIVE_DEST" 参数配置的最大大小决定。归档重做日志:由 "DB_RECOVERY_FILE_DEST_SIZE" 参数配置的最大大小决定。在线重做日志:不归档,在数据库重启时丢失,保留期限与实例运行时间一致。审计日志:由 "AUDIT_TRAIL" 参数配置,默认保留 30 天。

Oracle 所需内存量取决于数据库大小、活动水平和所需性能水平:用于存储数据缓冲区、索引缓冲区、执行 SQL 语句和管理数据字典缓存。具体数量受数据库大小、活动水平和所需性能水平影响。最佳实践包括设置适当的 SGA 大小、调整 SGA 组件大小、使用 AMM 和监控内存使用情况。

Oracle 可以通过以下步骤读取 dbf 文件:创建外部表,引用 dbf 文件;查询外部表,检索数据;将数据导入 Oracle 表。

Oracle 数据库服务器硬件配置要求:处理器:多核,主频至少 2.5 GHz,大型数据库建议 32 核以上。内存:小型数据库至少 8GB,中等规模 16-64GB,大型数据库或高负载工作负载高达 512GB 或更多。存储:SSD 或 NVMe 磁盘,RAID 阵列提高冗余和性能。网络:高速网络(10GbE 或更高),专用网卡,低延迟网络。其他:稳定电源、冗余组件、兼容操作系统和软件、散热和冷却系统。

Oracle 数据库所需内存量取决于数据库大小、工作负载类型和并发用户数量。通常建议:小型数据库:16-32 GB,中型数据库:32-64 GB,大型数据库:64 GB 或更多。其他需考虑因素包括数据库版本、内存优化选项、虚拟化和最佳实践(监视内存使用情况、调整分配)。

要在 Oracle 中创建每天执行一次的定时任务,需要执行以下三个步骤:创建一个作业。为作业添加一个子作业,并设置其计划表达式为“INTERVAL 1 DAY”。启用作业。

Oracle 数据库的内存需求取决于以下因素:数据库大小、活动用户数量、并发查询、启用的功能和系统硬件配置。确定内存要求的步骤包括:确定数据库大小、估计活动用户数量、了解并发查询、考虑启用的功能和检查系统硬件配置。
