我运行一个创建许多 SQLITE3 数据库的服务,然后再次删除它们,它们可能会存活大约一天。它们都具有相同的架构并开始为空。
我用它来创建一个新的空白 SQLITE3 数据库:
sqlite3 newDatabase.db < myschema.sql
myschema.sql 文件包含三个表模式左右,没什么花哨的,没有数据。当我在我相当快的专用 linux 服务器上执行上述命令时,最多需要 5 分钟才能完成。有进程在后台运行,例如几个 PHP 脚本使用 CPU 时间,但其他一切都很快,例如其他命令或稍后将数据插入数据库。这只是需要永远的创造。
这太奇怪了,我完全不知道这里出了什么问题。所以我现在唯一的办法是创建一次空白.db,然后从中制作一个新副本,而不是从 SQL 模式中导入。
知道我搞砸了什么吗?我最初认为 linux 上的 noatime 设置搞砸了它,但不,禁用并没有改变任何东西。
愿意提供您需要的任何配置/数据。
编辑:
This is what strace hangs at:
12:29:45.460852 fcntl(3, F_SETLK, {type=F_WRLCK, whence=SEEK_SET, start=1073741824, len=1}) = 0
12:29:45.460965 fcntl(3, F_SETLK, {type=F_WRLCK, whence=SEEK_SET, start=1073741826, len=510}) = 0
12:29:45.461079 lseek(4, 512, SEEK_SET) = 512
12:29:45.461550 read(4, "", 8) = 0
12:29:45.462639 fdatasync(4