Rumah > pangkalan data > tutorial mysql > Bagaimana untuk menyelesaikan masalah prestasi insert ignore dalam mysql8.x

Bagaimana untuk menyelesaikan masalah prestasi insert ignore dalam mysql8.x

PHPz
Lepaskan: 2023-06-03 11:25:11
ke hadapan
2908 orang telah melayarinya

Sisipkan abaikan masalah prestasi dalam mysql 8.x

Kecekapan penggantian ke dalam mysql sangat lemah. Berbilang proses akan mengunci jadual apabila dijalankan serentak, jadi pendua harus digunakan untuk kemas kini terkenal. Saya tidak menjangka bahawa walaupun saya menggunakan operasi abaikan sisipan, saya mungkin menghadapi masalah prestasi saya ingin merekodkan masalah yang saya hadapi ini.

Untuk memasukkan data permulaan ke dalam jadual, saya membuka 10 proses untuk memasukkan data secara serentak ke dalam pangkalan data menggunakan insert ignore Setiap pernyataan abaikan sisipan mengandungi 7 baris data. Tanpa diduga, selepas masuk dalam talian dan mula menjalankan skrip, banyak jadual kunci muncul dalam pangkalan data. Berdasarkan log status innodb, perkara yang dikunci ialah kunci utama ID penambahan automatik jadual.

Selepas menyahpepijat untuk masa yang lama, saya mendapati bahawa apabila memasukkan abaikan, kunci S akan diambil untuk setiap baris data yang dimasukkan untuk mengesan id unik, dan pada masa yang sama, kunci niat (insert intension) akan ditambahkan pada medan id yang ditambah secara automatik bagi kunci utama ), apabila kunci unik adalah lebih kompleks, kunci niat sisipan kunci utama akan sentiasa diduduki apabila mengesan kunci unik, dan sisipan lain juga mahu menambah. kunci niat sisipan pada id kunci utama, mengakibatkan kebuntuan.

Situasi di atas ditemui dalam mysql 8.x Nampaknya saya tidak menghadapi masalah berkaitan dengan versi mysql yang lebih rendah sebelum ini, jadi saya tidak tahu sama ada terdapat perangkap dalam sisipan abaikan versi yang lebih rendah. mysql, tetapi dalam 8.x Versi terbaik ialah masukkan abaikan Jangan masukkan berbilang baris data, terutamanya apabila kunci unik adalah lebih kompleks (terdiri daripada tiga atau empat medan)

mysql insert ignore() fungsi

INSERT IGNORE statement

Apabila anda menggunakan pernyataan INSERT ini untuk menambah berbilang baris pada jadual, jika ralat berlaku semasa pemprosesan, MySQL menamatkan pernyataan dan mengembalikan ralat. Akibatnya, tiada baris dimasukkan ke dalam jadual.

Walau bagaimanapun, jika anda menggunakan pernyataan abaikan sisipan, baris yang mengandungi data tidak sah yang menyebabkan ralat akan diabaikan dan baris dengan data yang sah akan dimasukkan ke dalam jadual.

rreeee

Atas ialah kandungan terperinci Bagaimana untuk menyelesaikan masalah prestasi insert ignore dalam mysql8.x. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan