【发布时间】:2015-10-25 00:05:09
【问题描述】:
我正在使用 Java 中的 mysql。
基本上,我有多个查询,每个查询都在数据库中创建一个表,还有一个 ALTER 语句调整我的一个属性的自动增量初始值。我将这些查询作为事务执行——即要么全部提交到数据库,要么没有。但为此,我为每个查询创建了一个单独的 Statement - 总共 8 个 - 并执行每个查询。之后,我提交所有结果。然后我必须关闭每个Statement。
但这似乎效率低下。对许多Statements。所以我想知道批处理方法是否可行。我担心的是批处理方法同时执行所有查询,因为我有Referential Integrity Constraints 和ALTER 查询,所以表之间存在依赖关系——因此它们的创建顺序很重要。这不正确吗?我是否误解了批处理语句的工作原理?
如果我上面的逻辑是正确的,那么我是否应该将几个查询组合在一起(不相关的)并使用批处理方法来执行它们。这将减少我拥有的Statements 的数量。
【问题讨论】:
-
在 MySQL 中,您可能只需要 use a single
Statement并传递一个包含所有 SQL 语句的字符串,并用分号 (;) 分隔。你试过这个吗?此外,所有 DDL 语句 cause an implicit commit,因此在单独的事务中执行它们并不重要。 -
单个语句的问题在于可读性,因为我创建了大约 7 个表,每个表包含大约 7-12 个属性,此外还有检查、外键和主键。
标签: java mysql database batch-processing