Pertanyaan ini mungkin bisa ditanyakan di StackOverflow juga, tapi saya akan coba di sini dulu ...
Kinerja pernyataan INSERT dan UPDATE di database kami tampaknya merendahkan dan menyebabkan kinerja yang buruk di aplikasi web kami.
Tabel adalah InnoDB dan aplikasi menggunakan transaksi. Adakah penyesuaian mudah yang bisa saya lakukan untuk mempercepat?
Saya pikir kita mungkin melihat beberapa masalah penguncian, bagaimana saya bisa mengetahuinya?
mysql
performance
innodb
mmattax
sumber
sumber
Jawaban:
Periksa apakah perangkat keras dan OS Anda dikonfigurasi dan disetel dengan benar:
Periksa, jika instance MySQL / InnoDB Anda disetel dengan benar:
Load data infile
perintah jauh lebih cepat untuk serangkaian sisipan.select count(*) from table;
jauh lebih lambat untuk innodb daripada untuk myisam.Beberapa tautan bermanfaat:
sumber
Dengan konfigurasi innoDB default, Anda akan dibatasi pada seberapa cepat Anda dapat menulis dan mem-flush transaksi ke disk. Jika Anda dapat mengatasi kehilangan sedikit ACID, bereksperimenlah dengan innodb_flush_log_at_trx_commit. Setel ke 0 untuk menulis dan masukkan log ke disk setiap detik. Setel ke 1 (default) untuk menulis dan membilas setiap komit. Setel ke 2 untuk menulis ke file log setelah setiap komit tetapi siram hanya sekali per detik.
Jika Anda dapat mengatasi kehilangan 1 transaksi, ini bisa menjadi cara yang bagus untuk sangat meningkatkan kinerja menulis.
Juga, perhatikan apa yang dilakukan disk Anda. RAID 10> RAID 5 untuk menulis dengan biaya disk tambahan.
sumber
Masalah penguncian akan dicontohkan oleh status koneksi di
show full processlist;
Baca
my.cnf
dan dokumentasi MySQL. Opsi konfigurasi didokumentasikan dengan sangat baik.Secara umum, Anda ingin diproses dalam memori sebanyak mungkin. Untuk optimasi kueri, itu berarti menghindari tabel sementara. Aplikasi indeks yang tepat.
Tuning akan dikhususkan untuk mesin database pilihan Anda dan arsitektur aplikasi. Ada sumber daya yang substansial yang sudah ada pencarian Internet jauh.
sumber
Mengaktifkan monitor Innodb dapat membantu mengidentifikasi penyebab kunci dan kebuntuan:
TAMPILKAN STATUS MESIN INNODB dan Monitor InnoDB
sumber
InnoDB adalah mesin yang cukup bagus. Namun, sangat bergantung pada 'disetel'. Satu hal adalah bahwa jika sisipan Anda tidak dalam urutan peningkatan kunci primer, innoDB bisa memakan waktu sedikit lebih lama dari MyISAM. Ini dapat dengan mudah diatasi dengan menetapkan innodb_buffer_pool_size yang lebih tinggi. Saran saya adalah mengaturnya di 60-70% dari total RAM Anda. Saya menjalankan 4 server seperti itu dalam produksi sekarang, memasukkan sekitar 3,5 juta baris per menit. Mereka sudah memiliki hampir 3 Terabyte. InnoDB itu harus, karena sisipan yang sangat bersamaan. Ada cara lebih lanjut untuk mempercepat sisipan. Dan saya telah membandingkan beberapa.
sumber