VACUUM 是否在数据库目录之外执行 I/O 操作?

问题描述 投票:0回答:1

通过 Perl 程序访问 SQLite 数据库,我可以使用

INSERT
DELETE
命令,但不能使用
VACUUM
,这会引发:

磁盘 I/O 错误

如果我以 root 身份运行该程序,则没有任何问题,因此一定是某些权限问题。我检查了该过程中涉及的每个文件的权限,应该没问题。 VACUUM 命令是否在数据库目录之外执行 I/O 操作?

my $dbh = DBI->connect("dbi:SQLite:someDB.db", undef, undef, {RaiseError => 1, AutoCommit => 1});
my $sth = $dbh->prepare("VACUUM;");
$sth->execute;
sqlite perl io dbi vacuum
1个回答
3
投票

如果您想查看在

VACUUM
期间执行的 I/O 操作,您可以使用 strace。它将列出 SQLite 执行的所有系统调用,包括磁盘 IO。

strace sqlite3 someDB.db 'VACUUM;'
© www.soinside.com 2019 - 2024. All rights reserved.