首頁 資料庫 mysql教程 Oracle 11g R2 新特性:Deferred Segment Generation

Oracle 11g R2 新特性:Deferred Segment Generation

Jun 07, 2016 pm 03:02 PM
oracle 新特性 特性

当你安装一个包含成千上万的表和索引的应用时,如果每个表和索引都初始分配一个 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及相应的 extentDeferred 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


本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
4 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

oracle如何查表空間大小 oracle如何查表空間大小 Apr 11, 2025 pm 08:15 PM

要查詢 Oracle 表空間大小,請遵循以下步驟:確定表空間名稱,方法是運行查詢:SELECT tablespace_name FROM dba_tablespaces;查詢表空間大小,方法是運行查詢:SELECT sum(bytes) AS total_size, sum(bytes_free) AS available_space, sum(bytes) - sum(bytes_free) AS used_space FROM dba_data_files WHERE tablespace_

oracle數據庫如何導入 oracle數據庫如何導入 Apr 11, 2025 pm 08:06 PM

數據導入方法:1. 使用 SQLLoader 實用程序:準備數據文件、創建控製文件、運行 SQLLoader;2. 使用 IMP/EXP 工具:導出數據、導入數據。提示:1. 大數據集推薦 SQL*Loader;2. 目標表應存在,列定義匹配;3. 導入後需驗證數據完整性。

oracle如何增加表字段 oracle如何增加表字段 Apr 11, 2025 pm 07:30 PM

使用 ALTER TABLE 語句,具體語法如下:ALTER TABLE table_name ADD column_name data_type [constraint-clause]。其中:table_name 為表名,column_name 為字段名,data_type 為數據類型,constraint-clause 為可選的約束。示例:ALTER TABLE employees ADD email VARCHAR2(100) 為 employees 表添加 email 字段。

如何在oracle中創建表 如何在oracle中創建表 Apr 11, 2025 pm 08:00 PM

創建 Oracle 表涉及以下步驟:使用 CREATE TABLE 語法指定表名、列名、數據類型、約束和默認值。表名應簡潔、描述性,且不超過 30 個字符。列名應描述性,數據類型指定列中存儲的數據類型。 NOT NULL 約束確保列中不允許使用空值,DEFAULT 子句可指定列的默認值。 PRIMARY KEY 約束標識表的唯一記錄。 FOREIGN KEY 約束指定表中的列引用另一個表中的主鍵。請參見示例表 students 的創建,其中包含主鍵、唯一約束和默認值。

oracle中亂碼怎麼解決 oracle中亂碼怎麼解決 Apr 11, 2025 pm 10:09 PM

Oracle 亂碼問題可以通過以下步驟解決:檢查數據庫字符集以確保與數據相匹配。設置客戶端字符集以與數據庫相匹配。轉換數據或修改列字符集以匹配數據庫字符集。使用 Unicode 字符集,並避免多字節字符集。檢查數據庫和客戶端的語言設置是否正確。

oracle如何去重查詢 oracle如何去重查詢 Apr 11, 2025 pm 07:33 PM

Oracle 提供多種去重查詢方法:DISTINCT 關鍵字返回每列的唯一值。 GROUP BY 子句對結果分組並返回每個分組的非重複值。 UNIQUE 關鍵字用於創建僅包含唯一行的索引,查詢該索引將自動去重。 ROW_NUMBER() 函數分配唯一數字並過濾出僅包含第 1 行的結果。 MIN() 或 MAX() 函數可返回數字列的非重複值。 INTERSECT 運算符返回兩個結果集的公共值(無重複項)。

Oracle安裝失敗如何卸載 Oracle安裝失敗如何卸載 Apr 11, 2025 pm 08:24 PM

Oracle 安裝失敗的卸載方法:關閉 Oracle 服務,刪除 Oracle 程序文件和註冊表項,卸載 Oracle 環境變量,重新啟動計算機。若卸載失敗,可使用 Oracle 通用卸載工具手動卸載。

oracle打不開怎麼辦 oracle打不開怎麼辦 Apr 11, 2025 pm 10:06 PM

Oracle 打不開的解決辦法包括:1. 啟動數據庫服務;2. 啟動監聽器;3. 檢查端口衝突;4. 正確設置環境變量;5. 確保防火牆或防病毒軟件未阻止連接;6. 檢查服務器是否已關閉;7. 使用 RMAN 恢復損壞的文件;8. 檢查 TNS 服務名稱是否正確;9. 檢查網絡連接;10. 重新安裝 Oracle 軟件。

See all articles