BEBERAPA FAKTOR PENTING DALAM TUNING DATABASE ORACLE
Ada beberapa hal yang harus diperhatikan apabila kita akan melakukan performance tuning terhadap suatu database, hal-hal tersebut antara lain:
- Buat kesepakatan dengan user, sampai sejauh mana user akan menerima hasil dari proses tuning yang kita lakukan terhadap suatu database. Hal ini perlu untuk kita, sebagai executor, dalam pelaksaan proses tuning dalam database. Mengapa demikian? Apabila kita melaksanakan proses tuning pada database, tentunya harapannya adalah adanya peningkatan performance dari database tersebut. Untuk itulah maka perlu adanya satu batasan berupa kesepakatan dengan user database, jangan sampai suatu proses tuning database tidak di accept oleh user karena user merasa performance database yang telah kita lakukan tuning tidak significant perubahannya.
- Identifikasi terlebih dahulu area-area mana saja pada database yang paling critical, apabila kita tidak segera melakukan tuning terhadap database tersebut, atau dengan kata lain prioritaskan proses tuning pada area-area yang dianggap paling critical.
- Identifikasi bottleneck yang ada dalam sebuah atau beberapa query. Biasanya hanya karena sebuah query yang jelek menyebabkan performance menjadi turun secara keseluruhan.
- Jika memungkinkan, review terlebih dahulu design dari database yang akan kita tuning, apakah sudah bagus, sebelum kita melakukan tuning pada query-query terhadap database tersebut, karena apabila kita melakukan query tuning tetapi dari sisi design database kurang bagus, maka tuning pada query akan tidak optimal, bahkan mungkin tidak ada impact sama sekali.
- Pelajari strategi index yang sudah berjalan pada database yang akan kita tuning, dan lakukan improvement terlebih dulu pada area index ini.
- Jika kita rasakan index yang ada sudah optimal, lakukan identifikasi fragmentation level dari index yang ada, dan pastikan index statistic selalu up-to-date.
- Pelajari bagaimana cara kerja query optimizer, pelajari dan test beberapa bentuk tipe JOIN.
- Hindari penggunaan sub-query (select in select).
- Selalu gunakan UNION ALL daripada UNION, apabila memang ada operasi yang membutuhkan UNION
- Evaluasi penggunaan trigger yang berdampak pada performance.
- Hindari penggunaan SELECT ...... INTO sampai dengan kita yakin bahwa user yang terhubung ke database hanya kita sendiri atau proses yang kita lakukan hanya memerlukan waktu yang tidak lama. Jika sangat terpaksa gunakan INSERT .......SELECT.
- Gunakan SET NOCOUNT ON dalam semua modular code kita (Stored Procedure), untuk mengurangi informasi yang diberikan server ke client dan untuk mengurangi beban network.
- Jika memungkinkan, gantu semua query yang merupakan inline query menjadi stored procedure yang berparameter
- Jika memungkinkan, gunakan temporary table untuk mengurangi jumlah record pada saat query. Jika temporary table tersebut di join dengan permanent table, buat index di dalam temporary table tersebut.
- Optimalkan penggunaan loop, pindahkan semua proses yang tidak memerlukan pengulangan keluar loop.
- Jangan gunakan cursor jika memang tidak sangat terpaksa, TSQL tidak dioptimalkan untuk memproses 1 record dalam satu waktu
• Tempat penyimpanan data yang sebenarnya
• Ada 3 :
Datafiles : Data aktual di database
Redo Log files :
– Komponen penting dalam recovery database (mencatat semua perubahan database)
– Perubahan dicatat dalam redo log entry
– Redo log entry dapat disimpan dalam metode archivelog à archived redo log file (bisa manual / otomatis) oleh ARCH
– Info redo log : V$LOGFILE, V$LOG, V$ARCHIVED_LOG
Control Files :
– Menyimpan informasi dimana lokasi file-file yang dibutuhkan database
– Informasi akan berubah saat menambah dan merubah struktur fisik database
– Lokasi : dalam CONTROL_FILE dalam file init.ora
– Default ada 3 buah dalam lokasi yang sama (C:\oracle\oradata\sdm)
– Penamaan cntrlndbname.ctl (nama database di DB_NAME)
– Isi : SCN, lokasi datafile, lokasi redo log file, nama database, ukuran database
– Melihat isi : V$CONTROLFILE. Terdapat 2 kolom, STATUS dan NAME. Jika nilainya tidak ada maka pada kolom status akan bernilai INVALID / NULL.
– Bisa disimpan dalam tempat yang berbeda (multiplexing control file)
File- file yang lainya
• Parameter file :
– Berisi spesifikasi instance
– Ada 2 :
– Static parameter : format dalam ini/SID/.ora. Text sederhana yang dipanggil saat database dimulai
– Dynamic parameter : file biner untuk respon perintah user
• Password file :
– Menyimpan data user dan password / user privileges utk start dan shutdown database
– Kalo dalam keadaan database mati maka bisa dicari secara offline lewat sistem operasi
• Archieved Redo Log files :
– Menggandakan online redo log file yang penuh (untuk recovery) secara offline
SGA (System Global Area / Shared Global Area)
• Menyimpan informasi database dari proses database
• Berisi data dan control information dari oracle server dalam virtual memori pada komputer yang bersangkutan
• SQL> SHOW SGA;
• Bersifat dinamis
• Ukuran dalam SGA_MAX_SIZE
• SHARED POOL
terbagi menjadi 2 :
– Dictionary cache :
menyimpan data dictionary yang sering di query (berulang2 semakin cepat). Berisi informasi tentang database files, tables, indexes, columns, users, privileges, dan objek lain
– Library cache :
Menyimpan perintah SQL dan rencana bagaimana SQL dieksekusi. Terbagi 2 yaitu shared SQL (menyimpan SQL) dan shared PL/SQL (menyimpan PL/SQL)
ukuran : dalam SHARED_POOL_SIZE dalam file init.ora
ALTER SYSTEM SET SHARED_POOL_SIXE = 64M;
• DATABASE BUFFER CACHE :
– menyimpan data hasil perintah SQL
– kalo data yang diminta berulang-ulang à kecepatan query meningkat & mempercepat perubahan data di memori
– tidak langsung disimpan dalam disk
– ukuran : dalam parameter DB_BLOCK_SIZE dan DB_BLOCK_BUFFER dalam file init.ora
– Disimpan dalam sub2 : DB_CACHE_SIZE (ukuran buffer cachenya saja, harus selalu ada dan tdk bisa di set 0), DB_KEEP_CACHE_SIZE (ukuran yg sering diminta), DB_RECYCLE_CACHE_SIZE (yang sdh terhapus)
– ALTER SYSTEM SET DB_CACHE_SIZE = 96M;
– Menampilkan V$DB_CACHE_ADVICE
• REDO LOG BUFFER :
– Catatan semua perubahan dalam database (untuk proses recovery)
– Disimpan dalam Redo Log File secara fisik
– Ukuran : dalam LOG_BUFFER dalam file init.ora
• LARGE POOL :
– Area optional dalam SGA
– Untuk memori session (UGA) untuk shared server
– I/O server processes
– Backup dan restore utk RMAN
– Pararel execution message buffers (PARALLEL_AUTOMATIC_TUNING set to TRUE)
– Ukuran dalam LARGE_POOL_SIZE
• JAVA POOL :
– Berisi java command
– Dibutuhkan saat menginstal java
– Ukuran dalam JAVA_POOL_SIZE
PGA (Program Global Area)
• Membantu proses user
• Memory tidak dapat dishare
• Menyimpan nilai variable, kolom yang diurutkan, dll
• Menyimpan nilai variable untuk perintah SQL à beda user bisa beda nilai
• Dialokasikan saat proses dibuat
• Ditutup ketika proses selesai
• Digunakan hanya oleh 1 proses
• Terdiri dari
– Private SQL Area
– Session Memory
– SQL Work Areas
Background Proses
DBWn : Database Writer
• Background proses yang menulis dari Buffer Cache ke disk (datafile)
• Penulisannya saat :
– server proses butuh ruangan di buffer cache untuk menyimpan data
– dipicu oleh LGWR
– saat timeout setiap 3 detik
– Tablespace Offline
– Tablespace read only
– Table DROP or TRUNCATE
– Tablespace BEGIN BACKUP
• Memperbolehkan sampai 20 DBWR (DBW0-DBW9 dan DBWa-DBWj)
• Ukuran : dalam DB_WRITER_PROCESSES
DATA CONECTIVITY
Database Connectivity merupakan sebuah fasilitas komputer yang memungkinkan server client untuk berkomunikasi dengan database server pengguna lain. Database management system (DBMS) menyediakan fasilitas untuk menyimpan, mengorganisir, dan mengambil data.
Sebagian besar aplikasi bisnis menyimpan data dalam database relasional. Aplikasi dapat mengakses informasi database dengan menggunakan Java Database Connectivity (JDBC) API.
Hal yang perlu diperhatikan dalam Database Connectivity:
- Knowing the business, not only technology
- Centralized or Distributed
- Thin client or fat client
- Database gateway
- Network Trafic
- Database design
- New technology (XML, Java, etc)
- Webbase or dekstop
* Need provider?
* Availability?
* Reduce down time : – runtime maintenance
- feature DBMS to promote
- automate DBA function
- high speed function
- technology hardware
DBA Tools :
- Modeling & design
- Change management
- Table Editor
- Performance management
- Backup and recovery
- PT warehouse BI
- Programing & development
- Miscellaneous
Elemen – elemen dalam Database Connectivity
Database adalah repositori dimana data disimpan untuk perusahaan. Java EE mengakses aplikasi database relasional melalui API JDBC. Untuk prosedur administrasi. JDBC Connection Pool adalah sekelompok koneksi dapat digunakan kembali untuk database tertentu untuk prosedur administrasi.
Pooling Connection
Koneksi database yang terbatas dan mahal dapat memakan waktu yang tidak proposional dan lama untuk menciptakan relatif terhadap operasi yang dilakukan pada mereka. Hal ini sangat tidak efisien untuk sebuah aplikasi untuk membuat menutup koneksi database jika perlu untuk memperbaharui database.
ODBC (Open Database Connectivity)
Sebuah standar terbuka untuk konektivitas antar mesin basis data. Standar ini menyediakan API yang dapat digunakan untuk menjalankan dan mengoneksikan sebuah aplikasi dengan sbeuah sistem managemen basis data (SMBD). Pada Desainer ODBC membuatnya dengan tujuan agar ODBC terbebas dari penggunaan bahasa pemrograman tertentu, sistem manajemen basis data tertentu, dan sistem operasi tertentu.
Komponen utama ODBC
- ODBC API : Sekumpulan panggilan fungsi kode – kode kesalahan dan sintaksis SQL yang mendefinisikan bagaimana data dalam sebuah DBMS diakses.
- Driver basis data ODBC : driver yang mampu memproses panggilan fungsi ODBC untuk sebuah DBMS tertentu.
- ODBC Driver Manager : yang bertugas untuk memuat driver basis data ODBC yang dibutuhkan oleh aplikasi
Data Movement
Proses data movement ini adalah memindahkan (dapat diakatakan membackup juga) data – data dari database yang berupa data, indeks, grand, schema, dan lain – lain ketempat baru. Tempat baru ini bisa ke dalam database baru atau memang untuk dibackup saja.
Data movement terdiri dari 2 bagian besar yaitu :
- Load & Upload [difokuskan untuk memindahkan data yang berupa indeks atau data itu sendiri alias isi dari database tersebut]
- Export & Import [memindahkan data secara lengkap, mulai dari grand, schema, dan seluruhnya]
Jika dilihat, load tersebut behubungan dengan import dan upload berhubungan dengan export
Load berfungsi untuk memasukan data / transaksi ke sebuah table. Dapat dikatakan juga insert, replace, atau update. Sedangkan upload berfungsi untuk membuat dari data table ke fisik / file. Kelemahan load adalah dalam prosesnya bisa saja terjadi data yang tidak berpindah secara sempurna.
Upload Parameter
- Limit [membatasi beberapa record]
- Sample [mencari sample yang telah ditentukan]
- When [berdasarkan kondisi]
Dan pada upload, hanya satu parameter saja yang dapat berjalan alias tak bisa berjalan bersamaan apabila parameternya lebih dari 1.
Bulk Data Movement (Software Pendukung)
- ETL [Extrat Transform Load], software yang focus terhadap data warehouse
- Replication and Propagation, software yang memonitoring source database dan target, dan yang dihasilkan oleh software ini adalah pencatatatn log.
Perlu diperhatikan juga hak akses dalam load & unload, import & export minimal adalah akses select.
Distribution Database
Dalam distribution database terdapat 3 istilah yaitu :
- Autonomi [idependent], untuk tabel umum akses yang diberikan berbeda dari setiap user.
- Isolation [stand alone], untuk tabel khusus (privacy) itu terpisah dari user.
- Transparancy [all user], akses tabel terpisah dari user tetapi user masih dapat mengaksesnya.
Lawan dari database terdistribusi adalah database terpusat. Server yang terpusat memang diuntungkan dalam sisi maintenance sedangkan server terdistribusi lebih rumit dalam proses integrasinya.
Jika database terdistribusi paling tidak membutuhkan Sumber Daya Manusia [SDM] yang baik, network yang lebih baik karena permasalahan network itu sangat fatal dan biasanya permasalahannya tidak jauh – jauh dari permasalahan traffic network. Dan yang tidak boleh dilupakan adalah request dan respon.
Postingan Lebih Baru Postingan Lama Beranda
Langganan:
Postingan (Atom)