Managing Tables

advertisement
Managing Tables
BUDI SETIYONO, MT
Jenis-jenis table
 Tabel yang biasa dikenal :
 Tabel reguler
 Partitioned table
 Index-organized table
 Cluster table
Regular
table
Partitioned
table
Indexorganized
table
Cluster
Regular table
 Merupakan table paling umum  digunakan untuk
menyimpan data
 Merupakan default table
 DBA mempunyai akses yang sangat terbatas
terhadap distribusi baris-baris dalam table
 Baris dapat disimpan dalam urutan sembarang,
tergantung pada aktivitas dari table
Partitioned table
 Partisi sangat berguna untuk table dengan ukuran
besar dan sering dimanipulasi secara concurrent
 Sebuah partitioned table mempunyai satu atau lebih
partisi
 Tiap partisi dalam partitioned table dialokasikan
pada sebuah segment dan dapat ditempatkan dalam
tablespace yang berbeda-beda
Jenis Partisi (range)
 Range  field dipartisi berdasarkan nilai dalam
range tertentu
 Contoh :
Jenis Partisi (hash)
 Hash  jika tidak diketahui secara spesifik nilai,
ataupun range yang akan dipartisi
 Contoh :
Jenis Partisi (list)
 Merupakan fitur baru di Oracle 9i
 List  untuk tiap partisi hanya diberlakukan
nilai-nilai tertentu
 Contoh :
Jenis Partisi (composite)
 Composite  merupakan jenis partisi gabungan
antara metode partisi range dan hash
 Contoh :
Index-organized table
 Akan lebih baik digunakan untuk tabel-tabel yang banyak




diakses melalui primary key-nya
Menyimpan data dalam bentuk struktur index.
Menyerupai heap table dengan primary index pada satu
kolom atau lebih
Data akan tersimpan secara berurutan sesuai dengan
kolom primary key
Maintenance dilakukan pada dua bagian storage yang
terpisah :


Table sendiri (table segment)
index (B-tree) (index segment)
 Menyediakan fast key  untuk query yang tepat.
Clustered table
 Sebuah cluster dibuat untuk mengelompokkan table-table yang
mempunyai kesamaan datablok ataupun table-table yang share column
dan sering digunakan bersama
 Karakteristik dari cluster:






Cluster mempunyai sebuah cluster key, yang digunakan untuk
mengidentifikasi baris yang diperlukan untuk disimpan secara bersama
Cluster key terdiri dari satu atau lebih kolom
Table dalam cluster mempunyai kolom yang berkaitan dengan Cluster key
Updating suatu kolom dalam Cluster key dapat berakibat migrasi baris
Cluster biasanya dibuat untuk meningkatkan perfomansi
Cluster hanay berpengaruh pada fisikal storage, tanpa mempengaruhi
struktur logical
Oracle Data Types
Data type
User-defined
Scalar
CHAR(N), NCHAR(N)
VARCHAR2(N),
NVARCHAR2(N)
NUMBER(P,S)
DATE
RAW(N)
BLOB, CLOB,
NCLOB, BFILE
LONG, LONG RAW
ROWID
Built-in
Collection
VARRAY
TABLE
Relationship
REF
Tipe Data untuk penyimpanan Large Objects
LONG, LONG RAW
LOB
Single column per table
Multiple columns per table
Up to 2 gigabytes
Up to 4 gigabytes
SELECT returns data
SELECT returns locator
Data stored in-line
Data stored in-line or out-of-line
No object type support
Supports object types
Sequential access to chunks Random access to chunks
Struktur Baris
 Baris data disimpan sebagai
variable length record
 Kolom pada suatu baris pada
umumnya disimpan sebagaimana
urutan yang telah didefinisikan
 Kolom dengan nilai NULL tidak
disimpan
 Tiap baris dalam sebuah table
mempunyai


Row header  untuk menyimpan
jumlah kolom dalam baris
tersebut, chaining, row lock status
Row data  untuk setiap kolom,
Oracle akan menyimpan panjang
kolom dan nilai
header
Database Row
Column length
block
Column value
Struktur Baris
Legenda
Header
Direktori Tabel
Direktori Baris
Ruang kosong
Baris Data
Database
block
Row header
Column length
Column value
Data Blok
ROWID Data Type
 Identifier Unique untuk sebuah baris
 Digunakan untuk mengalokasikan sebuah baris
ROWID Format
OOOOOO
FFF
BBBBBB
RRR
Data object
number
Relative file
number
Block number
Row number
Contoh
Restricted ROWID
 Untuk compatible (pre Oracle 8i)
 Dapat mengidentifikasi baris-baris dalam segment
 Membutuhkan lebih sedikit space
BBBBBBBB
Block number
.
RRRR
Row number
.
FFFF
File number
High Water Mark (HWM)
 Merupakan indikator blok terakhir yang pernah dipakai
 Batas scanning terhadap suatu tabel
 Oracle instance tidak akan merubah HWM jika kita
mendelete baris
Extent ID
0
1
2
3
4
After inserts
High water mark
Extent ID
0
1
2
3
After deletes
Used block
Unused block
Free space after delete
4
Truncated table
 Merubah posisi HWM agar berada di awal blok,
sehingga blok yang kosong tidak di-scan (ketika full
table scan)
 Gunakan jika yakin bahwa setelah record di-delete,
tidak akan ada insert kembali
 Penggunaan truncated akan berakibat perfomance
menurun ketika ada insert record
Simulasi HWM
1.
2.
3.
4.
5.
6.
7.
8.
Buat table dengan banyak record
Set autotrace TraceOnley (onn-kan)
Amati jumlah blok yang discan
Set autotrace TraceOnley (off-kan)
Lakukan delete pada seluruh record
Lakukan commit
Set autotrace TraceOnley (onn-kan)
Amati jumlah blok yang discan
Delete Tanpa Truncate
 Create table
 Set autotrace
 Lakukan scan full table
Delete Tanpa Truncate
 Set autotrace off
 Delete seluruh
record
 Lakukan commit
 Set autotrace onn
 Lakukan full scan
table
Perbandingan
Sebelum delete
Setelah delete tanpa truncate
Delete dengan Truncate
Setelah delete tanpa truncate
Setelah delete dengan truncate
Deallocation of Unused Space
Before
deallocation
ALTER TABLE scott.employees
DEALLOCATE UNUSED;
High water mark
After
deallocation
Used block
Unused block
Free space after delete
Efek Truncate pada Insert
Tanpa truncate
Dengan truncate
Row Chaining dan Row Migration
 Row Chaining  row yang merentang lebih dari
satu blok. Penyebab :
Ukuran row > ukuran blok dan atau
 PctFree tak dapat menampung hasil update, sementara
blok berikutnya tak mampu menampung seluruh row

 Row migration  row yang bermigrasi secara
keseluruhan dari satu blok ke blok lain. Penyebab :
PctFree tak dapat menampung hasil update row
sementara blok berikutnya mampu menampung seluruh
row
 Ukuran row < ukuran blok

Row Migration and Chaining
Before
update
After
update
Deallocation of Unused Space
Before
deallocation
ALTER TABLE scott.employees
DEALLOCATE UNUSED;
High water mark
After
deallocation
Used block
Unused block
Free space after delete
Informasi table
DBA_OBJECTS
DBA_TABLES
OWNER
OBJECT_NAME
OBJECT_ID
DATA_OBJECT_ID
CREATED
OWNER
TABLE_NAME
PCT_FREE
PCT_USED
INITIAL_EXTENT
NEXT_EXTENT
MIN_EXTENTS
MAX_EXTENTS
PCT_INCREASE
CACHE
BLOCKS
EMPTY_BLOCKS
CHAIN_CNT
DBA_SEGMENTS
OWNER
SEGMENT_NAME
TABLESPACE_NAME
HEADER_FILE
HEADER_BLOCK
Contoh informasi dari table
ANALYZE TABLE scott.employees
ESTIMATE STATISTICS;
 Check
CHAIN_CNT
SELECT chain_cnt
FROM DBA_TABLES
WHERE table_name=‘EMPLOYEES’
AND owner=‘SCOTT’;
Download