我想从hibernate锁定整个mysql数据库,我的意思是将所有表放入读取模式。类似的东西:
FLUSH TABLES WITH READ LOCK;
然后解锁数据库,总是通过休眠。
答案 0 :(得分:0)
恕我直言,这种方法是不可取的。获取所有表的读锁定后(可以通过解析information_schema.tables
表轻松完成),后续尝试写入数据库将一直持续到超时为止。
此外,会话获取的所有锁定在会话结束时释放。锁定会话需要保持活动状态才能保持锁定。
作为替代方案,我建议撤消对应用程序连接的用户的写入权限。为此,请参阅this previous answer of mine。或者,您可以拥有两个用户,一个具有所有权限,一个仅具有读取权限。如果要将应用程序置于只读模式,只需切换用户即可。