Rumah > Artikel > pangkalan data > Ketahui lebih lanjut tentang kunci dalam Mysql dan bercakap tentang senario penggunaan!
Artikel ini akan membawa anda memahami kunci dalam Mysql, memahami kunci kongsi, kunci eksklusif, kunci pesimis, kunci optimis dan bercakap tentang senario penggunaan. Saya harap ia akan membantu semua orang.
show variables like '%storage_engine%';
MyISAM menggunakan kunci meja untuk mengendalikan data Anda mesti mengunci apabila anda mengemas kini rekod Keseluruhan jadual menghasilkan prestasi yang lebih rendah dan serentak. Sudah tentu, tidak akan ada masalah kebuntuan pada masa yang sama.
Perbezaan terbesar antara InnoDB dan MyISAM ialah dua perkara: pertama, InnoDB menyokong transaksi kedua, InnoDB menggunakan kunci peringkat baris.
Dalam Mysql, kunci peringkat baris tidak secara langsung mengunci rekod, tetapi mengunci indeks. Indeks dibahagikan kepada indeks kunci utama dan indeks bukan kunci utama Jika pernyataan SQL beroperasi pada indeks kunci utama, MySQL akan mengunci indeks kunci utama jika pernyataan beroperasi pada indeks bukan kunci utama, MySQL akan mengunci terlebih dahulu bukan kunci utama indeks dan kemudian kunci indeks kunci utama yang berkaitan.
Penguncian baris InnoDB dicapai dengan mengunci entri indeks Jika tiada indeks, InnoDB akan mengunci rekod melalui indeks berkelompok tersembunyi. Dalam erti kata lain: Jika anda tidak mendapatkan semula data melalui keadaan indeks, InnoDB akan mengunci semua data dalam jadual, dan kesan sebenar adalah sama seperti mengunci jadual. Kerana tiada indeks, anda perlu mengimbas keseluruhan jadual untuk mencari rekod tertentu Untuk mengimbas keseluruhan jadual, anda perlu mengunci jadual.
Kunci eksklusif akan ditambah secara lalai untuk penambahan pangkalan data, pemadaman dan operasi pengubahsuaian, dan pertanyaan Tiada kunci akan ditambah.
Kunci kongsi: Tambahkan kunci kongsi pada sumber Anda boleh membaca sumber itu dan orang lain juga boleh membaca sumber itu (anda juga boleh terus menambah sumber dikongsi locks , iaitu, berbilang kunci kongsi boleh wujud bersama), tetapi tidak boleh diubah suai. Jika anda ingin mengubah suainya, anda mesti menunggu sehingga semua kunci kongsi dilepaskan.
Kunci eksklusif: Tambahkan kunci eksklusif pada sumber Anda boleh menambah, memadam, mengubah suai dan menyemak, tetapi orang lain tidak boleh melakukan sebarang operasi.
//共享锁 select * from 表名 lock in share mode //排他锁 select * from 表名 for update
T1: select * from 表名 lock in share mode //假设还未返回结果 T2: update 表名 set name='autofelix'
T1: select * from table lock in share mode T2: select * from table lock in share mode
T1: 开启事务,执行查询更新两个操作 select * from table lock in share mode update table set column1='hello' T2: 开启事务,执行查询更新两个操作 select * from table lock in share mode update table set column1='world'
T1: begin update table set content='hello' where id=10 T2: begin update table set content='world' where id=20
T1: begin select * from table for update update table set content='hello' T2: begin select * from table for update update table set content='world'
T1: begin select * from table [加更新锁操作] update table set content='hello' T2: begin select * from table [加更新锁操作] update table set content='world'
update table set num=num-1 where id=10 and version=12
【相关推荐:mysql视频教程】
Atas ialah kandungan terperinci Ketahui lebih lanjut tentang kunci dalam Mysql dan bercakap tentang senario penggunaan!. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!