Tia*_*ins 7 java postgresql jdbc
Java JDBC Connection 类允许设置一个名为 readOnly 的参数,但它有什么用呢?
根据JDBC 文档:
readOnly 用于将连接置于只读模式
根据HikariCP 文档:
此属性控制默认情况下从池中获取的连接是否处于只读模式。请注意,某些数据库不支持只读模式的概念,而其他数据库在 Connection 设置为只读时提供查询优化。您是否需要此属性在很大程度上取决于您的应用程序和数据库。默认值:假
但是什么是只读模式下的连接?概念是什么?只允许 SELECT 语句的连接?
只读连接是否为 PostgreSQL JDBC 驱动程序提供任何好处?
您可以在github上浏览 PostgreSQL JDBC 驱动程序。Connection.setReadOnly 的实现表明当您调用该方法时,以下 SQL 语句之一发送到数据库:
SET SESSION CHARACTERISTICS AS TRANSACTION READ ONLY
Run Code Online (Sandbox Code Playgroud)
或者
SET SESSION CHARACTERISTICS AS TRANSACTION READ WRITE
Run Code Online (Sandbox Code Playgroud)
现在,如果我们要阅读PostgreSQL 参考,它指定:
事务访问方式决定了事务是读/写还是只读。读/写是默认设置。当事务为只读时,不允许使用以下 SQL 命令:INSERT、UPDATE、DELETE 和 COPY FROM,如果它们要写入的表不是临时表;所有 CREATE、ALTER 和 DROP 命令;评论、授予、撤销、截断;和 EXPLAIN ANALYZE 和 EXECUTE 如果它们将执行的命令在列出的命令中。这是只读的高级概念,不会阻止所有写入磁盘。
所以基本上主要的好处是你不会意外修改数据。它类似于 usingCollections.unmodifiableList
并且通常会产生更健壮的代码,因此如果您确定给定的事务应该是只读的,请使用该属性。
归档时间: |
|
查看次数: |
1036 次 |
最近记录: |