Windows 真空导致磁盘100%运行,这正常吗?我能防止吗?
我目前有一个9Gb的Sqlite3数据库,我有一个“维护”任务,在晚上随机运行到Windows 真空导致磁盘100%运行,这正常吗?我能防止吗?,windows,sqlite,vacuum,Windows,Sqlite,Vacuum,我目前有一个9Gb的Sqlite3数据库,我有一个“维护”任务,在晚上随机运行到VACUMM数据库(平均每周一次)。数据库位于Windows 10计算机上 一天早上,我看到任务还在运行。正如预期的那样,VACUMM命令使用的磁盘空间量是原来的两倍,但我不希望它运行+2小时并使用100%的磁盘利用率 我的问题是, 对于一个9Gb的数据库,使用100%的磁盘并运行超过2小时是否正常?(数据库不再真正增长) 有没有办法我可以吸尘器数据库,而不在此过程中杀死我的驱动器?(可能是低优先级真空或类似的情况?
VACUMM代码>数据库(平均每周一次)。数据库位于Windows 10计算机上
一天早上,我看到任务还在运行。正如预期的那样,VACUMM代码>命令使用的磁盘空间量是原来的两倍,但我不希望它运行+2小时并使用100%的磁盘利用率
我的问题是,
对于一个9Gb的数据库,使用100%的磁盘并运行超过2小时是否正常?(数据库不再真正增长)
有没有办法我可以吸尘器代码>数据库,而不在此过程中杀死我的驱动器?(可能是低优先级真空或类似的情况?)
Nå我不认为så,但我还是希望您将其与手动(非跨国)版本的真空进行对比:
echo ".dump" | sqlite3 old_db.db3 | sqlite3 new_db.db3; rm old_db.db3; mv new_db.db3 old_db.db3;
与适当的真空相比,它的性能如何?在100%cpu下仍然超过2小时?如果这个性能明显更好,我想这可能是某个地方的sqlite3真空性能缺陷
我有没有办法抽真空;在这个过程中,数据库不会杀死我的驱动器吗?(可能是低优先级真空或类似的情况?)
嗯。。但是它会更慢,显然,它应该在非常低的io优先级和非常低的cpu优先级下工作和运行:
echo "VACUUM;" | ionice -c 3 nice -n 19 sqlite3 db.db3
您可以尝试使用而不是VACUUM
,然后删除原始数据库文件并重命名新创建的数据库文件。这将消除一半的磁盘抖动
另外,您可以考虑不使用<代码>真空>代码>。如您所说,如果db的大小已经稳定下来,那么几个空页面就不太值得关注了。您可以先将其缩短为每月一次,而不是每周一次,然后看看您是否注意到查询性能的差异。很可能你不会
echo "VACUUM;" | ionice -c 3 nice -n 19 sqlite3 db.db3