Rumah >pangkalan data >tutorial mysql >Mengapakah Prestasi Insert InnoDB Lebih Lambat Daripada MyISAM, dan Bagaimana Ia Boleh Diperbaiki?
MySQL InnoDB Insert Performance Bottlenecks
Jurang prestasi yang ketara antara sisipan MyISAM dan InnoDB, seperti yang diperhatikan dalam keputusan ujian, boleh dikaitkan dengan perbezaan utama dalam pengendalian transaksi mereka.
InnoDB, tidak seperti MyISAM, menyokong transaksi, memastikan ketekalan data dan ketahanan. Walau bagaimanapun, jika urus niaga tidak diurus secara eksplisit, InnoDB lalai kepada transaksi tersirat, mengakibatkan penalti prestasi. Untuk setiap penyata sisipan, InnoDB melakukan transaksi ke cakera, yang menanggung overhed yang ketara untuk sejumlah besar sisipan.
Untuk menangani perkara ini, ujian harus diubah suai untuk memasukkan pengurusan transaksi yang jelas. Dengan memulakan gelung dengan MULAKAN TRANSAKSI dan menamatkannya dengan COMMIT, operasi sisipan boleh dikumpulkan ke dalam satu transaksi, meningkatkan prestasi dengan ketara. Kod yang diubah suai akan kelihatan seperti ini:
test("InnoDB") # START TRANSACTION start = time.time() for rows in data: db.execute(sql,rows) duration = time.time()-start print "inserting the test data took %0.3f seconds"%duration # COMMIT
Pengoptimuman ini membolehkan InnoDB menangguhkan komitmen transaksi sehingga penghujung gelung, menghapuskan kesesakan prestasi yang dikaitkan dengan transaksi tersirat.
Atas ialah kandungan terperinci Mengapakah Prestasi Insert InnoDB Lebih Lambat Daripada MyISAM, dan Bagaimana Ia Boleh Diperbaiki?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!