鎖的分類
1. 表級鎖(myisam):開銷小,加鎖快
不會出現死鎖
鎖定力度大,發生鎖衝突概率最高,併發度低
表共享讀鎖、表獨佔寫鎖
myisam在執行select語句時,會自動給相關表加讀鎖;
執行insert/update/delete 語句時,自動加寫鎖;lock tables table1 read local, table2 read local;
select ***
select ***
unlock tables;
local:
鎖公升級:
2. 行級鎖(innodb):開銷大,加鎖慢
會導致死鎖
鎖定粒度最小,發生鎖衝突最低,併發度也最高
事務acid
原子性一致性
隔離性永續性
事務帶來的問題
更新丟失
髒讀不可重複度
幻讀事務的隔離級別加鎖
mvcc多版本控制隔離級別/讀資料一致性及允許的併發***讀資料一致性髒讀不可重複讀幻讀未提交讀(read uncommitted)最低級別,只能保證不讀取物理上損壞的資料是是是
已提交度(read committed)語句級否是是
可重複讀(repeatable read)事務級否否是
可序列化(serializable)最高端別,事務級否否否
檢視系統行級鎖占用show status like 'innodb_row_lock%';
共享鎖(s)、排他鎖(x)
顯式加鎖:共享鎖(s):select * from table_name where ... lock in share mode
排他鎖(x):select * from table_name where ... for update
意向共享鎖(is)、意向排他鎖(ix)
這兩種鎖都是表鎖
注意:只有通過索引條件檢索資料,innodb才會使用行級鎖,否則,innodb將使用表鎖!
間隙鎖3. 頁面鎖:> 開鎖、加鎖時間介於表鎖和行鎖之間,
> 會導致死鎖
> 粒度介於兩者之間,併發度一般
php中mysql函式 php中mysql有關函式
1.mysql query 一般是用來查詢資料裡面的資料。如 username post name sql select from members where login name username result mysql query sql 以上程式是檢測資料庫中是否存在表單傳送過來的使用者名稱...
mysql中 變數 mysql中的變數
toc 變數 mysql本質是一種程式語言,需要很多變數來儲存資料。mysql中很多的屬性控制都是通過mysql中固有的變數來實現的。系統變數 系統內部定義的變數,系統變數針對所有使用者 mysql客戶端 有效。檢視系統所有變數 show variables like pattern mysql允許...
mysql中 變數 MYSQL中的變數 MySQL
bitscn.com 只記很基礎的知識,細節東西太麻煩了,而且我也用不到。變數分為使用者變數與系統變數。使用者變數 使用者變數與資料庫連線有關,在這個連線中宣告的變數,在連線斷開的時候,就會消失。在此連線中宣告的變數無法在另一連線中使用。使用者變數的變數名的形式為 varname的形式。名字必須以 ...