Presentasi sedang didownload. Silahkan tunggu

Presentasi sedang didownload. Silahkan tunggu

Basis Data dan SBP Disusun Oleh : Lily Wulandari.

Presentasi serupa


Presentasi berjudul: "Basis Data dan SBP Disusun Oleh : Lily Wulandari."— Transcript presentasi:

1 Basis Data dan SBP Disusun Oleh : Lily Wulandari

2 Database Query Language

3 SQL dan Bahasa Pemrograman

4 SQL Murni SQL Murni: Query yang ditulis pada SQL prompt.
SQL adalah non-procedural language. SQL menentukan WHAT, bukan HOW. SQL murni bagus untuk: Menentukan struktur database Menghasilkan low-volume, ad hoc queries prototyping Aplikasi canggih sering diimplementasikan dengan menggunakan SQL yang dikombinasikan dengan bahasa pemrograman.

5 Embedded SQL SQL dapat disisipkan dalam bahasa pemrograman procedural
Bahasa ini meliputi C/C++, Java, Perl, Python, dan PHP. Embedded SQL mendukung: Aplikasi yang di custom Background applications yang berjalan tanpa intervensi user. Kombinasi database tools dengan programming tools. Databases pada WWW.

6 Dua Tipe embedding Low-level embedding (Contoh C/C++):
SQL dan program dicompile ke dalam sebuah executable tunggal Link yang sangat efisien. ODBC - Open Database Connectivity (Contoh PHP/Java): SQL query dikirim dari program ke database sebagai sebuah string. Hasil dikembalikan sebagai sebuah array atau list. Kebebasan program dan database: Masing-masing bahasa memiliki satu DBI (database interface) untuk semua tipe DBMS. (Cotoh, JDBC untuk Java.) database driver (DBD) yang terpisah untuk masing-masing tipe DBMS .

7 Low-level embedding (eg. C/C++)
Query terdiri atas gabungan SQL dan perintah khusus. Sebuah cursor melangkah melalui hasil row satu pada satu waktu. Sebagai contoh: EXEC SQL SELECT empname INTO :ename FROM employee WHERE eno = :eno;

8 Cursors Sebuah pointer untuk current item dalam sebuah himpunan hasil query. Dimulai dengan item pertama. Melangkah melalui hasil satu pada satu waktu Beberapa Implementasi kursor memungkinkan untuk mundur juga.

9 ODBC database connections
Connect to the database. Prepare a query (as a string). Execute the query. Fetch the results (as an array of rows). Finish the query (so that DB can clean up its buffers). Disconnect from the database.

10 Contoh: Java import the DBI libraries
Class.forName(”oracle.jdbc.OracleDriver”) connect to the database Connection con = DriverManager.getConnection (”jdbc:oracle:Databasename”,”myLogin”,”myPassword”); Execute a query ResultSet rs = stmt.executeQuery (”SELECT empno, surname FROM employee”); Cursor points to the first row rs.next()

11 Fetching the result (Java)
while (rs.next()) { int emp = rs.getInt("empno"); String surn = rs.getString("surname"); System.out.println(emp + " " + surn); } or int emp = rs.getInt(1); String surn = rs.getString(2); System.out.println(emp + " " + surn);}

12 Contoh: PHP connect to the database
$link = mysql connect(’hostname’,’uname’, ’passwd’); Select database mysql select db(’test’); Execute a query $result = mysql query(’select * from test’); Fetch the result (See next slide) Finish the query mysql free result($result); Disconnect the database mysql close($link); mysql commands might throw errors, which should be caught: ... or die(’Error message ’ . mysql error());

13 Fetching the result (PHP)
echo "<table>"; while ($line = mysql fetch array($result, MYSQL ASSOC)){ echo "<tr>"; echo "<td>",$line[’firstfield’],"</td>"; echo "<td>",$line[’secondfield’],"</td>"; echo "<td>",$line[’thirdfield’],"</td>"; echo "</tr>"; } echo "</table>";

14 Optimasi Query

15 Pendahuluan Komputer tidak hanya mampu menyimpan data, tetapi juga mampu mengambil atau mendapatkan kembali data tersebut. Sifat menyimpan dan mengambil kembali data yang sudah disimpan tersebut membutuhkan pengelolaan yang baik, sehingga didapatkan suatu kemampuan menyimpan dan mendapatkan kembali secara efektif dan efisien.

16 Pendahuluan Data yang tersimpan dalam database semakin lama akan semakin besar ukuran atau volumenya. Kalau tidak didukung dengan kecepatan akses yang memadai maka akan semakin menurun unjuk kerjanya. Ukuran unjuk kerja dalam hal ini kecepatan akses data dipengaruhi oleh banyak faktor.

17 Pendahuluan Kemampuan mengelola data tersebut biasa disebuat sebagai suatu database system. Untuk mendukung peranan penyimpanan dan penampilan data tersebut (database system) komputer membutuhkan softaware yang mengatur jalannya data (keluar masuknya data) yang biasa disebut dengan database management system (DBMS).

18 Pendahuluan Fasilitas dari DBMS adalah dapat mengakses sebuah database tunggal secara bersamaan oleh banyak user, dapat mengakses data secara terbatas hanya untuk user yang berhak dan mengganti kegagalan dari sistem-sistem tanpa kehilangan keutuhan data. Umumnya, interface yang pertama (pokok) untuk sebuah DMBS adalah sebuah high level query atau data manipulation language yang dapat dengan mudah digunakan. Contoh dari high level query adalah SQL (Structure Query Language).

19 Optimasi Pada Perintah SQL
Desain aplikasi saja tidak cukup untuk meningkatkan unjuk kerja harus didukung dengan optimasi dari perintah SQL yang digunakan pada aplikasi tersebut. Seringkali lokasi fisik data tidak menjadi perhatian penting saat mendesain database. Karena hanya desain logik saja yang diperhatikan.

20 Optimasi Pada Perintah SQL
Untuk menampilkan hasil query dibutuhkan pencarian yang melibatkan struktur fisik penyimpanan data. Inti dari optimasi query adalah meminimalkan “jalur” pencarian untuk menemukan data yang disimpan dalam lokasi fisik.

21 Optimasi Pada Perintah SQL
Kehandalan dari suatu sistem database atau DBMS dapat diketahui dari cara kerja optimizer-nya dalam memproses statement-statement SQL yang dibuat oleh user maupun program-program aplikasinya.

22 Optimasi Pada Perintah SQL
Di dalam optimizer, statement-statement yang ada diproses dengan salah satu cara dari banyak cara yang ada untuk mendapatkan perencanaan query yang paling optimal sehingga pada akhirnya akan didapatkan jawaban query dengan waktu akses yang paling minimum. Proses untuk mencari perencanaan eksekusi query yang terbaik inilah yang disebut dengan proses optimasi query.

23 Optimasi Pada Perintah SQL
Query optimasi merupakan sebuah proses memilih query plan yang paling efisien dari banyak startegi pengaksesan query, khususnya untuk query yang kompleks.

24 Optimasi Pada Perintah SQL
Index pada database digunakan untuk meningkatkan kecepatan akses data. Pada saat query dijalankan, index mencari data dan menentukan nilai ROWID yang membantu menemukan lokasi data secara fisik di disk. Akan tetapi penggunaan index yang tidak tepat, tidak akan meningkatkan unjuk kerja dalam hal ini kecepatan akses data.

25 Optimasi Pada Perintah SQL
Misal digunakan index yang melibatkan tiga buah kolom yang mengurutkan kolom menurut kota, propinsi dan kode pos dari tabel karyawan, sebagai berikut : CREATE INDEX idx_kota_prop_kodepos ON karyawan(kota, propinsi, kode_pos) TABLESPACE INDX;

26 Optimasi Pada Perintah SQL
Kemudian user melakukan query sebagai berikut : SELECT * FROM karyawan WHERE propinsi=’Jawa Barat’; Pada saat melakukan query ini, index tidak akan digunakan karena kolom pertama (kota) tidak digunakan dalam klausa WHERE.

27 Optimasi Pada Perintah SQL
Jika user sering melakukan query ini, maka kolom index harus diurutkan menurut propinsi. Selain itu, proses pencarian data akan lebih cepat jika data terletak pada block tabel yang berdekatan daripada harus mencari di beberapa datafile yang terletak pada block yang berbeda.

28 Optimasi Pada Perintah SQL
Misal pada perintah SQL berikut ini : SELECT * FROM karyawan WHERE id BETWEEN 1010 AND 2010; Query ini akan melakukan “scan” terhadap sedikit data block jika tabel karyawan di atas diurutkan berdasarkan kolom id. Untuk mengurutkan berdasarkan kolom yang berbeda-beda maka tabel disimpan dalam flat file, kemudian tabel diekspor dan diurutkan sesuai kebutuhan.

29 Optimasi Pada Perintah SQL
Alternatif yang lain, bisa digunakan perintah untuk membuat tabel lain yang memiliki urutan yang berbeda dari tabel asal, seperti perintah SQL berikut : CREATE TABLE karyawan_urut AS SELECT * FROM karyawan ORDER BY id; Pada SQL di atas, tabel karyawan_urut berisi data yang sama dengan tabel karyawan hanya datanya terurut berdasarkan kolom id.

30 Faktor Lain Yang Berpengaruh Terhadap Kecepatan Akses Data
OPTIMASI APLIKASI Dalam pembuatan aplikasi, yang perlu mendapat perhatian adalah apakah akses terhadap data sudah efisien. Efisien dalam hal penggunaan obyek yang mendukung kecepatan akses, seperti index atau cluster. Kemudian juga bagaimana cara database didesain. Apakah desain database sudah melakukan normalisasi data secara tepat.

31 Faktor Lain Yang Berpengaruh Terhadap Kecepatan Akses Data
Kadangkala normalisasi sampai level yang kesekian, tidak menjamin suatu desain yang efisien. Untuk membuat desain yang lebih tepat, kadang setelah melakukan normalisasi perlu dilakukan denormalisasi. Misalnya tabel yang hubungannya one-to-one dan sering diakses bersama lebih baik disatukan dalam satu tabel.

32 Faktor Lain Yang Berpengaruh Terhadap Kecepatan Akses Data
CLUSTER DAN INDEX Cluster adalah suatu segment yang menyimpan data dari tabel yang berbeda dalam suatu struktur fisik disk yang berdekatan. Konfigurasi ini bermanfaat untuk akses data dari beberapa tabel yang sering di-query. Penggunaan cluster secara tepat dilaksanakan setelah menganalisa tabel-tabel mana saja yang sering di-query secara bersamaan menggunaan perintah SQL join.

33 Faktor Lain Yang Berpengaruh Terhadap Kecepatan Akses Data
Jika aplikasi sering melakukan query dengan menggunakan suatu kolom yang berada pada klausa WHERE, maka harus digunakan index yang melibatkan kolom tersebut. Penggunaan index yang tepat bergantung pada jenis nilai yang terdapat dalam kolom yang akan diindex. Dalam RDBMS Oracle, index B-Tree digunakan untuk kolom yang mengandung nilai yang cukup bervariasi, sedangkan untuk nilai yang tidak memiliki variasi cukup banyak, lebih baik menggunakan index bitmap.

34 Fungsi dari Operasi-operasi Dasar Aljabar Relasional
Select. Operasi Select berfungsi untuk menyeleksi tuple-tuple yang memenuhi predikat yang diberikan dari sebuah tabel relasi.dan simbol yang di gunakan adalah simbol sigma “σ” simbol ini digunakan untuk menunjukkan operasi select. Misalkan kita mau mencari hasil NILAI  berdasrkan NPM, maka operasi aljabar relasional: σNPM = (NILAI) NPM KDMK Nilai1 Nilai2 KK021 60 75 KD132 40 30

35 Fungsi dari Operasi-operasi Dasar Aljabar Relasional
KDMK SKS KK021 2 KD132 3 KU122

36 Fungsi dari Operasi-operasi Dasar Aljabar Relasional
3. Union Operasi Union berfungsi untuk mendapatkan gabungan nilai atribut dari sebuah tabel relasi dengan nilai atribut dari tabel relasi lainnya. dan simbol yang di gunakan adalah simbol “∪”. Pada operasi union bernilai benar jika kedua kondisinya terpenuhi yaitu : Derajat dari 2 tabel relasi yang dioperasikan harus sama dan domain dari atribut yang dioperasikan juga harus sama.

37 Fungsi dari Operasi-operasi Dasar Aljabar Relasional
Misalkan terdapat 2 tabel relasi bernama ASLABSI dan ASLABTI seperti contoh berikut ini : ASLABSI ASLABTI NPM Nama Kelas Eko Putra 3KA07 Keque Irfan Riza Rulham NPM Nama Kelas M. Ali Nurdin 3KA07 Riza Rulham Soli Kurniawan

38 Fungsi dari Operasi-operasi Dasar Aljabar Relasional
Eko Putra Keque Irfan M. Ali Nurdin Riza Rulham Soli Kurniawan

39 Fungsi dari Operasi-operasi Dasar Aljabar Relasional
Eko Putra Keque Irfan

40 Fungsi dari Operasi-operasi Dasar Aljabar Relasional
4. Cartesian Product Set Difference berfungsi untuk mengkombinasikan informasi yang ada dalam 2 tabel relasi dan menghasilkan sebuah tabel relasi yang baru. dan simbol yang di gunakan adalah simbol “x“  simbol ini digunakan untuk menunjukkan operasi set difference. Contoh penggunaan operasi cartesian product : ASLABTI x MKUL ⟹ tabel relasi baru Dari perintah di atas berarti mengkombinasikan seluruh tupel yang ada pada tabel ASLABTI dengan tabel MKUL. Hasil dari operasi adalah :

41 Fungsi dari Operasi-operasi Dasar Aljabar Relasional
M. Ali Nurdin 3KA07 KK021 P. Basis Data 2 KD132 SIM 3 KU122 Pancasila Riza Rulham Soli Kurniawan

42 Fungsi dari Operasi-operasi Dasar Aljabar Relasional

43 Fungsi dari Operasi-operasi Dasar Aljabar Relasional

44 Fungsi dari Operasi-operasi Dasar Aljabar Relasional
Dari perintah di atas berarti mendapatkan nilai dari operasi project dengan predikat NPM, KDMK, dan MID dan argumen hasil dari operasi natural join antara tabel MHS dengan tabel NILAI. Hasil dari operasi di atas adalah : KK021 60 KD132 40 70 55 KU122 90 80 75

45 Fungsi dari Operasi-operasi Dasar Aljabar Relasional

46 Fungsi dari Operasi-operasi Dasar Aljabar Relasional
3. Theta Join Operasi theta join berfungsi jika ingin mengkombinasikan tupel dari 2 tabel relasi dimana kondisi dari kombinasi tersebut tidak hanya kesamaan nilai dari 2 atribut bernama sama, tetapi kondisi yang diinginkan juga bisa menggunakan operator relasional (≤, <, =, >, ≥). Operasi theta join merupakan ekstensi dari natural join.

47 Rule Equivalence Dalam mendapatkan query plan yang efisien pemeriksaan dilakukan mulai dari pemeriksaaan akses path yang mungin (primary index akses, secondary indeks akses, dan full file scan), dan juga variasi teknik join tabel relasional.

48 Rule Equivalence Tujuan dari optimasi adalah untuk mengurangi sebanyak mungkin tuple atau baris yang tidak dibutuhkan. Jika kita sudah memiliki query, maka kita bisa mengoptimasi query dengan cara mentransform query tersebut.

49 Rule Equivalence Untuk memeriksa apakah query yang dioptimasi hasilnya sama dengan query yang biasa, ada beberapa rules equivalence. Rule equivalence ini juga bisa sebagai langkah awal untuk mentransform query sehingga lebih efisien.

50 Teknik Optimasi Query Heuristic
Teknik optimisasi query dapat juga dikatakan sebagai tahapan-tahapan proses yang dilakukan untuk membuat sebuah query tree menjadi lebih optimal. Ada bermacam-macam teknik yang digunakan untuk mengoptimasi query, tetapi pada dasarnya ada dua teknik utama yang umumnya digunakan dalam proses optimasi query. Dua teknik tersebut adalah Heuristic Optimization dan Cost Based optimization. Pembahasan secara lebih detail pada pembahasan ini adalah dengan menggunakan teknik heuristic optimization.

51 Teknik Optimasi Query Heuristic
Heuristic Optimization atau yang biasanya disebut dengan rule based optimization adalah optimasi query dengan menggunakan aturan-aturan heuristik dan dijalankan pada logical query plan (rencana query secara logika) yang terdiri dari urutan operasi-operasi relasional yang biasanya digambarkan sebagai query tree. Query Optimizer mendapatkan sebuah inisial plan dari parser dan menggunakan aturan-aturan heuristik untuk mentransformasikan sebuah query ke dalam sebuah bentuk yang sama sehingga dapat diproses dengan lebih efisien.

52 Teknik Optimasi Query Heuristic
Heuristik atau rule-based Teknik ini mengaplikasikan aturan heuristik untuk mempercepat proses query. Optimasi jenis ini mentransformasikan query dengan sejumlah aturan yang akan meningkatkan kinerja eksekusi, yakni: melakukan operasi selection di awal untuk mereduksi jumlah baris melakukan operasi projection di awal untuk mereduksi jumlah atribut mengkonversikan query dengan banyak join menjadi query dengan banyak subquery melakukan operasi selection dan join yang paling kecil keluarannya sebelum operasi lain

53 Teknik Optimasi Query Heuristic
Berikut ini contoh yang membuktikan bahwa subset query lebih baik dari query dengan banyak join atau cross product. terdapat 2 buah tabel percobaan,yaitu: Nama Field Tipe NIM Integer Nama Varchar(30) Alamat Varchar (80) Nama Field Tipe NIM Integer MataKuliah Varchar(30)

54 Teknik Optimasi Query Heuristic
Query dengan model cross product diwakili oleh query berikut ini: SELECT M.NIM, M.Nama, M.Alamat FROM Mahasiswa M, Kuliah K WHERE M.NIM = K.NIM Query dengan model subset query diwakili oleh query berikut ini: SELECT NIM, Nama, Alamat FROM Mahasiswa WHERE NIM in ( SELECT NIM FROM Kuliah) Kedua query tersebut akan menghasilkan informasi yang sama, yaitu menampilkan data NIM, Nama dan Alamat dari tabel Mahasiswa yang NIM-nya terdapat dalam tabel Kuliah.

55 Teknik Optimasi Query Heuristic
Nama Field Tipe Keterangan Jml Integer Jumlah record hasil query Q1 Waktu yang diperlukan untuk query dengan menggunakan cross product Q2 Waktu yang diperlukan untuk query dengan menggunakan subset query Jumlah Data 1 10 50 100 1000 10000 25000 Waktu CP (ms) 4 5 9 47 425 1162 Waktu SQ (ms) 22 45 42 56 121

56 Teknik Optimasi Query Heuristic
Adapun tujuan dari transformasi tersebut adalah : Standarisasi, yaitu mentransformasikan sebuah query ke dalam sebuah bentuk standar tanpa optimisasi. Simplifikasi, yaitu mengeliminasi kelebihan dalam sebuah query. Ameliorasi, yaitu menyusun ekspresi-ekspresi yang sudah dihasilkan dengan baik untuk mengevaluasi bentuk.

57 Notasi untuk Query Tree dan Query Graph
Sebuah query tree adalah sebuah struktur data tree yang sesuai untuk sebuah ekspresi relasi aljabar. Query tree menggambarkan hubungan-hubungan input query sebagai node-node leaf dan tree dan menggambarkan hubungan operasi-operasi aljabar sebagai node-node internal. Sebuah eksekusi dari query tree terdiri dari pelaksanaan sebuah operasi internal node bilamana operand-operand dari query tree tersedia dan kemudian menggantikan internal node tersebut dengan hubungan yang menghasilkan pelaksanaan operasi. Pelaksanaan akan diakhiri apabila root node dijalankan dan menghasilkan hasil relasi untuk query.

58 Notasi untuk Query Tree dan Query Graph

59 Notasi untuk Query Tree dan Query Graph

60 Notasi untuk Query Tree dan Query Graph
Inisial ( Canonical) query tree untuk SQL query Q2

61 Notasi untuk Query Tree dan Query Graph
Query graph untuk Q2

62 Notasi untuk Query Tree dan Query Graph
Pada gambar di atas (a) relasi-relasi tree PROJECT, DEPARTMENT, dan EMPLOYEE digambarkan oleh leaf node P, D, dan E, sementara operasi-operasi relasi aljabar digambarkan oleh internal tree node. Pada saat query tree tersebut dieksekusi, node marked (1) pada gambar (a) harus mulai melakukan eksekusi sebelum node (2) karena beberapa hasil tuple dari operasi (1) harus tersedia sebelum dilakukan operasi eksekusi (2). Dengan cara yang sama, node (2) harus mulai dieksekusi dan menghasilkan hasil sebelum node (3) dapat mulai dieksekusi, dan begitu seterusnya.

63 Notasi untuk Query Tree dan Query Graph
Seperti yang dapat dilihat, query tree menggambarkan sebuah perintah khusus dari operasi-operasi untuk mengeksekusi sebuah query. Sebuah gambaran mumi dari sebuah query adalah notasi query graph. Gambar (c) menunjukkan query graph untuk Q2. Hubungan-hubungan dalam query digambarkan oleh relation node yang ditunjukkan dalam sebuah lingkaran. Nilai konstan khususnya dari kondisi-kondisi pilihan query digambarkan oleh constant nodes yang ditunjukkan oleh lingkaran ganda. Kondisi-kondisi pemilihan dan penggabungan digambarkan oleh graph edges, seperti yang terlihat pada gambar (c). Terakhir, attribute-attribute yang akan didapatkan kembali dari tiap relasi ditunjukkan dalam bentuk kurung siku di atas tiap relasi.

64 Notasi untuk Query Tree dan Query Graph
Gambar query graph tidak menunjukkan sebuah urutan operasi-operasi yang mula-mula akan dibentuk. Hanya ada sebuah graph tunggal yang sesuai untuk tiap query. Meskipun beberapa teknik optimasi berdasarkan pada query graph, tapi pada kenyataannya query tree adalah lebih baik karena dalam penggunaannya, query optimizer perlu untuk menunjukkan perintah-perintah untuk eksekusi query yang tidak mungkin dilakukan dalam query graph.

65 Heuristic Optimization Query Tree
Query parser khusus akan menghasilkan sebuah inisial query tree yang standar untuk mencocokkannya pada sebuah SQL query, tanpa melakukan beberapa optimasi. Sebagai contoh, untuk sebuah select-project-join query seperti Q2, yang inisial tree-nya ditunjukkan pada gambar (b), CARTESIAN PRODUCT dari relasi-relasi ditentukan dalam klausa FROM yang terlebih dahulu digunakan dan kemudian kondisi-kondisi selection dan join dari klausa WHERE yang digunakan, diikuti oleh proyeksi pada attribute-attribute klausa SELECT.

66 Heuristic Optimization Query Tree
Sebagai sebuah canonical query tree yang menggambarkan sebuah ekspresi relasi aljabar adalah sangat tidak efisien apabila menjalankannya secara langsung, karena operasi-operasi CARTESIAN PRODUCT (X). Sebagai contoh, apabila relasi-relasi seperti PROJECT, DEPARTEMENT dan EMPLOYEE mempunyai ukuran record 100 byte, 50 byte, dan 150 byte dan mengandung 100 tuple, 20 tuple, dan 5000 tuple, berturut-turut, maka hasil dari CARTESIAN PRODUCT akan mengandung 10 juta tuple dari masing-masing ukuran record 300 byte..

67 Heuristic Optimization Query Tree
Diberikan contoh dari transformasi sebuah query Q yang bunyinya sbb: "Find the last names of employees born after 1957 who work on a project named 'Aquarius'." Query di atas dapat dispesifikasikan ke dalam SQL seperti berikut ini: Q: SELECT LNAME FROM EMPLOYEE, WORKS_ON, PROJECT WHERE PNAME = 'Aquarius' AND PNUMBER = PNO AND ESSN=SSN AND BDATE > ' ';

68 Heuristic Optimization Query Tree
Inisial query tree untuk Q akan ditunjukkan pada gambar (a). Menjalankan tree ini secara langsung mula-mula membentuk sebuah file yang sangat besar yang berisi CARTESIAN PRODUCT dari keseluruhan file-file EMPLOYEE, WORKS_ON, dan PROJECT. Namun query ini hanya memerlukan satu record dari relasi PROJECT untuk proyek 'Aquarius' dan hanya record EMPLOYEE untuk yang tanggal lahimya setelah ' '. Gambar (b) akan menunjukkan perbaikan query tree yang mula-mula menggunakan operasi-operasi SELECT untuk mengurangi banyaknya tuple yang tampak dalam CARTESIAN PRODUCT.

69 Heuristic Optimization Query Tree
Inisial query tree untuk SQL query

70 Heuristic Optimization Query Tree
Memindahkan operasi-operasi SELECT ke dalam query tree

71 Heuristic Optimization Query Tree
Selanjutnya perbaikan dicapai dengan menukar posisi-posisi dari relasi-relasi EMPLOYEE dan PROJECT dalam tree, seperti yang ditunjukkan pada gambar (c) yang menggunakan informasi bahwa PNUMBER adalah key attribute dari relasi proyek dan oleh sebab itu operasi SELECT pada relasi PROJECT akan mendapatkan kembali hanya sebuah record tunggal. Selanjutnya query tree dapat diperbaiki dengan cara mengembalikan beberapa operasi CARTESIAN PRODUCT yang diikuti dengan sebuah kondisi join dengan sebuah operasi JOIN seperti yang ditunjukkan pada gambar (d).

72 Heuristic Optimization Query Tree
Membatasi penggunaan operasi SELECT terlebih dahulu

73 Heuristic Optimization Query Tree
Menggantikan CARTESIAN PRODUCT dan SELECT dengan operasi –operasi JOIN

74 Heuristic Optimization Query Tree

75 Heuristic Optimization Query Tree
Memindahkan Operasi Project ke bawah Tree

76 Heuristic Optimization Query Tree
Seperti contoh di atas, sebuah query tree dapat dintransformasikan selangkah demi selangkah ke dalam query tree yang lainnya yang lebih efisien untuk dieksekusi. Bagaimanapun juga harus dipastikan terlebih dahulu bahwa langkah-langkah transformasi selalu berperan penting untuk sebuah query tree yang sama.

77 Heuristic Optimization Query Tree
Untuk melakukan transformasi-transformasi query tersebut, query optimizer harus mengetahui aturan-aturan transformasi mana yang mempertahankan persamaan ini. Dan aturan-aturan transformasi tersebut telah diuraikan di atas.

78 Heuristic Optimization Query Tree
Diberikan sebuah SQL : SELECT PNUMBER, DNUM, LNAME FROM PROJECT, DEPARTMENT, EMPLOYEE WHERE DNUM = DNUMBER AND MGRSSN = SSN AND PLOCATION = “Stafford” Maka Proses Optimisasi dengan Menggunakan Aturan Heuristik sbb :

79 Heuristic Optimization Query Tree
Inisial(canonical) Query Tree

80 Heuristic Optimization Query Tree
Menggunakan langkah 1 untuk memisahkan SELECT

81 Heuristic Optimization Query Tree
Merubah operasi SELECT dengan Cross Product

82 Heuristic Optimization Query Tree
Mengkombinasikan Cross Product dan SELECT ke dalam bentuk JOIN

83 Selesai


Download ppt "Basis Data dan SBP Disusun Oleh : Lily Wulandari."

Presentasi serupa


Iklan oleh Google