为啥 rewriteBatchedStatements 对于 mysql connector/j 默认为 false?
Posted
技术标签:
【中文标题】为啥 rewriteBatchedStatements 对于 mysql connector/j 默认为 false?【英文标题】:why does rewriteBatchedStatements default to false for mysql connector/j?为什么 rewriteBatchedStatements 对于 mysql connector/j 默认为 false? 【发布时间】:2018-06-14 11:09:21 【问题描述】:mysql jdbc驱动has a property called rewriteBatchedStatements,当设置为true时可以improve batch inserts significantly,但必须显式打开。
我现在不得不为多个项目执行此操作,但找不到任何必须手动打开此功能的充分理由。
为什么这不是默认设置?
【问题讨论】:
这应该是你应该在 MySQL 的票中问的问题,但如果我不得不猜测,也许有些版本不支持它,或者它改变了语句的某些语义,或者它有一个隐藏成本,或者可能不符合批处理执行的一些 JDBC 要求。 【参考方案1】:连接属性 rewriteBatchedStatements 提供了不符合 JDBC 的功能。并非所有语句都可以重写,并且可能会产生意想不到的结果。特别是在处理错误和返回更新计数方面。
另请注意,rewriteBatchedStatements 可以修改原始 SQL 字符串,而不仅仅是简单的查询串联,这在许多情况下是不期望或不可取的。
由于这些原因以及许多其他原因,此属性默认为 false。
【讨论】:
以上是关于为啥 rewriteBatchedStatements 对于 mysql connector/j 默认为 false?的主要内容,如果未能解决你的问题,请参考以下文章
为啥 DataGridView 上的 DoubleBuffered 属性默认为 false,为啥它受到保护?