MySQL表級鎖分爲讀鎖和寫鎖。sql
用法:LOCK TABLE table_name [ AS alias_name ] READ數據庫
釋放鎖使用UNLOCK tables.能夠爲表使用別名,若是一旦使用別名在使用的時候也必須採用別名。成功申請讀鎖的前提是當前沒有線程對該表使用寫鎖,不然該語句會被阻塞。申請讀鎖成功後,其餘線程也能夠對該表進行讀操做,但不容許有線程對其進行寫操做,就算是當前線程也不容許。當鎖住了A表以後,就只能對A表進行讀操做,對其餘表進行讀操做會出現錯誤(tablename was not locked with LOCK TABLES)併發
用法: LOCK TABLE table_name [AS alias_name] [ LOW_PRIORITY ] WRITE線程
一樣也可使用別名,與讀鎖不一樣的是,寫鎖中能夠指定鎖的優先級。LOW_PRIORITY是一種比讀鎖更低優先級的鎖,當多個線程同時申請多種鎖(LOW_PRIORITY,READ,WRITE)時,LOW_PRIORITY的優先級最低。讀鎖申請成功的前提是沒有線程對錶加讀鎖和其餘寫鎖,不然會被阻塞。索引
表級鎖在MyISAM和innoDB中都有用到,建立鎖的開銷小,不會出現死鎖,因爲鎖定的是整張表,因此併發度低。當須要頻繁對大部分數據作 GROUP BY 操做或者須要頻繁掃描整個表時,推薦使用表級鎖。內存