LMT下表儲存引數的使用
這裡主要討論在LMT和DMT下某些儲存引數的設定的異同。
假設當前資料庫的DB_BLOCK_SIZE為D(K),建表的DDL設定了INITIAL為T,MINEXTENTS為S,PCTINCREASE為P,NEXT為N
本文的DB_BLOCK_SIZE=8K
1、字典管理
MIN_EXTENT:可以是大於0的任意整數
PCT_INCREASE:
INITIAL:,則如果建表時設定的INITIAL設定的值大於2*D,則實際INITIAL=CEIL(T/D)*D;如果建表時設定的INITIAL設定的值小於等於2*D,則實際INITIAL值為2*D。
如:EXP-1
create table test1
(
a number
)
tablespace system--字典管理表空間
storage
(
initial 1k
next 1k
minextents 4
pctincrease 20
);
在這個例子中,實際INITIAL為16K;
EXP-2
create table test2
(
a number
)
tablespace system--字典管理表空間
storage
(
initial 100k
next 100k
minextents 4
pctincrease 20
);
在這個例子中,實際的INITIAL=CEIL(100/8)*8=104
NEXT:
如果S=1,則實際的NEXT=CEIL(INITIAL*(1+P/100)/N)*N,其中INITIAL為實際值,而不是設定值;
如果S>1,則NEXT的實際值為S=1的情況下的第S+1個extent的值
EXP-3
create table test1
(
a number
)
tablespace system--字典管理表空間
storage
(
initial 100k
next 100k
minextents 1
pctincrease 20
);
在本例中,實際的NEXT=CEIL(104*1.2/8)*8=128
EXP-4
create table test1
(
a number
)
tablespace system--字典管理表空間
storage
(
initial 100k
next 100k
minextents 4
pctincrease 20
);
在本例中,實際的NEXT=192。
第二個EXTENT=INITIAL=104
SQL> select ceil(104*1.2/8)*8 from dual;(第3個EXTENT)
CEIL(124.8/8)*8
---------------
128
SQL> select ceil(128*1.2/8)*8 from dual;(第4個EXTENT)
CEIL(128*1.2/8)*8
-----------------
160
SQL> c/128/160
1* select ceil(160*1.2/8)*8 from dual;(第5個EXTENT)
SQL> /
CEIL(160*1.2/8)*8
-----------------
192
在本例中,NEXT=192K
2、本地管理
在建立表空間和建立表時,都可以設定storage引數。其中表的storage引數的優先順序大於表空間的引數。如果建表時沒有指定storage,則oracle會繼承表所對應的表空間的儲存引數。
INITIAL
LMT下,oracle在表空間一級不能設定NEXT, PCTINCREASE, MINEXTENTS, MAXEXTENTS,但在段一級可以設定這幾個引數(如在建表、索引的時候)。如果在段一級設定了這幾個引數,則這幾個引數將用來計算段的INITIAL值,此時段的INITIAL值將不是設定值,而是透過計算得到。
如果LMT表空間不是UNIFORM,則:
EXP-5
create table test
(
a number
)
storage
(
initial 100k
next 100k
minextents 4
pctincrease 100
);
該表所在表空間為本地管理的,這個表的實際的INITIAL為832K。
在LMT下,extent都是以64K為基本單位的,其初始的extent一般為64K。在本例中,MINEXTENTS為4,則前四個extent的實際大小分別為:
104K-104K-208K-416K(PCTINCREASE 100,參考DICT下INITIAL的計算方法)
所以,本例中INITIAL=104+104+208+416=832K。由於LMT下的EXTENT最小單位是64K,832剛好是64的倍數,所以oracle分配13個extents給INITIAL;如果計算得到的INITIAL不是64K的整數倍,oracle會按一下方法計算並分配:
CEIL(INITIAL/64)*64
如果LMT是UNIFORM(UNIT SIZE=16K),則
EXP-6
create table test
(
a number
)
tablespace t_uniform
storage
(
initial 100k
next 100k
minextents 4
);
則INITIAL=104+104+104+104=416,建表時oracle分配了26個extent給test
LMT下,PCTINCREASE, NEXT引數將不復存在(不能修改)[
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/231499/viewspace-63744/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- LMT和DMT下儲存引數的異同(轉)
- mysql儲存過程的引數MySql儲存過程
- PHP 編譯引數儲存PHP編譯
- 當儲存引數使用結構體時必備的開發技巧方式結構體
- 使用JAVA呼叫配方單儲存介面更新資料失敗, 使用了SaveParam引數Java
- go 如何呼叫 sqlserver 帶傳出引數的儲存過程GoSQLServer儲存過程
- MySQL儲存過程in、out、inout引數示例與總結MySql儲存過程
- 加速全球數字化轉型,HPE智慧儲存平臺引領新時代儲存變革
- Tensorflow儲存神經網路引數有妙招:Saver和Restore神經網路REST
- LMT下extent的分配
- 使用紋理的RGBA通道儲存float型別數值型別
- 使用SpringBoot JPA進行自定義的儲存及批量儲存Spring Boot
- Mysql 儲存過程的使用MySql儲存過程
- 使用SpringBoot-JPA進行自定義的儲存及批量儲存Spring Boot
- Docker儲存Volume使用Docker
- 本地儲存localStorage使用
- 造數儲存過程儲存過程
- 詳解MySQL儲存過程引數有三種型別(in、out、inout)MySql儲存過程型別
- 一個bug引發的Android分割槽儲存的思考Android
- 資訊的儲存及整數表示
- MySQL:Innodb中數字的儲存方式MySql
- 基於spring和swagger寫了個引數校驗的方法在此做個儲存SpringSwagger
- 使用執行緒本地變數儲存會員資訊執行緒變數
- [Hive]建表例項與引數解釋——自定義表的儲存格式(textfile、sequencefile、refile)Hive
- 塊儲存 檔案儲存 物件儲存物件
- 使用 NSUserDefaults 儲存字典的一個坑
- SqlServer儲存過程的建立與使用SQLServer儲存過程
- MySQL儲存過程的建立和使用MySql儲存過程
- 數值資訊的機器級儲存
- c語言中的變數儲存區域C語言變數
- 變數的儲存方式和生存期變數
- 使用 JDAudioCrawler 將下載的音訊儲存到本地儲存音訊
- 儲存—物件儲存_Minio物件
- Go 中使用 memcache 儲存物件Go物件
- 使用 dd 檢查儲存效能
- JavaScript使用localStorage儲存資料JavaScript
- 配置Kubernetes共享使用Ceph儲存
- 七牛儲存使用筆記筆記