Cara Membuat Profil Kueri SQL untuk Performa Lebih Baik

Diterbitkan: 2023-03-16

Di Servebolt, kami menghidupkan dan menghirupkinerja .

Kinerja basis data tidak terkecuali.

Menjalankan kueri yang tidak efisien setelah pengunjung situs web mengklik tautan akan menurunkan pengalaman pengguna secara signifikan .Mereka harus menunggu durasi penuh dari kueri yang lambat untuk dijalankan, yang mungkin memakan waktu beberapa detik, sebelum tindakan lain terjadi, seperti perenderan halaman. Waktu tunggu ini tidak hanya mencakup waktu yang diperlukan untuk menjalankan kueri, tetapi juga waktu tambahan yang diperlukan untuk pra-pemrosesan dan pasca-pemrosesan. Akibatnya, kueri yang dirancang dengan buruk dapat secara signifikan memperlambat kinerja keseluruhan situs web – yang mengakibatkan pengalaman pengguna yang membuat frustrasi.

Time to First Byte (TTFB) adalah cara untuk mengukur berapa lama byte pertama data diterima setelah pengguna membuat permintaan ke situs web.Ini juga merupakan metrik utama yang digunakan oleh mesin telusur dalam mengevaluasi situs. Saat kueri lambat dipicu, ini akan berdampak negatif pada TTFB. Semakin lama kueri lambat berjalan, semakin tinggi TTFB, yang mengakibatkan kinerja situs web secara keseluruhan lebih lambat dan pengalaman pengguna yang kurang memuaskan.

Dalam panduan ini, kami akan memandu Anda tentang cara membuat profil kueri SQL – bagian penting dalam mempertahankan kinerja aplikasi web yang bergantung pada respons database. Ini adalah proses yang menetapkan landasan untuk kemudian dapat mulai bekerja mengoptimalkan kueri ini untuk meningkatkan kinerjanya.

Memahami Profil Kueri SQL

Saat Anda mengembangkan aplikasi web dan mulai beroperasi dalam skala yang lebih besar, kueri SQL yang pernah berjalan lancar dapat menyebabkan masalah kinerja. Secara umum, cenderung ada peningkatan jumlah kueri yang dijalankan terhadap jumlah data yang terus bertambah dengan jumlah permintaan per detik yang meningkat. Dan ketika kinerja menurun, begitu pula pengalaman yang dimiliki pengguna Anda saat berinteraksi dengan situs, perangkat lunak, atau layanan Anda.

Pembuatan profil kueri adalah cara menganalisis kueri basis data, menilai kinerjanya, dan mengidentifikasi potensi masalah.

Dengan menganalisis dan mengidentifikasi kueri yang bermasalah ini, Anda dapat melakukan perbaikan khusus yang dapat membuat perbedaan terukur pada kinerja database mereka. Hal ini, pada gilirannya, memungkinkan peningkatan skalabilitas di masa mendatang, serta kepuasan pelanggan secara keseluruhan, karena aplikasi dan situs akan lebih responsif.

MariaDB (dan MySQL) menyediakan beberapa alat dan teknik untuk pembuatan profil kueri, yang akan kami bahas dalam artikel ini. Setelah kueri yang lambat diidentifikasi , langkah selanjutnya adalah mengoptimalkannya. Proses ini termasuk mengidentifikasi akar penyebab masalah, dan membuat perubahan pada struktur kueri untuk meningkatkan efisiensinya.

Cara Membuat Profil Kueri SQL (7 Metode)

Mari kita mulai dengan menguraikan berbagai alat dan teknik yang tersedia untuk mengidentifikasi kueri yang lambat dan tidak efisien sehingga Anda tahu di mana harus memfokuskan upaya peningkatan:

1 – PerintahPENJELASAN DIPERPANJANG

Salah satu alat yang dapat digunakan untuk menganalisis query SQL Anda adalah perintahEXPLAIN .

Dengan menjalankan perintah JELASKAN pada kueri, Anda dapat melihat bagaimana kueri dijalankan, termasuk indeks mana yang digunakan, dan jumlah baris yang diperiksa.

EXPLAIN SELECT * FROM orders

JOIN customers ON orders.customer_id = customers.customer_id

WHERE customers.name = 'John Smith';

Saat Anda menjalankan perintah JELASKANpada kueri, ini mengembalikan rangkaian hasil dengan beberapa kolom, termasuk:

  • id: Pengidentifikasi unik kueri dalam rencana eksekusi
  • select_type: Jenis kueri, seperti SIMPLE atau SUBQUERY
  • table: Tabel yang sedang ditanyakan
  • type: Jenis gabungan yang digunakan, seperti JOIN atau INDEX
  • possible_keys: Indeks yang dapat digunakan oleh MariaDB atau MySQL untuk memproses kueri
  • key: Indeks yang digunakan MariaDB atau MySQL untuk memproses kueri
  • key_len: Panjang kunci yang digunakan
  • baris: Jumlah baris yang diperkirakan MariaDB atau MySQL akan diperiksa untuk kueri

Ekstra: Ini berisi informasi tambahan tentang kueri, seperti apakah pemindaian tabel lengkap dilakukan atau apakah tabel sementara digunakan.

Dengan menganalisis output dari perintahEXPLAIN, Anda biasanya dapat mengidentifikasi hambatan kinerja potensial, seperti pengindeksan yang buruk, jenis gabungan yang kurang optimal, atau jumlah baris yang diperiksa yang tinggi.

Misalnya, jika kolom tipe menampilkan "ALL" dan bukan "index",maka kueri sedang melakukan pemindaian tabel lengkap, yang hampir pasti akan menghasilkan kinerja yang lambat. Jika kolom kuncinya adalah NULL, maka MySQL tidak menggunakan indeks apa pun, yang juga akan lambat. Jika kolom baris memiliki nilai tinggi, itu berarti banyak baris yang diperiksa, yang mengakibatkan penurunan kinerja lebih lanjut.

Kami lebih suka menggunakan variasi JELASKAN DIPERPANJANG untuk membantu memberikan informasi tambahan.

Catatan: Meskipun ini tidak digunakan lagi di MySQL, ini masih tersedia di MariaDB.

Dengan menggunakan opsi EXTENDED, Anda akan dapat melihat informasi yang berguna seperti jumlah baris yang diperiksa, jumlah baris yang dikembalikan, informasi tentang tipe JOIN yang digunakan, urutan tabel yang dipindai, indeks yang digunakan, dan berapa lama kueri diambil untuk dieksekusi.

Inilah cara menggunakan perintah EXPLAIN EXTENDED:

EXPLAIN EXTENDED SELECT * FROM your_table WHERE column_name = 'value';

Dalam contoh ini, perintah EXPLAIN akan menampilkan daftar langkah-langkah yang akan diambil database untuk mengeksekusi kueri, serta daftar sumber daya yang akan digunakannya.

Dengan menggunakan perintah ini, Anda akan lebih mudah menemukan kemacetan dalam kueri, memungkinkan Anda membuat perubahan apa pun yang diperlukan yang akan membantu meringankannya dan mempercepat kinerja kueri.

Misalnya, menggunakan perintah EXPLAIN EXTENDED dapat membantu mengidentifikasi kebutuhan untuk menambahkan indeks, mengoptimalkan kondisi GABUNG, dan membatasi jumlah total baris yang dikembalikan oleh kueri.

Anda juga harus memastikan bahwa Anda telah menonaktifkan cache kueri saat melakukan pengujian dan pengoptimalan ini untuk memastikan Anda mendapatkan hasil yang akurat. Untuk melakukannya, jalankan perintah ini terlebih dahulu saat Anda menghubungkan klien Anda.

SET SESSION query_cache_type=0;

Setelah Anda melakukan perubahan ini pada kueri Anda, uji lagi kinerjanya untuk mengidentifikasi seberapa banyak peningkatan yang telah dicapai (jika ada). Ingatlah bahwa, seperti pembuatan profil dan pengoptimalan kueri apa pun, prosesnya berulang – perkirakan untuk menggunakan perintah EXPLAIN EXTENDED, diikuti dengan uji kinerja, beberapa kali.

2 – PerintahJELASKAN ANALISIS

Perintah ini digunakan untuk menganalisis rencana eksekusi kueri dan mengembalikan metrik kinerja seperti waktu sebenarnya yang dibutuhkan kueri untuk mengeksekusi dan jumlah baris yang benar-benar diperiksa. Dengan menganalisis hasil perintah EXPLAIN ANALYZE, Anda dapat mengidentifikasi potensi hambatan dalam eksekusi kueri, seperti kurangnya indeks atau banyaknya baris yang perlu diperiksa.

3 – Log Kueri Lambat

Ini adalah fitur bawaan di MariaDB (dan MySQL) yang mencatat semua kueri yang membutuhkan waktu lebih lama dari waktu tertentu untuk dieksekusi. Log kueri lambat dapat dikonfigurasi untuk mencatat kueri yang membutuhkan waktu lebih lama dari ambang tertentu, seperti satu detik.

Di Servebolt, log kueri lambat mencatat semua kueri yang membutuhkan waktu lebih dari 1 detik untuk dijalankan. Ini karena sebagian besar kueri harus dijalankan dalam sepersekian detik. Dalam konteks aplikasi web, seperti situs yang menjalankan WordPress, memuat satu halaman memerlukan antara 10 dan 100 kueri basis data, yang semuanya harus dijalankan secara berurutan sebelum halaman dapat dikompilasi ke HTML dan dikembalikan ke pengguna.

Konfigurasi Servebolt Cloud saat ini menyimpan log kueri yang lambat di server log global. Jika diperlukan, Anda cukup menghubungi tim dukungan kami, dan kami akan memfilter file untuk log yang relevan dan memberi Anda hasilnya.

Di lingkungan Anda sendiri, Anda dapat mengaktifkan log kueri lambat dengan menambahkan baris berikut ke file konfigurasi MariaDB atau MySQL (my.cnf atau my.ini):

log_slow_queries = /path/to/slow.log

long_query_time = 1

4 – Visual Jelaskan Rencana

Rencana penjelasan visual menyediakan representasi grafis dari keluaran perintah EXPLAIN, membuatnya lebih mudah untuk memahami eksekusi kueri dan mendeteksi masalah kinerja apa pun.

Catatan: Visual Explain Plan sangat membantu saat Anda sedang dalam proses mengembangkan aplikasi web.

Alih-alih keluaran teks biasa, ini menampilkan eksekusi kueri dalam struktur pohon , dengan setiap simpul mewakili tabel, indeks, atau operasi, dan koneksi di antara mereka menggambarkan urutan operasi.

Alat yang berbeda, seperti MySQL Workbench dan EXPLAIN Analyzer, dapat menghasilkan rencana penjelasan visual, dan menawarkan antarmuka interaktif untuk menavigasi rencana eksekusi dan memeriksa setiap operasi secara mendetail.

Misalnya, di MySQL Workbench, membuat rencana penjelasan visual semudah menjalankan kueri dan mengeklik tombol “Jelaskan Rencana ” pada tab hasil.Ini menyajikan representasi grafis dari rencana eksekusi kueri, bersama dengan informasi terperinci tentang setiap operasi. Ini memungkinkan Anda untuk mengidentifikasi masalah kinerja apa pun dan kemudian mengoptimalkan kueri sesuai kebutuhan.

5 – Penala MySQL

MySQL Tuner adalah skrip yang memeriksa kinerja dan konfigurasi server basis data dan memberikan rekomendasi untuk perbaikan. Ini memberikan ringkasan status server saat ini, termasuk informasi seperti jumlah kueri, jumlah kueri lambat, dan penggunaan kumpulan buffer saat ini.

Itu juga dapat digunakan untuk memeriksa berbagai pengaturan lain, seperti versi database, mesin penyimpanan yang digunakan, dan konfigurasi cache permintaan, dan memberikan rekomendasi untuk mengoptimalkan pengaturan ini berdasarkan beban kerja saat ini.

Salah satu perbedaan utama dengan alat lain adalah alat baris perintah yang dapat dijalankan baik di server itu sendiri atau dari jarak jauh, membuatnya mudah untuk mengotomatiskan proses pemantauan dan mengoptimalkan kinerja basis data.

Catatan: Jika aplikasi web Anda (dan basis data) sudah dihosting di Servebolt Cloud – ini adalah spesialisasi tim kami dan dapat melakukan lebih baik daripada rekomendasi apa pun yang dapat diberikan oleh alat.

6 – Profiler Kueri

Ada profiler kueri pihak ketiga yang dapat digunakan untuk membuat profil kueri SQL, seperti MariaDB Enterprise Query Analyzer , Dataedo , dan Percona Toolkit . Profiler kueri pihak ketiga dapat memberikan fitur dan fungsionalitas tambahan dibandingkan dengan alat bawaan yang tersedia di MariaDB (atau MySQL).

Catatan: Profiler Kueri sangat membantu saat Anda sedang dalam proses mengembangkan aplikasi web.

Misalnya, mereka mungkin menawarkan informasi yang lebih terperinci tentang kinerja kueri, seperti waktu eksekusi dan waktu tunggu kunci, dan dapat memberikan visualisasi data dengan cara yang tidak mungkin dilakukan dengan alat bawaan.

Jika alat bawaan cukup untuk kebutuhan Anda, maka tidak perlu menggunakan profiler kueri pihak ketiga. Namun, jika Anda memerlukan informasi yang lebih mendetail atau fitur lanjutan, mungkin ada baiknya mempertimbangkan profiler pihak ketiga.

7 – Pembuatan Profil Dengan Alat Pemantauan

Ada juga sejumlah alat pemantauan, seperti Prometheus, Grafana, dan Nagios, yang dapat digunakan untuk membuat profil kueri dan memantau kinerja database Anda.

Prometheus adalah sistem pemantauan efisien yang dapat mengumpulkan, menyimpan, dan membuat kueri data metrik, memungkinkan Anda memperoleh wawasan berharga secara real-time.Itu terintegrasi dengan MariaDB (dan MySQL) untuk menyimpan metrik yang dikumpulkan dan dilengkapi dengan Grafana untuk visualisasi yang efektif.

Grafana adalah alat analitik sumber terbuka yang kuat yang dapat digunakan untuk memantau dan memvisualisasikan data yang dikumpulkan dari Prometheus.Menyiapkan dasbor dan peringatan khusus memungkinkan Anda mengawasi kinerja database Anda secara real-time.

Nagios membantu Anda mengawasi kesehatan database Anda setiap saat.Itu dapat diatur untuk memantau sumber daya utama seperti CPU, RAM dan ruang disk, sambil juga melacak layanan dan perangkat jaringan lainnya. Karena sangat dapat dikonfigurasi, ini adalah alat yang hebat untuk pemantauan kueri basis data proaktif.

Dengan bantuan alat pemantauan server ini, Anda dapat melacak masalah kinerja dan mengambil tindakan dengan cepat, memungkinkan Anda memastikan bahwa server database Anda berjalan dengan lancar.

Teknik Pengoptimalan Kueri Umum

Ada beberapa teknik pengoptimalan kueri umum yang dapat digunakan untuk meningkatkan kinerja kueri SQL:

1 – Pengindeksan

Indeks adalah cara untuk mempercepat kueri – terutama yang menggunakan filter(DI MANA).Menggunakan indeks menghasilkan struktur data di mesin basis data Anda (MariaDB atau MySQL) di luar tabel tertentu dan menunjuk ke data yang Anda coba kueri. Kami tidak akan membahas terlalu banyak detail dalam posting ini karena menggunakan indeks untuk meningkatkan kueri basis data memerlukan artikelnya sendiri – sesuatu yang kami rencanakan untuk dibahas di masa mendatang.

Misalnya, pertimbangkan tabel besar yang disebut "pesanan" yang berisi jutaan baris data, termasuk informasi seperti ID pesanan, ID pelanggan, dan tanggal pesanan. Jika kueri dijalankan untuk mengambil semua pesanan yang dilakukan oleh pelanggan tertentu tanpa indeks pada kolom ID pelanggan, MariaDB harus memindai seluruh tabel untuk menemukan data yang relevan. Ini bisa memakan waktu dan sumber daya yang signifikan, terutama untuk tabel besar.

Secara umum, kapan pun Anda yakin bahwa Anda akan menjalankan kueri tertentu berulang kali dan membaca masalah kinerja, membuat indeks (atau lebih dari satu) dapat menjadi pendekatan yang tepat untuk mempercepat kueri tersebut.

Dalam konteks WordPress, ini sangat umum. Banyak plugin dibuat oleh pengembang yang (karena kenyamanan) menggunakan tabel umum yang dibagikan tanpa menggunakan indeks. Akibatnya, ini juga merupakan area di mana seringkali terdapat peningkatan kinerja yang sangat signifikan.

Untuk melihat setiap indeks yang ada pada tabel tertentu,

Anda dapat melihat indeks apa pun yang ada pada tabel tertentu menggunakan SHOW INDEX FROM – seperti contoh di bawah untuk tabel wp_postmeta:

MariaDB [db_name] > SHOW INDEX FROM wp_postmeta;

Dalam satu skenario, kami baru saja membuat dua indeks untuk tabel wp_postmeta:sb_postid_metakey dan sb_postid_metakey_metaval.

Indeks ini ditambahkan berdasarkan melihat kueri lambat teratas dan menemukan bahwa semuanya relatif mirip dengan karakteristik menjadi pernyataan SELECT yang memfilter menggunakan WHERE selain banyak kondisi perbandingan (DAN/ATAU). Setelah melihat ini, saya meninjau indeks saat ini untuk tabel yang digunakan dan menjalankanEXPLAIN EXTENDED pada kueri untuk memvalidasi pendekatan saya lebih lanjut.

Kueri sebagian besar berfungsi dan menggunakan tabel wp_postmeta menggunakanJOIN.Berdasarkan urutan terjadinya, menambahkan indeks ini akan memungkinkan MariaDB (atau MySQL) untuk mendapatkan responsnya dari indeks alih-alih memindai seluruh tabel dengan semua barisnya.

CREATE INDEX sb_postid_metakey ON wp_postmeta (post_id, meta_key);

CREATE INDEX sb_postid_metakey_metaval ON wp_postmeta (post_id, meta_key, meta_value);

Ini adalah kombinasi dari "mencari tahu" dengan menggunakan alat yang Anda miliki (seperti diuraikan di atas), serta pengetahuan tentang tipe data dan konten database. Ini tidak selalu berhasil; bahkan jika itu terjadi, itu tidak selalu menghasilkan peningkatan kinerja 500%. Memiliki indeks yang besar bisa menjadi lebih lambat daripada memindai semua baris, jadi kueri harus diuji sebelum dan sesudah menerapkan indeks untuk memastikan.

Catatan: Saat mencoba menguji kecepatan indeks, Anda ingin menonaktifkan caching kueri untuk sesi tersebut, menggunakan:

SET SESSION query_cache_type=0;

Dalam hal ini, sebelum menggunakan indeks, kueri memerlukan waktu 10,437 detik untuk dieksekusi. Dan setelah membuat dua indeks, kueri yang sama membutuhkan waktu [# detik].

2 – Mengurangi Akses Data

Mengurangi akses data , yaitu meminimalkan jumlah baris dan kolom yang harus diakses untuk mengeksekusi suatu query.Ini dapat dicapai dengan memfilter data yang diambil oleh kueri, menggunakan indeks, dan mempartisi tabel besar. Meskipun bukan sesuatu yang dibutuhkan (atau dapat) dilakukan kebanyakan orang, ini adalah poin penting yang perlu diingat saat mendesain kueri database dari awal.

Misalnya, jika kueri basis data mencari data tentang pengguna untuk tujuan login, kueri harus LIMIT 1, karena jelas tidak boleh ada lebih dari satu data pengguna yang diperlukan.

Catatan: Ini lebih berkaitan dengan desain database daripada pengoptimalan.Meskipun penting untuk mempertahankan kinerja, upaya ini lebih relevan untuk pengembang plugin (dalam konteks WordPress) daripada sebagian besar pengguna akhir.

Ingatlah bahwa sebelum menguji kecepatan setelah melakukan perubahan apa pun pada akses data, Anda harus memastikan bahwa Anda telah menonaktifkan caching kueri dengan menjalankan perintah berikut:

SET SESSION query_cache_type=0;

3 – Menggunakan Partisi Data

Dengan mempartisi data menjadi bagian yang lebih kecil, database menjadi lebih efisien dan lebih sedikit memakan waktu untuk dikelola. Strategi ini dapat membantu mengurangi jumlah waktu yang dihabiskan untuk proses pemeliharaan seperti pencadangan dan pembaruan, serta membatasi jumlah data yang perlu dikelola. Secara keseluruhan ini membantu meningkatkan kinerja dan mengoptimalkan penggunaan sumber daya.

Untuk mempartisi data dalam database, Anda dapat mengikuti langkah-langkah berikut:

  1. Saat memilih tabel yang akan dipartisi, pastikan untuk memilih tabel yang menyimpan data dalam jumlah besar dan akan mendapat manfaat dari pemisahan tersebut. Ini akan membantu mengoptimalkan sistem Anda dan meningkatkan kinerja kueri.
  2. Memilih metode partisi yang tepat untuk database Anda sangatlah penting. Anda dapat memilih dari rentang, daftar, hash, atau partisi kunci – tergantung pada struktur data Anda dan kueri yang Anda rencanakan untuk dijalankan. Pastikan Anda memilih salah satu yang paling sesuai dengan kebutuhan Anda untuk kinerja dan hasil yang optimal.

    1. Partisi rentang adalah pilihan ideal ketika Anda memiliki data yang dapat dibagi ke dalam rentang tertentu.Misalnya, jika Anda memiliki tabel dengan data selama beberapa tahun, Anda dapat membuat partisi jangkauan untuk menatanya dengan lebih baik. Itu bisa didasarkan pada tanggal atau nilai numerik dari kolom yang dimaksud.
    2. Daftar partisi adalah teknik yang efisien untuk menangani data yang dapat dengan mudah dipisahkan ke dalam berbagai kelompok sesuai parameter tertentu.Misalnya, Anda memiliki tabel dengan informasi karyawan yang dikategorikan menurut Departemen; ini memerlukan penggunaan daftar partisi.
    3. Partisi hash adalah strategi yang efektif untuk mengatur data menjadi kelompok berukuran sama berdasarkan nilai hash dari kolom tertentu.Hal ini memungkinkan distribusi data yang merata di beberapa partisi, menjadikannya pilihan tepat untuk mendistribusikan data secara efisien.
    4. Partisi kunci mirip dengan partisi hash, tetapi perbedaan utamanya adalah ia menggunakan nilai kolom tertentu sebagai dasarnya untuk membagi data ke dalam grup yang berbeda.Ini menjadikannya pilihan ideal untuk kumpulan data yang dapat dipecah menjadi grup terpisah berdasarkan pengidentifikasi unik atau kunci alami.
  3. Dengan membuat tabel terpartisi, Anda dapat secara efektif membagi tabel asli menjadi tabel yang lebih kecil. Ini dicapai dengan menambahkan klausa partisi dalam pernyataan CREATE TABLE, di mana Anda menentukan metode dan ketentuan yang diinginkan untuk segmentasi. Melakukan hal ini dapat membantu meningkatkan kinerja kueri – dan juga membuat pengelolaan data menjadi lebih efisien.
  4. Anda dapat dengan cepat menyalin data dari tabel asli ke tabel yang baru dipartisi menggunakan pernyataan INSERT INTO… SELECT. Ini akan dengan mudah mengisi tabel terpartisi Anda dengan semua informasi yang relevan.
  5. Aplikasi sekarang harus dikonfigurasi ulang untuk memanfaatkan tabel yang dipartisi. Ini akan menggantikan tabel asli dan membuat aplikasi Anda lebih efisien.
  6. Sebelum menjalankan pengujian apa pun untuk menilai potensi peningkatan kinerja, penting untuk menonaktifkan caching kueri terlebih dahulu dengan menjalankan perintah: SET SESSION query_cache_type=0;
  7. Untuk memastikan tabel terpartisi Anda berjalan dengan lancar, penting untuk selalu memperhatikan kinerjanya. Jika Anda melihat adanya masalah, menyesuaikan kondisi partisi atau beralih ke metode lain dapat membantu. Memantau partisi Anda secara teratur akan membantu Anda memaksimalkan potensinya.

Catatan Penting Tentang Scripting Upgrade Dan Partitioned Tables

Meskipun mempartisi database dapat membuat perbedaan positif dalam efisiensi, penting untuk diingat potensi masalah yang disebabkan oleh menjalankan skrip pemutakhiran untuk mengubah skema database. Sangat penting bahwa tabel yang dipartisi dipertimbangkan saat membuat skrip pemutakhiran ini. Jika tabel yang dipartisi tidak diperhitungkan dalam skrip pemutakhiran, mungkin ada potensi masalah yang hampir pasti akan menyebabkan situs tidak berfungsi.

Misalnya, jika skrip dibuat untuk menambahkan kolom baru ke tabel yang dipartisi, itu mungkin hanya mengubah satu partisi, menciptakan inkonsistensi dan masalah di dalam data. Demikian pula, jika skrip pemutakhiran dibuat untuk menambahkan indeks ke tabel yang dipartisi, skrip pemutakhiran hanya dapat menghasilkan indeks pada satu partisi, sehingga menghasilkan kinerja yang lebih lambat dan hasil yang tidak konsisten.

Untuk menghindari masalah seperti itu, skrip pemutakhiran harus dirancang untuk mempertimbangkan tabel yang dipartisi. Ini bisa melibatkan menjalankan skrip pada setiap partisi satu per satu atau merevisi skrip untuk bekerja dengan tabel yang dipartisi. Penting juga untuk melakukan pengujian menyeluruh untuk memastikan bahwa proses pemutakhiran tidak menimbulkan masalah tak terduga atau kehilangan data.

4 – Redis

Untuk pelanggan Servebolt, Redis adalah addon (berbayar) yang dapat membantu pengoptimalan kueri.

Redis (terkadang dikenal sebagai Server Kamus Jarak Jauh) adalah solusi sumber terbuka yang menyimpan data dalam memori dan dapat digunakan untuk caching, database, atau bahkan sebagai perantara pesan. Itu dapat diintegrasikan dengan database untuk meningkatkan kinerja, bertindak sebagai perantara yang efisien antara aplikasi dan database.

Ini berfungsi untuk meningkatkan kinerja dan waktu respons aplikasi dengan mengurangi beban pada database. Ini dilakukan dengan menyimpan data yang sering digunakan di Redis alih-alih database untuk setiap permintaan, sehingga menghemat banyak waktu.

Dengan mengonfigurasi plugin dengan benar, Redis dapat digunakan dengan database untuk mengoptimalkan eksekusi kueri. Ketika data yang diperlukan tidak ada di Redis, aplikasi akan mengambilnya dari database dan menyimpannya di Redis untuk digunakan di masa mendatang. Hal ini membuat pengambilan data jauh lebih cepat dan lebih efisien.

Dengan menggunakan pendekatan ini, aplikasi dapat memanfaatkan akses cepat dalam memori Redis dan juga menyimpan dan mengakses data dari database sesuai kebutuhan.

Ingatlah bahwa jika Anda menerapkan Redis untuk pertama kali, Anda harus menonaktifkan caching kueri sebelum menjalankan pengujian kinerja apa pun. Untuk melakukan ini, gunakan perintah:

SET SESSION query_cache_type=0;

Kesimpulan

Ekosistem MariaDB dan MySQL memiliki berbagai alat dan metode untuk mempermudah menemukan kemacetan dalam eksekusi kueri basis data, memungkinkan Anda meningkatkan kinerja aplikasi web Anda.

Perlambatan cenderung terjadi sepanjang masa menjalankan aplikasi apa pun. Mencoba menghindarinya memang bagus, tetapi pada akhirnya Anda perlu tahu ke mana harus mencari ketika Anda mulai mendiagnosis masalah kinerja. Bergantung pada ukuran dan sifat database yang Anda jalankan, ini adalah proses berulang yang memerlukan pemantauan berkelanjutan, pemecahan masalah, dan peningkatan berkelanjutan untuk menjaga kinerja database Anda pada standar yang tinggi.