建立表時控制段延遲分配

2021-07-22 11:31:17 字數 1078 閱讀 6953

問題描述:部署乙個應用時,需要建立數千表和索引。如果每個表都分配段,你希望這些語句盡快執行完,不需要為每個表分配初始化空間

解決方案:推遲初始段生成的唯一方法就是使用11gr2的段延遲分配,將出事物理空間分配推遲到第一條記錄插入的時候。例子:

create table f_regs(reg_id number,reg_name varchar2(200));

查詢表尚未分配任何空間

select count(*) from user_segments where segment_name='f_regs';

select count(*) from user_extents where segment_name='f_regs';

插入一條記錄

insert into f_regs values(1,'beijing');

select count(*) from user_segments where segment_name='f_regs';

select count(*) from user_extents where segment_name='f_regs';

在以前的版本,建立乙個物件時,會馬上分配段

11.2.0.2以後支援分割槽表

工作原理:

從11gr2,對於本地管理的表空間中建立的未分割槽堆組織表,初始段的建立被推遲到第一條記錄插入表中時。以下情況你可能需要這個特性:

1、安裝具有大量表和索引的應用,可以提公升安裝速度

2、插入第一行資料的時間比以前稍長,因為會分配段。對於大多數應用,影響並不明顯

可以將初始化引數deferred_segment_creation設定為false,禁用段延遲分配屬性,預設值為true

也可以在建立表是控制段的分配行為,有兩個新子句,segment creation immediate和segment creation deferred,例如:

create table f_regs(reg_id number,reg_name varchar2(2000)) segment creation immediate;

初始化蠶食compatible需要在11.2.0.0.0或以上,才能使用這兩個子句

子類建立物件時記憶體分配解析

我們根據下面這段 來進行解析 class fu public int getnum class zi extends fu class testdemo 分析 如下圖所示 1 虛擬機器 jvm 尋找到testdemo.class檔案後將其載入到記憶體中。2 主函式main 入棧,在棧中定義zi型別的...

表控制建立過程

1 定義內錶,內錶的定義需要使用 data begin of itab 的定義方法 2 螢幕繪製中建立表控制 3 在程式中定義表控制 controls table control type tableview using screen 100 另外在程式中可以隨時使用 refresh control...

Oracle建立使用者,分配表空間

很多dba很頭痛一件事情 不知道誰在oracle上建立了乙個使用者,建立時,沒有給這個使用者指定預設表空間,這個使用者就會採用預設的表空間 users表空間 sys和system等系統使用者採用的預設表空間是system表空間 本文指導一下正確的建立使用者過程 1.建立臨時表空間 create us...