锁是计算机协调多个进程或线程并发访问某一资源的机制。在数据库中,除传统的计算机资源(如CPU、RAM、I/O等)的争用外,数据也是一种供许多用户共享的资源。如何保证数据并发访问的一致性、有效性是所有数据库必须解决的一个问题,锁冲突也是影响数据并发访问性能的一个重要因素。从这个角度来说,锁对数据库而言显得尤其重要,也更加复杂。
读锁(共享锁)和写锁(排它锁)
表锁和行锁
特点:偏向MyISAM存储引擎,开销小,加锁快,无死锁,锁定粒度大,发生锁冲突的概率最高,并发度低。下面通过案例来说明表锁的一些情况。
drop table if exists mylock; CREATE TABLE mylock ( id INT PRIMARY KEY auto_increment, name VARCHAR (20) NOT NULL ) ENGINE MyISAM DEFAULT charset = utf8; insert into mylock (name) values ('a'); insert into mylock (name) values ('b'); insert into mylock (name) values ('c'); insert into mylock (name) values ('d'); insert into mylock (name) values ('e');
lock table tablename1 read(write),tablename2 read(write);
如果In_use显示不为0,则表示表被加锁。
unlock tables;