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

Kinerja MySQL Insert menurun di meja besar

Anda tidak mengatakan apakah ini sistem pengujian atau produksi; Saya berasumsi itu produksi.

Kemungkinan Anda memiliki tabel dengan ukuran yang indeksnya (atau keseluruhannya) tidak lagi muat di memori.

Ini berarti bahwa InnoDB harus membaca halaman selama penyisipan (bergantung pada distribusi nilai indeks baris baru Anda). Membaca halaman (membaca secara acak) sangat lambat dan harus dihindari jika memungkinkan.

Mempartisi sepertinya solusi yang paling jelas, tetapi partisi MySQL mungkin tidak sesuai dengan kasus penggunaan Anda.

Anda tentu harus mempertimbangkan semua opsi yang memungkinkan - bawa tabel ke server uji di lab Anda untuk melihat bagaimana perilakunya.

Kunci utama Anda tampak bagi saya seolah-olah itu mungkin tidak diperlukan (Anda memiliki indeks unik lain), jadi menghilangkan itu adalah salah satu opsi.

Pertimbangkan juga plugin dan kompresi innodb, ini akan membuat innodb_buffer_pool Anda melangkah lebih jauh.

Anda benar-benar perlu menganalisis kasus penggunaan Anda untuk memutuskan apakah Anda benar-benar perlu menyimpan semua data ini, dan apakah mempartisi adalah solusi yang masuk akal.

Membuat perubahan apa pun pada aplikasi ini kemungkinan akan menimbulkan masalah kinerja baru bagi pengguna Anda, jadi Anda harus benar-benar berhati-hati di sini. Jika Anda menemukan cara untuk meningkatkan kinerja penyisipan, ada kemungkinan bahwa itu akan mengurangi kinerja pencarian atau kinerja operasi lain. Anda perlu melakukan uji kinerja menyeluruh pada perangkat keras tingkat produksi sebelum merilis perubahan tersebut.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tidak dapat terhubung ke mySQL di C#

  2. Apakah mysqli_real_escape_string cukup untuk menghindari injeksi SQL atau serangan SQL lainnya?

  3. Contoh hubungan banyak-ke-banyak

  4. Bagaimana melakukan pengurangan antara dua bidang dalam Tabel menggunakan kueri SQL

  5. MySQL pilih kolom yang merupakan nilai di kolom lain