Teknik Pengoptimuman untuk MySQL: Tingkatkan Prestasi dan Kelajuan

Nyatakan medan yang diperlukan dalam SELECT pertanyaan

Daripada memilih semua medan dalam SELECT pertanyaan, hanya pilih medan yang diperlukan untuk mengurangkan beban dan meningkatkan kelajuan pertanyaan.

Sebagai contoh, jika anda hanya mengambil berat tentang nama dan alamat pelanggan, gantikan pertanyaan:

SELECT * FROM customers;

dengan

SELECT name, address FROM customers;

 

Buat indeks

Index membantu MySQL mencari dan mendapatkan data dengan lebih cepat. Kenal pasti medan yang kerap digunakan dalam WHERE, JOIN, atau ORDER BY klausa dan buat indeks untuknya.

Contohnya, dalam orders jadual " ", jika customer_id medan " " kerap digunakan dalam WHERE atau JOIN pertanyaan, anda boleh membuat indeks seperti berikut:

CREATE INDEX idx_customer_id ON orders(customer_id);

 

Gunakan jenis indeks yang sesuai

MySQL menyediakan pelbagai jenis indeks seperti B-tree, hash dan full-text. Pilih jenis indeks yang sesuai berdasarkan keperluan pertanyaan anda untuk memastikan prestasi optimum.

Contohnya, jika anda perlu mencari teks dalam medan data, anda boleh membuat full-text indeks seperti berikut:

CREATE FULLTEXT INDEX idx_description ON products(description);

 

Optimumkan pertanyaan

Gunakan EXPLAIN untuk melihat pelan pelaksanaan pertanyaan dan menganalisis cara MySQL melaksanakannya. Ini membantu anda mengenal pasti isu prestasi dan mengoptimumkan pertanyaan dengan menggunakan indeks atau menulis semula pertanyaan.

Sebagai contoh, untuk melihat rancangan pertanyaan pertanyaan SELECT, jalankan arahan berikut:

EXPLAIN SELECT * FROM orders WHERE customer_id = 123;

 

Hadkan bilangan hasil yang dikembalikan

Apabila pertanyaan mengembalikan sejumlah besar hasil, hadkan bilangan hasil yang dikembalikan menggunakan LIMIT klausa. Ini membantu mengurangkan beban dan meningkatkan kelajuan pertanyaan.

Contohnya, untuk hanya mengembalikan 10 hasil daripada jadual "produk", anda boleh menggunakan pertanyaan berikut:

SELECT * FROM products LIMIT 10;

 

Gunakan INNER JOIN bukannya JOIN

INNER JOIN berprestasi lebih baik daripada biasa JOIN. Gunakan INNER JOIN apabila anda hanya mengambil berat tentang rekod yang mempunyai padanan dalam kedua-dua jadual.

Contohnya, untuk menyertai jadual " orders " dan " customers " berdasarkan customer_id medan " ", anda boleh menggunakan pertanyaan berikut:

SELECT * FROM orders INNER JOIN customers ON orders.customer_id = customers.customer_id;

 

Gunakan jadual sementara dengan berhati-hati

Jadual sementara boleh digunakan dalam kes tertentu, tetapi ia perlu digunakan dengan berhati-hati kerana ia boleh melambatkan pertanyaan. Pertimbangkan untuk mengoptimumkan pertanyaan untuk mengelak daripada menggunakan jadual sementara jika boleh.

Sebagai contoh, bukannya menggunakan jadual sementara dalam pertanyaan berikut:

CREATE TEMPORARY TABLE temp_table SELECT * FROM products;

anda boleh cuba mengoptimumkan pertanyaan untuk menanyakan data secara langsung daripada jadual asal.

 

Perhalusi konfigurasi MySQL

Pertimbangkan untuk mengkonfigurasi semula MySQL untuk memanfaatkan sepenuhnya sumber sistem dan selaras dengan keperluan aplikasi anda. Ini termasuk mengkonfigurasi memori, saiz penimbal, had sambungan dan parameter lain. Rujuk dokumentasi MySQL dan pelajari cara melaraskan konfigurasi agar sesuai dengan persekitaran khusus anda.

 

Padamkan data yang tidak diperlukan

Padamkan data yang tidak diperlukan atau sandarkan data lama untuk mengurangkan saiz pangkalan data dan meningkatkan kelajuan pertanyaan.

Contohnya, jika anda mempunyai logs jadual " " yang menyimpan rekod log lama, anda boleh memadamkan rekod yang lebih lama daripada setahun menggunakan pertanyaan berikut:

DELETE FROM logs WHERE created_at < '2022-01-01';

 

Gunakan ingatan cache

Konfigurasikan memori MySQL cache untuk menyimpan pertanyaan yang kerap dilaksanakan dan data yang diakses baru-baru ini. Ini membantu mengurangkan masa capaian cakera dan meningkatkan kelajuan pertanyaan.

Contohnya, untuk mengkonfigurasi cache memori dengan saiz 1GB, anda boleh mengubah suai fail konfigurasi "my.cnf" MySQL seperti berikut:

[mysqld]  
...  
query_cache_type = 1  
query_cache_size = 1G  

 

Sila ambil perhatian bahawa contoh di atas adalah ilustrasi dan perlu diselaraskan mengikut struktur dan keperluan pangkalan data sebenar anda. Berhati-hati menguji dan menilai keberkesanan sebelum dan selepas menggunakan teknik pengoptimuman ini untuk memastikan ia sesuai untuk persekitaran khusus anda.