Masalahnya:
Apabila memasukkan nombor rawak yang besar sebagai kunci ke dalam jadual, MySQL InnoDB mempamerkan kelajuan sisipan yang jauh lebih perlahan berbanding dengan MyISAM. Contohnya, memasukkan 1 juta baris ke dalam jadual 10 juta baris mengambil masa 6 saat dengan MyISAM tetapi 3433 saat dengan InnoDB.
Punca:
Sebab utama untuk perbezaan ini terletak pada mekanisme sokongan transaksi InnoDB. Tidak seperti MyISAM, yang menyimpan data terus pada cakera tanpa sebarang penimbalan perantaraan, InnoDB melakukan siram log ke cakera untuk setiap penyata sisipan. Tingkah laku komitmen pada setiap penyataan ini memberi kesan ketara kepada prestasi.
Penyelesaian:
Untuk mengoptimumkan kelajuan sisipan InnoDB, adalah disyorkan untuk menggunakan transaksi eksplisit. Dengan merangkum penyata sisipan dalam transaksi, anda boleh menangguhkan operasi komit sehingga semua penyata dilaksanakan. Pendekatan ini secara mendadak mengurangkan bilangan siram cakera yang diperlukan, sekali gus meningkatkan kelajuan pemasukan.
Untuk menggunakan penyelesaian ini, laksanakan arahan berikut sebelum dan selepas gelung sisipan anda:
Sebelum sisipan gelung:
START TRANSACTION;
Selepas sisipan gelung:
COMMIT;
Dengan melaksanakan teknik ini, anda boleh mempercepatkan prestasi sisipan InnoDB dengan ketara dan memperoleh kelajuan yang setanding dengan MyISAM, sambil masih mendapat manfaat daripada sokongan transaksi dan ciri integriti data InnoDB.
Atas ialah kandungan terperinci Mengapa Sisipan MySQL InnoDB Jauh Lebih Lambat Daripada Sisipan MyISAM?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!