Storage Structure dan Reationship

advertisement
Storage Structure
dan Reationship
Hubungan Datablok, extent dan
segment
Segment
datablock
datablock
datablock
………
………
………
………
………
………
………
………
………
Extent
datablock
Extent
datablock
datablock
Extent
PARAMETER UNTUK KONTROL
STORAGE



PCFTREE dan PCTUSED
parameter untuk mendefinisikan jumlah minimum
prosentase blok yang harus disediakan (berupa free
spaces) untuk operasi insert/update thd record yang
ada dalam blok tersebut.
INITRANS dan MAXTRANS
mengontrol jumlah concurent transaksi yang dapat untuk
memodifikasi ataupun create data pada suatu blok
FREELIST
tiap-tiap segment mempunyai satu atau lebih free list yang
digunakan untuk mencatat blok-blok kosong yang akan
digunakan untuk insert.
DATA BLOK


Bagian terkecil dari unit penyimpan di oracle
Format data blok adalah sama, baik yang
dipakai oleh index, cluster, ataupun store
table
Struktur Blok Data





Common and variable header  header terdiri dari
informasi mengenai blok beserta alamatnya. Type
blok dapat berupa data,index ataupun undo.
Common blok header terdiri dari 24 bytes
Table direktori  bagian dari data blok yang berisi
informasi mengenai table (terdiri dari 4 bytes)
Row Directori  berisi informasi mengenai aktual
row dalam blok. Menempati 4xjumlah baris.
Row data  baris aktual yang disimpan di blok ini
Free Spaces  space yang tersedia untuk baris
baru.s
Struktur Blok Data
Legenda
Header
Direktori Tabel
Direktori Baris
Ruang kosong
Baris Data
PARAMETER PENGONTROL BLOK
DATA


Terdiri dari PCTFREE dan PCTUSED
Misal PCTFREE=20 dan PCTUSED =40, maka :
–
–
–
–
–
Blok hanya bisa menerima data hingga terisi penuh 80%
Sisa 20% (PCTFREE)  untuk operasi update
Saat blok terisi 80%, blok tidak dapat menerima record.
Blok dapat menerima data jika memiliki free space lebih dari
60%  space yang telah digunakan kurang dari 40%
(PCTUSED)
Selanjutnya blok dapat menerima data hingga 80%,
demikian seterusnya….
Proses pengisian Blok
•Baris data hanya dapat mengisi datablok
hingga 80%  20% untuk update baris yang
sudah ada
20%
•Tidak ada record baru yang dapat
dimasukan hingga space dalam blok yang
digunakan kurang dari 40%
Header
Direktori Tabel
Direktori Baris
Ruang kosong
Baris Data
Proses pengisian Blok

Jika space yang digunakan
kurang dari 40%(PCTUSED),
blok ini dapat menerima
masukan record lagi hingga
mencapati 80%
Header
Direktori Tabel
Direktori Baris
Ruang kosong
Baris Data
Contoh skenario PCTFREE dan
PCTUSED

Operasi banyak melibatkan update yang meningkatkan ukuran
record 
–
–

Operasi banyak melibatkan insert dan delete, tapi sedikit
update yang meningkatkan ukuran record 
–
–

PCTFREE : 20
PCTUSED : 40
PCTFREE : 5
PCTUSED : 60 (free space dapat segera digunakan)
Ukuran table dengan baris sangat besar, operasi banyak
melibatkan select, jarang sekali update 
–
–
PCTFREE : 3 (free space yang tidak digunakan sedikit mungkin)
PCTUSED : 40
Default PCTFREE dan PCTUSED



Default untuk PCTFREE : 10
Default untuk PCTUSED : 40
PCTFREE dan PCTUSED dapat dbuat saat create
table 
–
Create table mhs (
nim
char(2),
nama varchar2(30))
PCTREE 20
PCTUSED 40;
INITRANS dan MAXTRANS

InitTrans  menentukan jumlah slot yang tersedia untuk
transaksi pada sebuah blok
Setiap blok punya blok header yang salah satu
bagiannya menyimpan transaction table, yaitu transaksi
mana saja yang sedang melakukan locking pada record
yang ada pada blok tersebut.
Jika terjadi multiple transaction, space pada blok
header dialokasikan untuk setiap transaksi.
default InitTrans : 1
Untuk index blok : 2.
INITRANS dan MAXTRANS

MaxTrans  maksimum jumlah transaksi
yang dapat dilakukan secara simultan pada
suatu blok
Maximum nilai MaxTrans : 255
Jika kebanyakan baris berukuran besar dan
sedikit user yang mengakses baris-baris
tersebut, set InitTrans kecil.
AUTOMATIC SPACE MANAGEMENT



Merupakan fitur baru pada oracle 9i
Untuk menghindari adanya block contention,
atau menghitung berapa jumlah free list
group dan berapa nilai PCTUSED yang
optimal;
Disarankan digunakan untuk data-data yang
tidak terstruktur, misal BLOB atau CLOB
AUTOMATIC SPACE MANAGEMENT

SQL> Create tablespace test_auto
datafile 'd:\db\mydb1\autotab.ora' size
512k extent management local
segment space management auto;
EXTENTS


Merupakan kumpulan data blok yang saling
berdampingan (kontigu)
Jika suatu segment membutuhkan tambahan
space, maka akan ditambahkan dalam
satuan extents
Parameter Pengontrol Extents



Initial  ukuran pertama extent untuk
sebuah segment, dialokasikan ketika
segment dibuat pertama kali
Next  ukuran extent kedua untuk segment
PctIncrease  parameter yang menentukan
berapa kali besar extent yang akan dibuat
dibandingkan dengan besar extens
sebelumnya
Parameter Pengontrol Extents


MINEXTENTS  jumlah minimum extent
yang dialokasikan ketika segment dibuat
MAXEXTENTS  jumlah maximum extent
yang diperbolehkan dalam suatu segment
Penggunaan parameter extent

SQL> Create tablespace test2
datafile 'd:\db\mydb1\myTest2.ora'
size 512k autoextend on next 5M
maxsize 20M default storage(initial
10K PCTIncrease 0 maxextents
unlimited);
SEGMENTS
• Merupakan unit logical storage yang terdiri
dari satu atau lebih extents.
• Kumpulan Extents membentuk Segment.
• Ukuran segment adalah total dari seluruh
ukuran extents
• Terdapat 11 jenis segment, yang dapat
dikelompokan dalam table sebagai berikut :
SEGMENTS
Tipe Segment
Cache
Undo
Table
Cluster
Index
Non-Segment
Sort
Table Partition
Index Partition
Table subpartition
Index subpartition
Keterangan
Tak dapat dikendalikan oleh DBA, dikendalikan
oleh instance
Dapat dikendalikan, disebut juga rollback segment
Bisa dikendalikan, disebut juga data segment
Bisa dikendalikan, jarang digunakan
Bisa dikendalikan
Untuk operasi(procedure, function, triger), view,dll
Kendali DBA minimal, disebut juga temporary
segment
Fitur baru (oracle 8)
Fitur baru (oracle 8)
Fitur baru (oracle 8i)
Fitur baru (oracle 8i)
Informasi struktur penyimpanan

Informasi struktur penyimpanan dapat dilihat
melalui data dictionary view :
–
–
–
–
DBA_Segments  informasi tentang segment
DBA_tablespaces  informasi tentang
tablespaces
DBA_extents  informasi tentang extents secara
detail (termasuk segmentnya)
DBA_free_space  informasi tentang jumlah free
spaces
Informasi struktur penyimpanan

SQL> select owner, segment_type, tablespace_name, file_id,
bytes from dba_extents where owner='ALI';

OWNER SEGMENT_TYPE
TABLESPACE_NAME
FILE_ID
BYTES
---------- -----------------------------------------------------------------------------------------------ALI
TABLE
TEST
7
65536
ALI
TABLE
SYSTEM
1
65536
ALI
TABLE
SYSTEM
1
65536
Informasi struktur penyimpanan
SQL>
Select tablespace_name, max(bytes)
largest,min(bytes)
smallest, count(*) ext_count from dba_free_space group
by tablespace_name;
TABLESPACE_NAME
LARGEST SMALLEST EXT_COUNT
------------------------------ ---------- ---------- -----------------------------------INDX
10420224 10420224
1
SYSTEM
3080192
3080192
1
TEST
5111808
5111808
1
TOOLS
10420224 10420224
1
TS1
3080192
3080192
1
UNDOTBS1
983040
983040
1
USERS
26148864 26148864
1
Download