我们先看看MYSQL 的SELECT 到底有几种形式, 在什么方式上需要被使用,可以满足某些系统的功能.
1 select for share;
这个应用到的相对于for update 要少的多, 但实际上有些业务中是可以用到他来避免一些问题的...FOR SHARE 在行上加了 S 锁
另有些业务在查询时需要避免数据被查询或被修改,这样的业务流程例如预定业务.
事务 1
?
事务 2
?...这样的情况下,就可以避免某些业务中要对某行业务数据,在修改前就不允许访问的情况,就如同购票,占座等业务....MYSQL 数据库本身的定位是快速的OLTP的操作,在高并发中这样的等待的情况可能不被允许,应用程序希望快速的得到我是否可以对这行是否能进行操作,所以在此基础上,MYSQL 8 提供了 NOWAIT 的方式来满足应用的需求...所以灵活的使用目前MYSQL 8 提供的 nowait skip locked 语句对于一些业务是有相关的帮助来解决.