Sabtu, 14 November 2009

KOMPRESI DATA PADA ORACLE 9 i

KOMPRESI DATA PADA ORACLE 9 i



1. Pembuatan Tabel Terkompres
Untuk membuat tabel terkompres, dibutuhkan kata kunci yang itu COMPRESS
ketika akan membuat tabel (CREATE TABLE). Kata kunci tersebut menunjukkan bahwa database pada Oracle akan langsung terformat secara kompres sebisa mungkin. Misalnya:

CREATE TABLE MAHASISWA (
NO_MHS VARCHAR2(8) NOT NULL,
NAMA VARCHAR2(50) NOT NULL,
TGL_LAHIR DATE NOT NULL,
KD_ASAL VARCHAR2(3) NOT NULL
)
COMPRESS ;

Atau dapat juga dideklarasikan pada sebuah tabel yang sudah terbuat, menggunakan kata kunci ALTER, misalnya:

ALTER TABLE MAHASISWA COMPRESS;

Untuk melihat apakah tabel yang dibuat terkompresi atau tidak, dapat dilihat melalui kamus
data tabel yaitu USER_TABLES pada kolom
COMPRESSION.

SELECT TABLE_NAME, COMPRESSION FROM
USER_TABLES;

TABLE_NAME COMPRESSION
------------------ -----------
MAHASISWA_TEMP DISABLED
MAHASISWA ENABLED

Atribut kompres dapat juga didefinisikan pada level tablespace, baik ketika pembuatan tablespace baru (CREATE TABLESPACE) maupun memodifikasi tablespace yang sudah ada (ALTER TABLESPACE). Atribut COMPRESS mempunyai properti semacam parameter penyimpanan. Maksudnya, ketika sebuah tabel didefinisikan pada sebuah tablespace, maka tabel tersebut akan mempunyai properti yang sama Seminar Nasional Aplikasi Teknologi Informasi 2005 (SNATI 2005) . Untuk melihat sebuah tablespace terkompresi atau tidak, dapat dilihat pada kamus data DBA_TABLESPACES kolom

DEF_TAB_COMPRESSION.

SELECT TABLESPACE_NAME,
DEF_TAB_COMPRESSION
FROM DBA_TABLESPACES;

TABLESPACE_NAME DEF_TAB_COMPRESSION
--------------- -------------------
DATA_MHS DISABLED
INDEX_MHS DISABLED

Walaupun seperti itu, tabel juga masih dapat dimodifikasi kondisinya tanpa menghiraukan kondisi tablespace-nya, seperti perintah sebelumnya.


2. Input Data pada Tabel Terkompresi
Ketika sebuah tabel didefinisikan terkompres, sebenarnya belum terjadi sebuah kompresi data sampai diinputkan data ke dalam tabel tersebut. Perintah atau kata kunci yang disebutkan atau dilakukan diatas hanya memodifikasi pada level kamus data. Lebih jauh lagi, untuk memastikan bahwa data benar-benar terkompres, dibutuhkan sebuah metode yang tepat dalam memasukkan atau menyisipkan data ke dalam tabel. Kompresi data hanya terjadi ketika sejumlah data yang sangat besar diinputkan ke dalam tabel melalui satu dari empat proses berikut:

a. Langsung melalui SQL*Loader
b. Serial INSERT menggunakan APPEND
c. Paralel INSERT
d. Melalui perintah CREATE TABLE ... AS
SELECT

Cara yang pertama, yaitu melalui SQL*Loader, merupakan cara yang paling baik
untuk mengisikan data ke dalam sebuah tabel jika data yang tersedia adalah file yang berukuran kecil.

$sqlldr IRVING/IRVING@DBMHS
control=mahasiswa.ctl direct=true

Jika data yang akan diisikan terdapat pada sebuah tabel yang sedang dipakai, maka metode kedua dan ketiga dapat dipakai. Sebagai contoh, anggap saja input data terdapat pada tabel tak terkompres yang sedang dipakai, yaitu MAHASISWA. Menggunakan metode serial INSERT, perintah yang dapat dituliskan yaitu:

INSERT /*+ APPEND */
INTO MAHASISWA_TEMP
SELECT * FROM MAHASISWA;

Atau dapat menggunakan metode paralel INSERT untuk mentransfer data ke dalam tabel yang terkompres.

3. Penggunaan Tabel Terkompres Penentuan

bilamana sebuah tabel akan dikompres atau tidak, tergantung dari aplikasi yang akan dibangun, tetapi selalu direkomendasikan kompresi.

Pada akhirnya, harus dipikirkan bagaimana pengaruh dari penghapusan kolom dalam penggunaan tabel terkompresi. Ketika terjadi penghapusan data pada tabel terkompres, database akan mengkosongkan sejumlah space yang sedang dipakai oleh kolom dalam blok database. Space kosong tersebut dapat digunakan kembali pada
pengisian data dilain waktu. Akan tetapi, ketika sebuah baris kembali diisi melalui cara konvensional, maka tidak akan terkompres lagi, bukan memasuki baris yang sudah dibebaskan sebelumnya (pada baris terkompres). Penggunaan DELETE dan INSERT dalam jumlah yang banyak akan menyebabkan terjadinya fragmentasi dan akhirnya akan membuang lebih banyak space dibandingkan dengan penggunaan kompresi tabel.

5. Pengkompresan Tabel yang Belum Terkompres Jika tabel-tabel yang ada merupakan tabel yang belum terkompresi, perintah ALTER TABLE ... MOVE dapat digunakan untuk mengkompresnya. Misalnya, pada tabel SALES_HISTORY_TEMP dapat dikompres dengan cara:

ALTER TABLE MAHASISWA_TEMP
MOVE COMPRESS;


6. Pengkompresan Sebuah VIEW

VIEW merupakan perwujudan dari sebuah query yang sangat panjang. VIEW juga dapat dikompres sama seperti halnya dengan tabel.
Caranya:
CREATE MATERIALIZED VIEW ASAL_MAHASISWA
COMPRESS
AS SELECT M.NO_MHS, M.NAMA, K.NAMA_KOTA
FROM MAHASISWA M, KOTA K
WHERE M.KD_ASAL = K.KD_ASAL;

Sebuah VIEW yang didasarkan penggabungan beberapa tabel merupakan kandidat
kuat untuk dilakukan sebuah pengkompresan, terutama pada VIEW yang jarang terjadi duplikasi item data. Kompresi sebuah VIEW dapat juga dilakukan dengan perintah ALTER MATERIALIZED VIEW.

ALTER MATERIALIZED VIEW ASAL_MAHASISWA
COMPRESS;

7. Pengkompresan Tabel yang Terpartisi

Untuk kompresi sebuah tabel yang terpartisi, ada banyak sekali pilihan untuk melakukannya. Maksudnya, kompresi bisa dilakukan pada level tabel atau juga pada level partisi. Misalnya, pada Listing 1 (Lampiran). Pembuatan tabel tersebut membentuk empat partisi. Ketika pernyataan COMPRESS diberikan, maka secara otomatis empat partisi tersebut akan terkompres. Dengan demikian, adanya keuntungan ini (kompresi pada level partisi), dapat digunakan sebagai pilihan untuk mengkompres sebagian partisi dan lainnya tetap tak terkompres.

8. Pengujian dan Pembahasan
Alasan terbesar untuk menggunakan tabel terkompres adalah meningkatkan efisiensi penyimpanan. Sebuah tabel dengan kondisi terkompres akan memakan jauh lebih sedikit space dibandingkan dengan yang tidak terkompres.

9. Kesimpulan
Kompresi tabel yang diperkenal oleh Oracle 9i ini, sangat baik sekali digunakan, terutama untuk mengefisiensikan space penyimpanan dan meningkatkan performance dari query yang dibuat, walaupun untuk pemasukan data ke dalam tabel terkompres akan membutuhkan waktu lebih lama daripada tabel yang tidak terkompres. Ini dikarenakan operasi-operasi yang terjadi selama proses kompresi ketika data dimasukkan.


Referensi
[1] Hutabarat, Benaridho. I. (2004). Oracle 8i/9i: Performance Tuning. Yogyakarta: Andi.

[2] Mishra, Sanjay. (2004). http://www.oracle.com/technology/oramag/oracle/04-mar/o24tech_data.html.

[3] Sakti, Nufransa Wira. (1999). Belajar Sendiri menggunakan SQL *Plus.

[4] Millsap, Cary. (2004). http://www.oracle.com/technology/oramag/oracle/04-jan/o14tech_perf.html

Tidak ada komentar:

Posting Komentar

masukkan koment anda