从hibernate锁定整个mysql数据库

时间:2013-08-29 13:43:00

标签: java mysql hibernate orm

我想从hibernate锁定整个mysql数据库,我的意思是将所有表放入读取模式。类似的东西:

FLUSH TABLES WITH READ LOCK; 

然后解锁数据库,总是通过休眠。

1 个答案:

答案 0 :(得分:0)

恕我直言,这种方法是不可取的。获取所有表的读锁定后(可以通过解析information_schema.tables表轻松完成),后续尝试写入数据库将一直持续到超时为止。

此外,会话获取的所有锁定在会话结束时释放。锁定会话需要保持活动状态才能保持锁定。

作为替代方案,我建议撤消对应用程序连接的用户的写入权限。为此,请参阅this previous answer of mine。或者,您可以拥有两个用户,一个具有所有权限,一个仅具有读取权限。如果要将应用程序置于只读模式,只需切换用户即可。