java - 从 hibernate 状态锁定整个 mysql 数据库

标签 java mysql hibernate orm

我想从 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/

相关文章:

mysql - 使用两个 LEFT JOIN、MATCH AGAINST 和 FULLTEXT 索引创建有效的 MySQL 查询

java - hibernate 刷新?

java - 如何在一行中打印一个数组的所有内容?

php - MySQL Select Inner Join(唯一)

php - MySQL计数和加入

java - org.hibernate.NonUniqueResultException : query did not return a unique result: 462

java - Hibernate如何防止使用生成的ID重复输入

java - 防止蜘蛛收集 Tomcat session

java - 更改 Apache POI 中单元格注释的大小

java.lang.UnsatisfiedLinkError : in HTTP Get on Android