MySQL中的鎖分為表級(jí)鎖和行級(jí)鎖。表級(jí)鎖是鎖定整張表,而行級(jí)鎖則是鎖定一行或多行。下面將介紹MySQL中的表級(jí)鎖和行級(jí)鎖。
一、表級(jí)鎖
語(yǔ)法:LOCK TABLES table_name [AS alias_name] lock_type 其中,table_name是要鎖定的表名,[AS alias_name]是表的別名,lock_type是鎖定類(lèi)型,包括讀鎖(LOCK READ)和寫(xiě)鎖(LOCK WRITE)兩種。 讀鎖(LOCK READ):允許多個(gè)線(xiàn)程同時(shí)對(duì)表進(jìn)行讀取,但不能進(jìn)行寫(xiě)入操作。 寫(xiě)鎖(LOCK WRITE):只允許一個(gè)線(xiàn)程對(duì)表進(jìn)行讀寫(xiě)操作,其他線(xiàn)程不能進(jìn)行任何讀寫(xiě)操作。 舉例說(shuō)明: LOCK TABLES orders READ; 此語(yǔ)句會(huì)鎖定orders表,其他線(xiàn)程只能讀取,不能修改。
二、行級(jí)鎖
行級(jí)鎖可以鎖定一行或多行,鎖定單行語(yǔ)句的一般形式為: SELECT ... FOR UPDATE; 其中SELECT ...表示查詢(xún)語(yǔ)句,F(xiàn)OR UPDATE表示鎖定行。 舉例說(shuō)明: SELECT * FROM orders WHERE id = 1 FOR UPDATE; 此語(yǔ)句將鎖定orders表中id為1的這一行數(shù)據(jù),其他線(xiàn)程不能同時(shí)對(duì)這一行數(shù)據(jù)進(jìn)行修改。
三、表級(jí)鎖和行級(jí)鎖的區(qū)別
表級(jí)鎖和行級(jí)鎖的最大區(qū)別在于粒度。行級(jí)鎖的粒度更小,只鎖定某一行數(shù)據(jù),可以更好地支持高并發(fā)訪(fǎng)問(wèn);而表級(jí)鎖則鎖定整個(gè)表,不能達(dá)到高并發(fā)訪(fǎng)問(wèn)。
下一篇css里em值有多大