Adakah sisipan akan dikunci? Jika ia dikunci, apa gunanya?
Dalam kemas kini dan pemadaman innodb secara tersirat akan menambah kunci eksklusif,
kemas kini set jadual... di mana id dalam (1,2,3,4); ubah suai dan komit mengikut ID;
Adakah memadam dan mengemas kini secara tersirat menambah kunci tulis?
Pilih akan menambah kunci baca secara tersirat?
Jika ia ditambah dalam dua situasi, kedua-duanya adalah tahap kunci meja, maka konkurensi akan menjadi sangat teruk, bukan?
Pilihan dua enjin
MyISAM: Jika anda melaksanakan sejumlah besar PILIHAN, MyISAM ialah pilihan yang lebih baik Mengapa ini? Saya sebenarnya telah menguji 3.6 juta keping data, yang kesemuanya menggunakan pemilihan indeks jauh lebih cekap.
InnoDB: Jika data anda melakukan sejumlah besar INSERT atau UPDATE, anda harus menggunakan jadual InnoDB Adakah ini kerana kunci jadual myisam?
Terima kasih atas jemputan.
InnoDB
InnoDB hanya boleh mengunci pengepala jadual untuk
INSERT
, tetapi ia tidak akan mengunci keseluruhan jadualINSERT
可能只锁表头吧,总之不会锁全表的;UPDATE
(如果没有FOR UPDATE
或LOCK IN SHARE MODE
)和DELETE
在执行时会加写锁,有时就是锁全表,所以会影响并发性能,但这只是一瞬间的事,所以并发不高的情况下往往看不出来;一次
UPDATE
多行,肯定是多行一起锁,提交后一起释放的,因为MySQL要保证这条语句的原子性,当一条有主键冲突时,其他的也都不能提交了。MySQL
UPDATE
和DELETE
都会加写锁,而且锁全表;SELECT
会加读锁,所以多个SELECT
可以并发,但不能和UPDATE
、DELETE
并发;INSERT
的加锁有点特殊,锁的强度可能介于读锁和写锁之间,与SELECT
、INSERT
可以并发。最后,MyISAM就
MySQL🎜🎜SELECT
而言性能不会比InnoDB好很多,这还取决于行的存储方式,比如MyISAM的FIXED
可能会比DYNAMIC
KEMASKINI
(jika tiadaUNTUK KEMASKINI
atauLOCK IN SHARE MODE
) danDELETE
akan menambah kunci tulis semasa pelaksanaan, kadangkala mengunci seluruh jadual, jadi ia akan menjejaskan prestasi serentak, tetapi ini hanya perkara sekejap. , jadi ia selalunya tidak kelihatan apabila concurrency tidak tinggiBerbilang baris
KEMASKINI
pada satu masa mesti dikunci bersama dan dilepaskan bersama selepas penyerahan, kerana MySQL mesti memastikan atomicity ini penyataan apabila seseorang mempunyai konflik kunci utama, yang lain tidak boleh diserahkan.KEMASKINI
danDELETE
🎜INSERT
's locking is a bit special, dan kekuatan kunci Ia mungkin antara kunci baca dan kunci tulis, dan boleh serentak denganSELECT
danINSERT
. 🎜 🎜Akhir sekali, prestasi MyISAM dari segiSELECT
tidak akan jauh lebih baik daripada InnoDB Ia juga bergantung pada cara baris disimpan Sebagai contoh,FIXED
MyISAM mungkin lebih baik daripadaDINAMIK
Lebih pantas. 🎜Selain itu, contoh anda pasti akan lebih bermanfaat kepada InnoDB: jika ia ditukar kepada indeks bukan kunci utama, maka InnoDB mungkin tidak begitu pantas jika hanya lajur id yang DIPILIH, maka MyISAM mungkin tidak begitu perlahan. Boleh cari sebab 🎜indeks berkelompok🎜. 🎜