Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

10 tips bermanfaat tentang penyetelan kinerja MySQL

Seperti semua database lainnya, MySQL dapat menjadi rumit dan dapat berhenti pada saat itu juga yang membuat semua bisnis dan tugas Anda dipertaruhkan. Namun, kesalahan umum mendasari sebagian besar masalah yang memengaruhi kinerja.

Untuk memastikan server Anda beroperasi secara efisien dan efektif dengan memberikan kinerja yang stabil dan konsisten, Anda harus menghilangkan kesalahan yang sering disebabkan oleh beberapa kehalusan dalam beban kerja atau jebakan konfigurasi.

Sebagai volume data tumbuh, menjadi semakin kompleks. Oleh karena itu, penting untuk mengoptimalkan database dengan baik untuk memberikan pengalaman pengguna akhir yang efisien. Penyesuaian kinerja MySQL adalah solusi utama karena akan membantu memberikan solusi untuk masalah database ini.

Penyesuaian Kinerja MySQL

Pada artikel ini, Anda akan menemukan beberapa tips bermanfaat tentang cara menggunakan penyetelan kinerja MySQL. Ini akan membantu Anda mendapatkan performa terbaik dari MySQL Anda.

Langkah 1:Jangan gunakan MySQL sebagai antrian

Tanpa Anda sadari, pola antrian dan seperti antrian dapat menyelinap ke dalam aplikasi Anda. Contoh tipikal adalah menandai email sebagai belum terkirim, mengirimnya, lalu menandainya sebagai terkirim. ini adalah masalah umum tetapi jarang terlihat yang cenderung diabaikan oleh sebagian besar pengguna.

Mereka menyebabkan dua kompleksitas kinerja utama:

  1. Mereka membuat serial beban kerja Anda, sehingga mencegah tugas diselesaikan dalam urutan paralel. Selain itu, mereka sering menghasilkan tabel yang berisi pekerjaan dalam proses dan data historis dari pekerjaan yang telah diproses sejak lama. Ini biasanya memperlambat kecepatan dan proses pemrosesan.
  2. Keduanya menambahkan latensi ke aplikasi dan memuat ke MySQL.

Langkah 2:Profil beban kerja Anda

Membuat profil beban kerja Anda sangat penting karena membantu Anda memahami cara kerja server Anda dan waktu yang dihabiskan untuk memproses tugas. Alat terbaik untuk membantu Anda melakukannya adalah MySQL Enterprise Monitors Query analyzer dari Percona toolkit.

Catatan: Hanya tersedia untuk pengguna Linux

Alat tersebut dapat menangkap kueri yang dijalankan oleh server dan mengembalikan tabel tugas yang diurutkan dalam mengurangi urutan waktu respons.

Membuat profil beban kerja Anda memperlihatkan kueri paling mahal untuk penyetelan lebih lanjut. Waktu paling penting karena yang terpenting adalah seberapa cepat waktu selesai saat mengeluarkan kueri.

Alat pembuatan profil juga mengelompokkan kueri serupa, yang memungkinkan Anda melihat kueri lambat dan cepat, tetapi dijalankan berkali-kali.

Langkah 3:Memahami Empat Sumber Daya Mendasar

CPU, memori, disk, dan jaringan adalah empat sumber daya dasar yang diperlukan agar database berfungsi. Oleh karena itu, database cenderung berkinerja buruk jika salah satu sumber daya ini kelebihan beban, lemah, atau tidak menentu.

Anda harus selalu memastikan bahwa keempat sumber daya tersebut kuat dan stabil agar MySQL dapat bekerja dengan sempurna. Organisasi biasanya memilih server dengan CPU dan disk cepat yang dapat menampung lebih banyak slot memori.

Menambahkan memori adalah cara yang murah dan mudah untuk meningkatkan kinerja berdasarkan urutan besarnya, terutama pada beban kerja yang terikat pada disk. Ini mungkin tampak tidak masuk akal, tetapi banyak disk yang digunakan secara berlebihan karena tidak ada cukup memori untuk menampung kumpulan data server yang berfungsi.

Saat memecahkan masalah, periksa kinerja dan pemanfaatan keempat sumber daya dengan cermat untuk membantu menentukan statistik kinerja keempat sumber daya. Memantau kinerjanya penting karena membantu pengguna mengetahui apa yang harus ditingkatkan atau perlu diganti. Anda dapat mencoba metode ini karena ini adalah salah satu metode tercepat untuk memecahkan masalah kinerja di MYSQL.

Langkah 4:Filter hasil berdasarkan yang termurah terlebih dahulu

Cara terbaik untuk pengoptimalan adalah melakukan pekerjaan yang murah dan tidak tepat terlebih dahulu, kemudian pekerjaan yang sulit dan presisi pada pekerjaan yang lebih kecil, menghasilkan kumpulan data.

Contoh:

Misalkan Anda mencari sesuatu dalam radius tertentu dari titik geografis. Alat pertama di kotak alat pemrogram saya adalah rumus Haversine {Lingkaran besar} untuk menghitung jarak di sepanjang permukaan bola.

Masalah dengan teknik ini adalah bahwa rumus membutuhkan banyak operasi trigonometri, yang sangat sensitif terhadap CPU. Akibatnya, penghitungan cenderung berjalan lambat dan membuat penggunaan CPU mesin meroket.

Sebelum menggunakan rumus, pisahkan catatan Anda menjadi subset kecil dari total dan potong set yang dihasilkan menjadi lingkaran yang tepat. Persegi yang berisi lingkaran, baik tepat atau tidak tepat, adalah cara mudah untuk melakukannya. Ini memastikan dunia di luar alun-alun tidak pernah terkena semua fungsi trigonometri yang mahal itu.

Langkah 5:Mengetahui dan memahami dua jebakan kematian skalabilitas.

Skalabilitas mungkin tidak samar seperti yang diyakini banyak orang. Sebagai gantinya, ada definisi matematis yang tepat tentang skalabilitas yang dinyatakan sebagai persamaan yang menyoroti mengapa sistem tidak menskalakan sebaik yang seharusnya.

Hukum Skalabilitas Universal adalah definisi yang berguna dalam mengekspresikan dan mengukur karakteristik skalabilitas sistem. Ini menjelaskan masalah penskalaan dalam hal serialisasi dan crosstalk, yang merupakan dua biaya mendasar.

Proses paralel yang harus dihentikan agar sesuatu yang diserialkan terjadi secara inheren terbatas dalam skalabilitasnya. Selanjutnya, jika proses paralel perlu berkomunikasi satu sama lain untuk mengoordinasikan pekerjaan mereka, mereka membatasi satu sama lain. Oleh karena itu, sebaiknya hindari serialisasi dan crosstalk agar aplikasi Anda dapat diskalakan dengan cepat dan efisien.

Langkah 6:Jangan terlalu fokus pada konfigurasi

Orang-orang menghabiskan terlalu banyak waktu untuk mengubah konfigurasi. Hasilnya biasanya bukan peningkatan yang signifikan dan terkadang bisa sangat merusak. Pengaturan default yang dikirimkan dengan MySQL adalah satu ukuran yang tidak cocok dan sangat ketinggalan zaman, Anda tidak perlu mengonfigurasi apa pun.

Jadi, penting untuk mendapatkan dasar-dasar yang benar dan mengubah pengaturan hanya jika diperlukan. Dalam banyak kasus, alat penyetelan server tidak disarankan karena dapat menyesatkan pengguna dengan informasi yang bertentangan. Beberapa memiliki kode saran yang berbahaya dan tidak akurat seperti rasio cache hit dan formula konsumsi memori.

Langkah 7:Perhatikan Kueri Pagination

Aplikasi yang membuat paginasi biasanya membuat server bertekuk lutut. Pengoptimalan sering dapat ditemukan di antarmuka pengguna lain itu sendiri. Misalnya, alih-alih menampilkan jumlah halaman yang tepat di hasil dan tautan, Anda dapat menampilkan hanya tautan ke halaman yang berisi informasi tersebut. Dengan demikian, Anda dapat mencegah orang membebani halaman asli secara berlebihan.

Di sisi kueri, alih-alih menggunakan offset dengan batas, satu baris lagi dapat dipilih, dan ketika Anda mengklik "halaman berikutnya", Anda dapat menetapkan baris terakhir itu sebagai titik awal untuk rangkaian hasil berikutnya.

Langkah 8:Simpan statistik dengan penuh semangat, waspada dengan enggan

Peringatan dan pemantauan sangat penting tetapi apa yang terjadi pada sistem pemantauan tipikal adalah bahwa ia mulai mengirim positif palsu. Administrator sistem menyiapkan aturan pemfilteran email untuk menghentikan kebisingan, dan segera sistem pemantauan Anda menjadi tidak berguna.

Penting untuk menangkap dan menyimpan semua metrik yang Anda bisa karena Anda akan senang memilikinya ketika Anda mencoba mencari tahu apa yang berubah dalam sistem. Selain itu, ketika masalah aneh muncul, Anda akan dapat menunjuk ke grafik dan dengan mudah melacak perubahan beban kerja server.

Orang biasanya waspada pada hal-hal seperti rasio hit buffer atau jumlah tabel sementara yang dibuat per detik. Masalahnya adalah tidak ada ambang batas yang masuk akal untuk rasio seperti itu. Selain itu, ambang batas yang sesuai berbeda di antara server dan dari waktu ke waktu karena pekerjaan Anda berubah.

Akibatnya, waspadalah dengan hemat dan hanya pada kondisi yang menunjukkan masalah yang pasti dan dapat ditindaklanjuti. Misalnya, rasio hit buffer yang rendah tidak dapat ditindaklanjuti, juga tidak menunjukkan masalah nyata, tetapi server yang tidak merespons upaya koneksi adalah masalah aktual yang perlu dipecahkan.

Langkah 9:Pelajari tiga aturan pengindeksan

Ini adalah topik yang paling disalahpahami dalam database karena ada banyak cara untuk mempelajari cara kerja indeks dan cara server menggunakannya. Indeks, jika dirancang dengan benar, melayani tiga tujuan penting dalam server database;

  1. Alih-alih satu baris, indeks membiarkan server menemukan grup baris yang berdekatan. Banyak orang berpikir tujuan indeks adalah untuk menemukan baris individu, tetapi menemukan baris tunggal mengarah ke operasi disk acak, membuat server menjadi sangat lambat. Menemukan kelompok baris jauh lebih baik dan menarik daripada menemukan baris satu per satu.
  2. Ini juga memungkinkan server menghindari pengurutan dengan membaca baris dalam urutan yang diinginkan. Membaca baris, tidak seperti menyortir, jauh lebih cepat dan lebih murah.
  3. Indeks juga memungkinkan server memenuhi seluruh kueri dari indeks saja, menghindari kebutuhan untuk mengakses tablet sama sekali. Ini dikenal sebagai indeks covey atau kueri hanya indeks.

Langkah 10:Manfaatkan keahlian rekan Anda

Apakah Anda keberatan untuk tidak melakukannya sendiri? Membingungkan masalah dan melakukan apa yang tampak logis dan masuk akal bagi Anda mungkin berhasil tetapi tidak setiap saat. Jadi, sebagai gantinya, bangun jaringan sumber daya terkait MySQL yang melampaui kumpulan alat dan panduan pemecahan masalah.

Orang-orang sangat berpengetahuan mengintai di milis, forum, dan sebagainya. Selain itu, konferensi, pameran dagang, dan acara grup pengguna lokal memberikan peluang berharga untuk mendapatkan wawasan dan membangun hubungan dengan rekan kerja yang dapat membantu Anda.

Untuk mencari beberapa alat untuk melengkapi tips ini, Anda dapat melihat Wizard Konfigurasi Percona untuk plugin pemantauan MySQL dan MySQL Percona.

Wizard konfigurasi dapat membantu Anda dalam menghasilkan baseline. file my.cnf untuk server baru yang lebih unggul dari file sampel yang dikirimkan bersama server.

Penasihat kueri yang lebih unggul dari file sampel yang dikirimkan bersama server. Penasihat akan menganalisis SQL Anda untuk membantu mendeteksi pola yang berpotensi merusak seperti kueri pagination (tip 7).

Plugin pemantauan Percona adalah kumpulan plugin pemantauan dan grafik yang membantu Anda menyimpan statistik dengan penuh semangat dan waspada dengan enggan (Langkah no 8). Semua alat ini tersedia secara gratis.

Manfaat penyetelan performa

Manfaat utamanya adalah, ini memungkinkan Anda menghindari penyediaan yang berlebihan dan mengurangi biaya dengan menyesuaikan ukuran layanan Anda. Ini juga memberi Anda wawasan tentang apakah memindahkan penyimpanan data atau menambahkan kapasitas server akan meningkatkan kinerja atau tidak, dan jika ya, seberapa besar peningkatannya.

Setelah database disetel dengan benar, itu memberikan hasil kinerja yang bermanfaat dengan fungsionalitas yang hebat. Ini tidak hanya menurunkan beban tugas yang tidak diinginkan tetapi juga mengoptimalkan database MySQL untuk pengambilan data yang lebih cepat.

Pengaturan lain dapat membuat perbedaan tergantung pada beban kerja atau perangkat keras Anda. Tujuannya adalah untuk memberi Anda beberapa penyetelan kinerja MySQL untuk mendapatkan konfigurasi MySQL yang waras dengan cepat tanpa menghabiskan terlalu banyak waktu untuk mengubah pengaturan non-dasar atau membaca dokumentasi untuk memahami pengaturan mana yang penting bagi Anda.

Kesimpulan

Kesimpulannya, penyetelan kinerja menawarkan banyak manfaat, dan disarankan saat mengerjakan data dalam jumlah besar untuk meningkatkan efisiensi server Anda. Dengan mengikuti tips yang diberikan dalam artikel ini, Anda akan dapat melakukan tuning kinerja MySQL di server dan database Anda dengan nyaman.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara memasukkan kolom yang dipilih dari file CSV ke database MySQL menggunakan LOAD DATA INFILE

  2. pip install mysqlclient mengembalikan kesalahan fatal C1083:Tidak dapat membuka file:'mysql.h':Tidak ada file atau direktori seperti itu

  3. Menggunakan Database Relasional MySQL di Debian 6 (Squeeze)

  4. Cara Mengatur Ulang Kata Sandi Root MySQL

  5. Tipe data apa yang digunakan untuk bidang kata sandi hash dan berapa panjangnya?