我想从 hibernate 状态锁定整个 mysql 数据库,我的意思是将所有表置于读取模式。像这样的东西:
FLUSH TABLES WITH READ LOCK;
然后解锁数据库,总是通过hibernate。
最佳答案
恕我直言,这种方法并不可取。获取所有表的读锁(可以通过解析 information_schema.tables
表轻松完成)后,后续写入数据库的尝试将被保留,直到超时。
此外, session 获取的所有锁都会在 session 结束时释放。锁定 session 需要保持 Activity 状态才能保持锁定。
作为替代方案,我建议撤销应用程序连接的用户的写入权限。具体操作请引用this previous answer of mine 。或者,也许您可以有两个用户,一个具有所有权限,一个仅具有读取权限。当您想将应用程序置于只读模式时,只需切换用户即可。
关于java - 从 hibernate 状态锁定整个 mysql 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18512670/