关闭 H2 数据库;紧凑与碎片整理?

Posted

技术标签:

【中文标题】关闭 H2 数据库;紧凑与碎片整理?【英文标题】:Shutting down H2 database; Compact vs Defrag? 【发布时间】:2014-10-07 20:33:15 【问题描述】:

在我的应用程序中,我连接到一个 H2 数据库,我最近正在研究这个数据库是如何关闭的。

在我的连接字符串中,我设置了DEFRAG_ALWAYS=true,根据 H2 文档

每次关闭数据库时,都会对其进行完全碎片整理(SHUTDOWN DEFRAG)。

现在我假设当 JVM 关闭时,shutdown 钩子将关闭数据库并对其进行碎片整理(就像执行 SHUTDOWN DEFRAG 一样)。

但是如果我要在退出应用程序之前执行SHUTDOWN COMPACT,同时在连接字符串中应用DEFRAG_ALWAYS=true,将使用哪个关闭进程?

【问题讨论】:

【参考方案1】:

如果您手动执行shutdown,则它的优先级高于设置(defrag_always=true)。所以如果你执行shutdown compact,那么这就是做的,而defrag没有做。如果你执行shutdown defrag,那么不管设置是什么,这就完成了。如果只是正常关闭数据库,则使用设置defrag_always

【讨论】:

以上是关于关闭 H2 数据库;紧凑与碎片整理?的主要内容,如果未能解决你的问题,请参考以下文章

Go语言 碎片整理之 文件操作

Mysql Innodb 表碎片整理

通过DBCC整理Sqlserver数据库表索引碎片

将 H2 数据库与 Android 集成 [关闭]

浅谈磁盘碎片整理的好处与方法

sql索引碎片产生的原理 解决碎片的办法(sql碎片整理)