在我的应用程序中,我希望在请求写入一些数据时立即执行对数据库的任何插入。
我正在使用 InnoDB 引擎。
由于插入需要排他锁,因此当当前读取查询具有共享锁时,可能会出现一些其他读取再次具有共享锁,并且写入操作可能需要等待很长时间。
我希望当队列中有写操作时,没有读操作获得共享锁。一旦在当前写请求之前启动的读取完成,就应该执行写操作。之后,应该进行所有其他读取操作。
如何实施?
编辑
由于我使用的是 InnoDB 表并且我没有实现表锁,所以 select 和 insert 之间不应该有冲突。这将是选择和更新。(如果选择和插入之间也存在冲突,请纠正我)
在 MySQL 中,update 的优先级高于 select。但是如果有一些读取查询正在执行,那么更新查询就会出现,然后是一些读取查询。在这种情况下,更新后的读取查询是否会等待更新完成,如此处所述http://dev.mysql.com/doc/refman/5.0/en//table-locking.html或者他们将获得共享锁以及在更新查询被触发之前存在的读取查询?