LMT下extent的分配
如果表空間存在多個資料檔案,那麼extent在擴充套件的時候是如何決定在那個extent檔案分配空間的呢?
下面做一個試驗來說明這個問題:
本實驗以本地管理的表空間為例。
--建立系統管理的本地表空間
SQL> create tablespace tbs_system datafile 'E:ORACLEORADATAORACLE9Itbs_system01.dbf' size 2112k,'E:ORACLEORADATAORACLE9Itbs_system02.dbf' size 2112k,'E:ORACLEORADATAORACLE9Itbs_system03.dbf' size 2112k,'E:ORACLEORADATAORACLE9Itbs_system04.dbf' size 2112k;
Tablespace created
--建立統一尺寸的本地表空間
SQL> create tablespace tbs_uniform datafile 'E:ORACLEORADATAORACLE9Itbs_uniform01.dbf' size 2112k,'E:ORACLEORADATAORACLE9Itbs_uniform02.dbf' size 2112k,'E:ORACLEORADATAORACLE9Itbs_uniform03.dbf' size 2112k,'E:ORACLEORADATAORACLE9Itbs_uniform04.dbf' size 2112k uniform size 64k;
Tablespace created
--建立一個基於系統管理表空間的表
SQL> create table t_system tablespace tbs_system as select * from item where rownum<15000;
Table created
SQL> select extent_id,blocks ,file_id from dba_extents where segment_name='T_SYSTEM';
EXTENT_ID BLOCKS FILE_ID
---------- ---------- ----------
0 8 10
1 8 10
2 8 10
3 8 10
4 8 10
5 8 10
6 8 10
7 8 10
8 8 10
9 8 10
10 8 10
11 8 10
12 8 10
13 8 10
14 8 10
15 8 10
16 128 11
17 128 12
18 128 13
19 128 10
EXTENT_ID BLOCKS FILE_ID
---------- ---------- ----------
20 128 11
21 128 12
22 rows selected
--從查詢結果可以看出,在前16個extent前(每個extent大小是64k),extent都在同一個資料檔案中;從17個extent(1m)開始,extent在同一個表空間的資料檔案中迴圈分配。
--建立基於統一尺寸本地表空間的表
SQL> create table t_uniform tablespace tbs_uniform as select * from item where rownum<15000;
Table created
SQL> select extent_id,blocks ,file_id from dba_extents where segment_name='T_UNIFORM';
EXTENT_ID BLOCKS FILE_ID
---------- ---------- ----------
0 8 14
1 8 15
2 8 16
3 8 17
4 8 14
5 8 15
6 8 16
7 8 17
8 8 14
9 8 15
10 8 16
11 8 17
12 8 14
13 8 15
14 8 16
15 8 17
16 8 14
17 8 15
18 8 16
19 8 17
EXTENT_ID BLOCKS FILE_ID
---------- ---------- ----------
20 8 14
21 8 15
22 8 16
23 8 17
24 8 14
25 8 15
26 8 16
27 8 17
28 8 14
29 8 15
30 8 16
31 8 17
32 8 14
33 8 15
34 8 16
35 8 17
36 8 14
37 8 15
38 8 16
39 8 17
40 8 14
--從以上查詢結果可以看出,在統一尺寸的表空間下,extent從一開始就在同一表空間下的各個資料檔案中迴圈擴充套件。
經過測試,在DMT下,oracle在資料檔案中擴充套件extent時也是趨於迴圈的。
我們可以利用oracle的這一特性,不用分割槽、不用在作業系統級做條帶化,只需要在建立表空間時多新增幾個資料檔案(各個資料檔案位於不同的磁碟中),就可以實現簡單的條帶化。
總結:
如果一個表空間存在多個資料檔案,且多個資料檔案都有可用的空間,則
1、如果是系統管理的本地表空間,為了使所有小區在一起,以避免在需要檔案中分配大量小區而導致在刪除物件時而產生的碎片,oracle會把物件的前16個extent(64k)都分配在同一個資料檔案中;從第17個extent開始才迴圈在同一個表空間的各個資料檔案中擴充套件。
2、如果是統一尺寸的本地管理表空間,則不用擔心碎片問題,extent從一開始就在多個資料檔案中迴圈分配。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/231499/viewspace-63747/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- LMT和DMT下儲存引數的異同(轉)
- LMT下表儲存引數的使用
- Java新提案:Extent-Local變數Java變數
- Oracle表空間的管理方式(LMT、DMT)--本地和字典管理Oracle
- 解決 httprunner2 無法使用 extent_report_templateHTTP
- ElasticSearch兩個節點的情況下,shard是如何分配的Elasticsearch
- 穩定的牛分配
- 物件的建立和分配物件
- JVM的棧上分配JVM
- RocketMq中MessageQueue的分配MQ
- RMAN中的通道分配
- Java中的地址分配Java
- SAP UI5 Form 表單 Column Layout 下的 Column 個數分配問題UIORM
- SAP RETAIL 沒有分配Assortment的物料,也可以正常下達採購訂單AI
- windows下使用redis解決.net6.0下人工呼叫介面時分配位置的併發問題WindowsRedis
- 解除分配UNASSIGN
- SAP RETAIL 分配表功能的使用AI
- 圖解PostgreSQL--buffer的分配圖解SQL
- SSR自動分配的規則
- 作業系統中檔案系統的實現和分配方式探析(下)作業系統
- cache:寫直達、寫回、寫分配、寫不分配
- 幹趴面試官系列 | 請你簡述一下Kafka中的分割槽分配面試Kafka
- C中的記憶體分配模型記憶體模型
- 圖解PostgreSQL--local buffer的分配圖解SQL
- C語言的記憶體分配C語言記憶體
- hbase啟動時分配region的流程
- Win10系統下怎麼為OneDrive分配驅動器號Win10
- 請問什麼時候物件分配會不在 TLAB 內分配物件
- win32下vs2013彙編傳參和區域性變數棧的分配Win32變數
- 檔案系統的物理結構分配
- IPv6基於策略的地址分配
- CubeMx的部分配置顯示不出來
- Go記憶體分配和GC的理解Go記憶體GC
- SAP RETAIL分配表的查詢報表AI
- Netty 中的記憶體分配淺析Netty記憶體
- Google的70/20/10分配法則Go
- [20181229]關於字串的分配問題.txt字串
- 裝置分配與回收