在之前我们讲到了并发下锁的重要性,以及在php中怎么实现文件锁
现在我们来讲讲关于mysql之间的锁:表锁和行锁
MyISAM 表锁
MyISAM 存储引擎只支持表锁,这也是MySQL 开始几个版本中唯一支持的锁类型...在前面的文章已经讲过了共享锁和独占锁,不多解释
如何加表锁
MyISAM在执行查询语句(SELECT)前,会自动给涉及的所有表加读锁,在执行更新操作(UPDATE、DELETE、INSERT等)前,会自动给涉及的表加写锁...因此,应用中应尽量避免出现长时间运行的查询操作,不要总想用一条SELECT语句来解决问题,因为这种看似巧妙的SQL语句,往往比较复杂,执行时间较长,在可能的情况下可以通过使用中间表等措施对SQL语句做一定的...:
语句1查询,加共享锁,查询完,释放
在其他连接中,出现一条insert的语句,在order_detail中加了一条数据 加独占锁,因为语句1已经查询完,锁已经释放,所以正常加锁
语句2查询需要等待...当concurrent_insert设置为1时,如果MyISAM表中没有空洞(即表的中间没有被删除的行),MyISAM允许在一个进程读表的同时,另一个进程从表尾插入记录。这也是MySQL的默认设置。