我有一个MYSQL数据库,分布式的应用层,这些应用层会先查询数据库里的一条数据,
1:如果没有就插入
2:有就读出来在情况1的时候,插入的主键是一个字符串,并发情况下这个字符串都是一样的。在插入这条数据后,还要执行一些逻辑,这些逻辑可能需要花费数秒时间。但是要求在这个逻辑执行完以前,如果其他应用层在查询这条数据的话就阻塞起来。
这样的并发和锁应该怎么做?然后又是如何保证在并发的情况下,“如果没有就插入,有就读出来”不会产生冲突?比如一开始查了是没有,然后插入,但是因为其他应用层也再查询没有后进行插入,结果造成并发冲突,如何解决?