Storage Structure dan Reationship
Storage Structure dan Reationship
Hubungan Datablok, extent dan segment
datablockdatablockdatablock
………………………
………………………
………………………
datablockdatablockdatablock
Segment
Extent Extent Extent
PARAMETER UNTUK KONTROL STORAGE
PCFTREE dan PCTUSEDparameter 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 MAXTRANSmengontrol 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
Header
Direktori Tabel
Direktori Baris
Ruang kosong
Baris Data
Header
Direktori Tabel
Direktori Baris
Ruang kosong
Baris Data
20%
•Baris data hanya dapat mengisi datablok hingga 80% 20% untuk update baris yang sudah ada
•Tidak ada record baru yang dapat dimasukan hingga space dalam blok yang digunakan kurang dari 40%
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
– PCTFREE : 20– PCTUSED : 40
Operasi banyak melibatkan insert dan delete, tapi sedikit update yang meningkatkan ukuran record
– 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 Keterangan
CacheTak dapat dikendalikan oleh DBA, dikendalikan oleh instance
Undo Dapat dikendalikan, disebut juga rollback segmentTable Bisa dikendalikan, disebut juga data segment
Cluster Bisa dikendalikan, jarang digunakanIndex Bisa dikendalikan
Non-Segment Untuk operasi(procedure, function, triger), view,dll
SortKendali DBA minimal, disebut juga temporary segment
Table Partition Fitur baru (oracle 8)Index Partition Fitur baru (oracle 8)
Table subpartition Fitur baru (oracle 8i)Index subpartition 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 1SYSTEM 3080192 3080192 1TEST 5111808 5111808 1TOOLS 10420224 10420224 1TS1 3080192 3080192 1UNDOTBS1 983040 983040 1USERS 26148864 26148864 1