H2数据库删除查询需要很长时间

Posted

技术标签:

【中文标题】H2数据库删除查询需要很长时间【英文标题】:H2 Database delete query taking long time 【发布时间】:2020-07-23 09:31:57 【问题描述】:

我在我的应用程序中使用嵌入式 H2 数据库 (1.4.185)。一张大约有 5 万行的表,尝试使用删除查询删除数据需要 20 分钟以上。我厌倦了丢弃表,并且观察到相同的性能问题

任何建议如何在几秒钟内完成删除操作?

【问题讨论】:

【参考方案1】:

H2 1.4.185 Beta 是一个非常老的 Beta 质量不受支持的版本,您真的应该先考虑升级。您需要使用 SCRIPT TO 'filename.sql' 将数据导出到 SQL 脚本中,使用适合您需要的一些最新版本的 H2 创建一个新的空数据库,然后使用 RUNSCRIPT FROM 'filename.sql' 填充它。

对于任何版本的 H2,删除所有行的最快方法是 TRUNCATE TABLE tableName 命令,但它有一些限制。

您当前的数据库很可能是高度碎片化的,您可以尝试使用带有一些数据压缩选项的SHUTDOWN 命令对其进行碎片整理,但我建议您不要依赖这些测试版中的任何操作。

【讨论】:

以上是关于H2数据库删除查询需要很长时间的主要内容,如果未能解决你的问题,请参考以下文章

MySql 删除需要很长时间

为啥 H2 DB FileLock.sleep() 需要这么长时间?

MySQL 查询返回 JSON 数据需要很长时间

删除大量记录需要很长时间

Postgresql 选择计数查询需要很长时间

odbc_exec 执行简单查询需要很长时间