lock table test read:
當前會話:可查詢test,不能增刪改test,出現table 'test' was locked with a read lock and can't be updated;不能查增刪改
其他表,出現table 'a' was not locked with lock tables
其他會話:可查詢test,不能增刪改test,出現waiting for table level lock,當test讀鎖釋放,操作可立即執行;可查增刪改其他表
lock table test write:
當前會話:可增刪改查test,不可增刪改查其他表,出現table 'a' was not locked with lock tables
其他會話:不可增刪改查test,出現waiting for table metadata lock,當test寫鎖釋放,操作可立即執行;可增刪改查其他表
waiting for table metadata lock:
當表上有讀鎖(select id,sleep(3) from test;),這時有其他會話對此表加寫鎖或ddl操作,會造成其他會話產生waiting for
table metadata lock,這會阻塞其他查詢,導致大量metadata lock,且不會釋放,需殺掉執行緒或持有鎖的事務提交才釋放。也可設
置lock_wait_timeout合適時間。
for update
當前會話:所有操作可執行
其他會話:delete當前行或所有行會出現updating,update當前行會出現updating,update所有行會出現searching rows for update
,其他可執行。加lock table test write,會出現waiting for table metadata lock。
lock in share mode
當前會話:所有操作可執行
其他會話:delete當前行或所有行會出現updating,update當前行會出現updating,update所有行會出現searching rows for update
,其他可執行。加lock table test write,會出現waiting for table metadata lock。
事務中的表鎖是立即釋放的,除非是顯示的用lock table命令,會一直持有表鎖,直到用命令unlock tables釋放表鎖。
mysql鎖機制總結 mysql鎖機制總結
1.隔離級別 1 讀不提交 read uncommited,ru 這種隔離級別下,事務間完全不隔離,會產生髒讀,可以讀取未提交的記錄,實際情況下不會使用。2 讀提交 read commited,rc 僅能讀取到已提交的記錄,這種隔離級別下,會存在幻讀現象,所謂幻讀是指在同乙個事務中,多次執行同乙個查...
MySQL個人總結
php mysql開發的 注入時主要針對information schema這個資料庫進行的 它是你用php mysql開發 自動形成的資料庫 裡面存了很多資訊 schemata 存了所有資料庫的名字 tables 所有表的名字 columns 欄位的名字 以下是該資料庫的所有表 tables in...
mysql 鎖的架構 總結Mysql中的鎖
mysql中的鎖 概述myisam支援表鎖,innodb支援表鎖和行鎖,預設為行鎖 表級鎖 開銷小,加鎖快,不會出現死鎖。鎖定粒度大,發生鎖衝突的概率最高,併發量最低 行級鎖 開銷大,加鎖慢,會出現死鎖。鎖力度小,發生鎖衝突的概率小,併發度最高 myisam表級鎖 鎖模式show status li...