PERBANDINGAN OPTIMASI QUERY
DENGAN VIEW DAN INDEXED VIEW
Kristina
1)Wasino
2)Tony
3) 1) 2)Program Studi
Sistem Informasi Universitas Tarumanagara
Jl. Letjen S. Parman No. 1, Jakarta 11440 Indonesia
email : 1)[email protected] , 2) [email protected], 3) [email protected]
ABSTRACT
Processing of complex queries involving join operation on large database will require long response time, particularly if the query returns large amounts of data. Therefore, it is necessary to do query optimization. View can be an effective tool to simplify a complex query. However, using view which returns large result sets can lead to bad performance. SQL Server has the ability to make a special kind of view called indexed view. Indexed view or also known as materialized view is a view that has a unique clustered index. When unique clustered index created on the view, the view results will be stored in the database. Query performance can be improved significantly by creating an indexed view which involves a complex process with a large amounts of data, such as aggregation and join.
The research aims to prove performance benefits resulting from query optimization using indexed view. The experiments were conducted by testing and measuring response time for three types of query then compare the results. Queries that will be compared are query with view and query with indexed view. Experimental results proved that indexed view perform very well by improving response time when processing the query as compared to views.
Key words
Query optimization, indexed view, materialized view
1. Pendahuluan
Dalam basis data relasional sering dilakukan pengaksesan data terhadap beberapa tabel sekaligus. Proses pengaksesan dan pengolahan data yang berskala besar serta melibatkan banyak operasi join akan membutuhkan waktu yang cukup lama sehingga menyebabkan kinerja menjadi tidak efektif dan efisien. Optimasi query memberikan pemecahan untuk menangani masalah tersebut dengan cara menggabungkan sejumlah besar teknik – teknik dan strategi, yang meliputi transformasi logika dari query –
query untuk mengoptimisasi akses dan penyimpanan data
terutama pada basis data yang berskala besar.
View dapat menjadi alat yang efektif untuk
mempercepat dan menyederhanakan query kompleks. Bahkan, menggunakan view untuk beberapa tujuan penggunaan dapat membantu mengoptimalkan query. Namun, menggunakan view yang mengembalikan hasil dalam jumlah besar dan melibatkan operasi kompleks dapat memberikan kinerja yang buruk. Oleh karena itu, penggunaan view untuk proses yang lebih mengutamakan pada kinerja tidaklah efisien, namun berbeda apabila menggunakan materialized view (MV) [11].
Penggunaan MV untuk mempercepat pemrosesan
query merupakan ide yang telah ada sejak lama [8].
Konsep MV pertama kali diperkenalkan pada Oracle Database 8i. Microsoft telah mendukung fitur ini pada SQL Server 2000. Pada SQL Server, MV disebut dengan
indexed view karena MV dapat di-index dengan berbagai
cara [4]. View dimaterialisasi dengan menciptakan
unique clustered index pada view.
MV sangatlah bermanfaat dalam meningkatkan kinerja query [7]. MV dapat memberikan peningkatan waktu pemrosesan query yang signifikan, terutama untuk agregasi terhadap tabel dalam jumlah besar. Oleh karena itu, pada penelitian ini akan dibahas pengoptimasian
query dengan menggunakan indexed view sebagai upaya
untuk meningkatkan kinerja dan waktu respon query terhadap basis data yang berskala besar. Dalam penelitian ini dilakukan sejumlah pengujian dengan membandingkan waktu respon query yang mereferensikan langsung pada view dan indexed view, untuk mengetahui seberapa besar manfaat kinerja yang dihasilkan query dengan menggunakan indexed view.
2. Kajian Pustaka
2.1 Optimasi Query
Suatu aktivitas dalam memilih strategi eksekusi yang efisien untuk memproses query disebut sebagai Optimasi query [1]. Optimasi query merupakan aspek penting dari
query processing. Optimasi query bertujuan untuk
memilih query yang meminimalkan penggunaan sumber daya.
2.2 Index
Index adalah struktur data fisik yang terpisah yang
memungkinkan query untuk mengakses satu atau lebih baris data dengan cepat [9]. Index dapat memberikan manfaat dalam meningkatkan kinerja query secara signifikan. Clustered index menentukan urutan fisik dari data yang berada dalam tabel [2]. Clustered index menyimpan baris-baris data dalam tabel berdasarkan pada nilai key. Sedangkan, nonclustered index tidak menyimpan data tabel. Nonclustered index menyimpan
pointer terhadap data tabel sebagai bagian dari key index.
2.3 Index
View merupakan tabel virtual yang tidak harus ada
dalam basis data, tetapi dapat dihasilkan berdasarkan permintaan dari pengguna tertentu pada saat yang diinginkan [1]. View adalah hasil dinamik dari satu atau
lebih operasi relasional yang dilakukan pada tabel dasarnya untuk menghasilkan tabel yang lain. View bersifat dinamis, artinya jika tabel dasarnya mengalami perubahan, maka view akan langsung menunjukkan perubahan tersebut. Tujuan dari penggunaan view antara lain :
1. Menyediakan mekanisme keamanan yang fleksibel dan baik dengan menyembunyikan bagian basis data dari pengguna tertentu.
2. Memungkinkan pengguna untuk mengakses data dengan cara yang disesuaikan dengan kebutuhan, sehingga data yang sama dapat dilihat oleh pengguna yang berbeda dengan cara yang berbeda pada saat yang sama.
3. Menyederhanakan operasi yang rumit pada tabel dasar.
View memberikan beberapa manfaat, seperti meningkatkan keamanan dengan membatasi akses terhadap data dan mengurangi kompleksitas query. Namun, di sisi lain view juga memiliki kelemahan, salah satunya ialah dapat menurunkan kinerja apabila pendefinisian dilakukan dengan query yang kompleks dan melibatkan banyak tabel. Tetapi, view memberikan manfaat dengan mengurangi kompleksitas dan meningkatkan kinerja ketika diciptakan sebagai Materialized View.
Materialized view (MV) adalah view yang isinya
dikomputasikan dan disimpan [10]. MV seperti cache, yaitu salinan data yang dapat diakses dengan cepat [5]. Microsoft telah mendukung fitur MV pada SQL Server 2000, dan disebut sebagai indexed view. View ini dimaterialiasi dengan menciptakan unique clustered
index pada view yang ada. Setelah clustered index
dibuat, nonclustered index juga dapat dibuat sebagai
index tambahan.
Menggunakan index untuk meningkatkan kinerja
query bukanlah sebuah konsep baru, namun indexed view
memberikan manfaat kinerja tambahan yang tidak dapat diperoleh dengan menggunakan index standar. Indexed
view dapat meningkatkan kinerja query dalam cara – cara
berikut [6]:
1. Agregasi dapat dipre-komputasi dan disimpan dalam
index untuk meminimalkan komputasi tinggi selama
eksekusi query.
2. Tabel dapat dipre-join dan data yang dihasilkan disimpan.
3. Kombinasi dari join atau agregasi dapat disimpan Agregasi dan join yang sering dilakukan merupakan kandidat yang tepat untuk indexed view. Sebuah query dapat menjadi kandidat dari indexed view jika memerlukan waktu yang signifikan dan jumlah data besar untuk mendapatkan hasil query dengan cepat. Indexed
view akan bekerja sangat baik ketika data relatif statik
atau jarang diperbaharui. Sedangkan lingkungan transaksional tidak cocok untuk indexed view. Beberapa aplikasi yang tepat untuk pengimplementasian indexed
view yaitu : decision support workloads, data marts, data warehouses, basis data Online analytical processing (OLAP), data mining workloads
[
6].3. Metode Penelitian
Pada penelitian ini, dilakukan pengujian dan pengukuran waktu respon terhadap tiga jenis query untuk kemudian dibandingkan waktu responnya. Jenis query yang akan dibandingkan adalah query dengan view dan
query dengan indexed view.
3.1 Data Penelitian
Pengujian terhadap sejumlah query dilakukan pada basis data AdventureWorksLT, menggunakan DBMS SQL Server 2008 Enterprise Edition. Serta menggunakan software Redgate SQL Data Generator, yang digunakan untuk melaksanakan proses generate data atau penambahan data, sebesar 1 juta baris data pada setiap tabel dalam basis data AdventureWorksLT. Proses generate ini berhasil menambahkan 1 juta baris data pada 5 buah tabel, ratusan baris data terhadap 4 buah tabel, dan 1 buah tabel yang gagal mengalami penambahan data. Basis data AdventureWorks yang semula berukuran 7,188MB setelah dilakukan proses generate data, mengalami penambahan ukuran menjadi 2,25GB.
3.2 Metode dan Teknik Indexed View
Sebelum menciptakan indexed view, terdapat beberapa hal yang perlu diperhatikan.
Berikut adalah pengaturan SET option yang harus dilakukan :
Tabel 1 Pengaturan SET Option
SESSION SET Option
ANSI_NULLS ON ANSI_PADDING ON ANSI_WARNING ON ARITHABORT ON CONCAT_NULL_YEILDS_NULL ON NUMERIC_ROUNDABORT OFF QUOTED_IDENTIFIER ON
View harus memenuhi persyaratan berikut sebelum
dapat dibuat clustered index :
1. Semua fungsi referensi (function yang didefinisikan oleh sistem dan user) yang digunakan oleh view harus
deterministic.
2. View harus mengacu pada tabel dasar.
3. View dan tabel dasar harus berasal dari basis data
yang sama.
4. View harus dibuat dengan option
SCHEMABINDING.
5. User-defined function (UDF) yang direferensikan
dalam view harus dibuat dengan option
SCHEMABINDING.
6. Pernyataan SELECT dalam view tidak dapat berisi klausa dan option berikut: DISTINCT, UNION, COMPUTE, TOP, ORDER BY, MIN, MAX, COUNT, SUM, subquery, derived table, atau OUTER.
Jika terdapat pernyataan GROUP BY, pendefinisian view harus :
1. Mengandung COUNT_BIG(*).
2. Tidak mengandung HAVING, CUBE, ROLLUP, atau GROUPING().
Indexed view dibuat dengan melakukan 2 langkah
proses berikut :
1. Membuat view menggunakan pernyataan CREATE
VIEW dengan klausa WITH SCHEMABINDING.
2. Membuat unique clustered index yang sesuai.
Unique clustered index dibuat pada kolom dari view
untuk menciptakan indexed view. Setelah unique
clustered index dibuat, sistem basis data mengalokasikan
penyimpanan untuk view, kemudian dapat dibuat tambahan nonclustered index. Nonclustered index pada
view dapat memberikan tambahan kinerja query.
Contoh query pembuatan indexed view :
CREATE VIEW vProduct WITH SCHEMABINDING AS
SELECT p.ProductID, p.Name AS ProductName,
SUM(p.ListPrice) AS Price,
SUM(p.StandardCost) AS Cost, COUNT_BIG(*) AS TotalRows
FROM SalesLT.Product p JOIN
SalesLT.ProductCategory pc ON
p.ProductCategoryID = pc.ProductCategoryID
JOIN SalesLT.ProductModel pm ON
p.ProductModelID = pm.ProductModelID GROUP BY ProductID, p.Name
CREATE UNIQUE CLUSTERED INDEX UCI_vP ON
vProduct (ProductID);
CREATE NONCLUSTERED INDEX NCI_vP ON vProduct (ProductID);
Pernyataan pertama merupakan perintah untuk membuat view bernama vProduct. Fungsi WITH SCHEMABINDING diperlukan untuk menjadikan view tersebut sebagai indexed view. Fungsi ini akan mengunci tabel dasar untuk mencegah terjadinya perubahan skema yang akan mempengaruhi view. Kolom – kolom output yang didefinisikan dengan ekspresi aritmatika atau ekspresi lainnya harus menggunakan klausa AS agar dapat direferensikan. Indexed view akan mematerialisasi fungsi agregasi ke dalam disk. Hal ini akan mengeliminasi kebutuhan untuk perhitungan fungsi agregasi selama eksekusi query.
Pernyataan kedua merupakan sintaks untuk membuat
clustered index. Setelah view dibuat, unique clustered index akan ditambahkan ke dalam view tersebut. Dengan
ditambahkannya unique clustered index pada view, sistem basis data mengalokasikan penyimpanan untuk
view tersebut. Pernyataan ketiga merupakan sintaks
untuk membuat nonclustered index, yaitu index tambahan bernama NCI_vP pada kolom ProductID.
3.3 Prosedur Pengujian
Jumlah query yang akan diujikan pada penelitian ini ialah 15 query yang masing-masing mereferensikan pada
view dan indexed view. Lima belas query ini dibagi
menjadi 3 jenis query, yaitu query join (QJ), query agregasi (QA), dan query join & agregasi (QAJ). Kemudian, 5 query dari setiap jenis query akan mengembalikan jumlah baris data yang berbeda, yang dibagi menjadi ratusan, ribuan, puluhan ribu, ratusan ribu, dan jutaan baris data. Pengujian ini dilakukan pada 2 komputer dengan spesifikasi yang berbeda. Berikut ini adalah spesifikasi dari kedua komputer.
1. Komputer 1
Processor Intel® Core™ i3 CPU M380 @2.53GHz Memory 2048MB RAM DDR3
Hardisk 500GB
VGA Intel® HD Graphics OS Windows 7 Ultimate 32-bit 2. Komputer 2
Processor Pentium® Dual-Core CPU E5700 @3.00GHz
Memory 2048MB RAM DDR3 Hardisk 250GB
VGA Intel® G41 Express Chipset OS Windows 7 Ultimate 32-bit
Setiap query akan diuji sebanyak 5 kali dan dan pada tiap pengujiannya, waktu respon query dicatat hingga eksekusi ke-5. Pembersihan cache dan buffer dilakukan di setiap awal pengujian. Dari hasil setiap pengujian, hanya waktu respon pertama dari setiap pengujian yang diambil dan dirata-ratakan. Sedangkan waktu eksekusi
yang kedua dan seterusnya tidak digunakan. Hal ini dikarenakan waktu eksekusi pertama tidak terpengaruh pada query plan dan cache yang mungkin tersimpan, karena setiap sebelum dilakukan pengeksekusian dilakukan pembersihan cache dan buffer.
4.
Hasil Pengujian
Berdasarkan hasil pengujian yang telah dilakukan terhadap 15 query yang masing – masing mereferensikan pada view dan indexed view, diperoleh perbedaan waktu respon terhadap setiap query. Berikut ini adalah tabel dan grafik yang menunjukkan perbedaan waktu respon tersebut.
Tabel 2 Waktu Respon Query pada Komputer 1
Query Waktu Respon Rata – rata (ms)
View Indexed View
Q1 117.6 56.2 Q2 19775.0 152.6 Q3 32186.2 53.0 Q4 9298.0 1949.6 Q5 27114.6 11642.8 Q6 11.6 7.4 Q7 8255.8 109.6 Q8 7906.2 42.6 Q9 8585.8 1164.0 Q10 11840.8 7008.4 Q11 18286.0 17.0 Q12 17979.8 19.8 Q13 27774.4 375.8 Q14 14561.6 1429.0 Q15 12432.0 7119.8
Tabel 3 Waktu Respon Query pada Komputer 2
Query Waktu Respon Rata – rata (ms)
View Indexed View
Q1 118.4 74.5 Q2 17343.2 126.2 Q3 16964.6 224.6 Q4 5740.2 1580.2 Q5 18919 11139.8 Q6 14.2 5.4 Q7 4948.2 118.8 Q8 5006.4 248.8 Q9 4825 1159.4 Q10 10206.8 8948.4 Q11 14944.4 97 Q12 14822.8 117.2 Q13 16510.2 337 Q14 12593.8 1295.8 Q15 10024 9006.8
Tabel 4 Waktu Respon Rata-Rata Query antara Komputer 1 dan Komputer 2
Query Waktu Respon Rata – rata (ms)
View Indexed View
Q1 118.0 65.4 Q2 18559.1 139.4 Q3 24575.4 138.8 Q4 7519.1 1764.9 Q5 23016.8 11391.3 Q6 12.9 6.4 Q7 6602.0 114.2 Q8 6456.3 145.7 Q9 6705.4 1161.7 Q10 11023.8 7978.4 Q11 16615.2 57.0 Q12 16401.3 68.5 Q13 22142.3 356.4 Q14 13577.7 1362.4 Q15 11228.0 8063.3 0 5000 10000 15000 20000 Q 1 Q 2 Q 3 Q 4 Q 5 Q 6 Q 7 Q 8 Q 9 Q 1 0 Q 1 1 Q 1 2 Q 1 3 Q 1 4 Q 1 5 W a k tu ( m s) Query
Waktu Respon Rata-Rata Pengujian Query
View Indexed View
Gambar 1 Grafik Waktu Respon Rata-Rata Query
Berdasarkan hasil waktu respon rata-rata pengujian, dapat diketahui besarnya kinerja peningkatan waktu respon yang dihasilkan oleh indexed view. Pengukuran kinerja dilakukan menggunakan rasio, yaitu query dengan indexed view n kali lebih cepat dari query dengan
view. Berikut adalah rumus rasio kinerja tersebut [3] :
...(1)
Keterangan :
n : Peningkatan Waktu Eksekusi
WEV : Waktu Eksekusi Query dengan View WEIV : Waktu Eksekusi Query dengan Indexed View Berikut ini adalah tabel kinerja peningkatan waktu eksekusi oleh indexed view terhadap view.
Tabel 5 Kinerja Peningkatan Waktu Eksekusi oleh Indexed View
n
=
WEVQuery Jumlah baris data Jenis Peningkatan Waktu (n) Q1 Ratusan Query Join 1.8 x Q2 Ribuan 133.1 x Q3 Puluhan Ribu 177.1 x Q4 Ratusan Ribu 4.3 x Q5 Jutaan 2 x Q6 Ratusan Query Agregasi 2 x Q7 Ribuan 57.8 x Q8 Puluhan Ribu 44.3 x Q9 Ratusan Ribu 5.8 x Q10 Jutaan 1.4 x Q11 Ratusan Query Agregasi & Join 291.5 x Q12 Ribuan 239.4 x Q13 Puluhan Ribu 62.1 x Q14 Ratusan Ribu 10 x Q15 Jutaan 1.4 x
Dari hasil pengujian, diperoleh bahwa query dengan
indexed view memiliki waktu eksekusi yang lebih cepat
dibandingkan dengan view pada semua jenis query. Tabel 4 menunjukkan bahwa penggunaan indexed view dapat meningkatkan kinerja query dalam mengakses data hingga 200 kali lebih cepat dibandingkan dengan mengakses view. Peningkatan waktu terbesar terjadi pada
query agregasi dan join.
5.
Kesimpulan
Berdasarkan hasil pengujian, dapat disimpulkan bahwa : 1. Indexed view terbukti meningkatkan kinerja query
dalam mengakses data secara signifikan.
2. Indexed view bekerja meningkatkan kinerja secara
optimal pada jenis query agregasi dan join (QAJ). 3. Indexed view terbukti lebih cepat dibandingkan
dengan view dalam pemrosesan query dengan persentase peningkatan waktu yang mampu mencapai hingga 200 kali lebih cepat.
4. Indexed view tetap berkinerja lebih cepat pada
perangkat dengan spesifikasi yang berbeda.
REFERENSI
[1] Connolly, T.M., Carolyn, E.B., 2010, “Database Systems : A Practical Approach to Design, Implementation and Management”, Addison-Wesley, Longman Inc, USA. [2] Dewson, R., 2008, “Beginning SQL Server 2008 for
Developers : From Novice to Professional “, Apress, USA.
[3] Godse, A.P., Godse, D.A., 2006, “Computer Organization Architecture”, Technical Publications, India. [4] Goldstein, J., Larson, P., Mei 2001, “Optimizing Queries
Using Materialized Views : A Practical, Scalable Solution”, Proceeding ACM SIGMOD, 331-342. [5] Gupta, A., Mumick, I.S., 1995, “Maintenance of
Materialized Views: Problems, Techniques and Applications”, IEEE Quarterly Bulletin on Data Engineering.
[6] Hanson, E., Susan, P., 2008, “Improving Performance with SQL Server 2008 Indexed
Views”, diakses pada 27 Agustus 2012,
http://technet.microsoft.com/en-us/library/dd171921(v=SQL.100).aspx.
[7] Karde, P., Thakare, V.M., November 2010, “Selection of Materialized View Using Query Optimization in Database Management : An Efficient Methodology”, Internasional Journal of Database Management Systems,Vol.2, No.4, 116-130.
[8] Larson, P.A., Yang, H.Z., 1985 “Computing Queries from Derived Relations”, Proceesing VLDB, Vol.11, 259-269. [9] Petkovic, Dusan., 2008, “Microsoft SQL Server 2008 : A
Beginner’s Guide”, McGraw-Hill, USA.
[10]Silberschatz, A., Henry, F. K., Sudarshan, S., 2011,” Database System Concepts”, McGraw-Hill, NY.
[11]Zeis, C., Ruel, C., & Wessler, M., 2009, “Oracle 11g For Dummies”, Wiley Publishing Inc, Indianapolis, Ind.
Kristina, mahasiswi Program Studi Sistem Informasi Fakultas