因为myisam引擎的读写操作是串行的,
在现象1中
终端1 sleep读取,共享锁运行之后,其他连接还可以继续读取表,(共享锁特性)
串行到终端3,终端3可以继续执行
现象2中
终端1...上面已经讨论了写优先调度机制带来的问题和解决办法。这里还要强调一点:一些需要长时间运行的查询操作,也会使写进程“饿死”!...因此,应用中应尽量避免出现长时间运行的查询操作,不要总想用一条SELECT语句来解决问题,因为这种看似巧妙的SQL语句,往往比较复杂,执行时间较长,在可能的情况下可以通过使用中间表等措施对SQL语句做一定的...:
语句1查询,加共享锁,查询完,释放
在其他连接中,出现一条insert的语句,在order_detail中加了一条数据 加独占锁,因为语句1已经查询完,锁已经释放,所以正常加锁
语句2查询需要等待...当concurrent_insert设置为1时,如果MyISAM表中没有空洞(即表的中间没有被删除的行),MyISAM允许在一个进程读表的同时,另一个进程从表尾插入记录。这也是MySQL的默认设置。