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

Praktik terbaik pengoptimalan database MySQL

"Praktik terbaik" adalah:

  1. Mengukur kinerja, mengisolasi subsistem yang relevan sebaik mungkin.
  2. Identifikasi akar penyebab kemacetan. Apakah Anda terikat I/O? CPU terikat? Memori terikat? Menunggu di kunci?
  3. Buat perubahan untuk mengurangi akar penyebab yang Anda temukan.
  4. Ukur lagi, untuk menunjukkan bahwa Anda telah memperbaiki kemacetan dan berapa banyak .
  5. Lanjutkan ke langkah 2 dan ulangi seperlunya hingga sistem bekerja cukup cepat.

Berlangganan umpan RSS di http://www.mysqlperformanceblog.com dan baca juga artikel sejarahnya. Itu adalah sumber yang sangat berguna untuk kebijaksanaan terkait kinerja. Misalnya, Anda bertanya tentang InnoDB vs. MyISAM. Kesimpulan mereka:InnoDB memiliki kinerja ~30% lebih tinggi daripada rata-rata MyISAM. Meskipun ada juga beberapa skenario penggunaan di mana MyISAM mengungguli InnoDB.

Penulis blog itu juga merupakan rekan penulis "High Performance MySQL," buku yang disebutkan oleh @Andrew Barnett.

Komentar ulang dari @ʞɔıu:Bagaimana cara mengetahui apakah Anda terikat I/O versus terikat CPU versus terikat memori bergantung pada platform. Sistem operasi mungkin menawarkan alat seperti ps, iostat, vmstat, atau top. Atau Anda mungkin harus mendapatkan alat pihak ketiga jika OS Anda tidak menyediakannya.

Pada dasarnya, sumber daya mana pun yang dipatok pada pemanfaatan/kejenuhan 100% kemungkinan akan menjadi hambatan Anda. Jika beban CPU Anda rendah tetapi beban I/O Anda maksimal untuk perangkat keras Anda, maka Anda terikat I/O.

Itu hanya satu titik data, namun. Obatnya mungkin juga tergantung pada faktor lain. Misalnya, kueri SQL yang kompleks mungkin melakukan pengurutan file, dan ini membuat I/O tetap sibuk. Haruskah Anda menggunakan lebih banyak/lebih cepat perangkat keras, atau haruskah Anda mendesain ulang kueri untuk menghindari pengurutan file?

Ada terlalu banyak faktor untuk diringkas dalam posting StackOverflow, dan fakta bahwa ada banyak buku tentang masalah ini mendukung hal ini. Menjaga agar basis data beroperasi secara efisien dan memanfaatkan sumber daya dengan sebaik-baiknya adalah pekerjaan penuh waktu yang membutuhkan keterampilan khusus dan studi terus-menerus.

Jeff Atwood baru saja menulis artikel blog yang bagus tentang menemukan kemacetan dalam suatu sistem:



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PHP &MySQL:Mengubah TIMESTAMP Tersimpan menjadi Zona Waktu Lokal Pengguna

  2. Apakah mungkin menggunakan Crosstab/Pivot Query di MySQL?

  3. Bagaimana cara membulatkan ke bilangan bulat terdekat di MySQL?

  4. Bagaimana cara mengembalikan 0 alih-alih nol saat menggunakan COUNT di MySQL

  5. LazyInitializationException mencoba mendapatkan instance yang diinisialisasi malas