如何获取 SQLite 'VACUUM' 进度
How to get SQLite 'VACUUM' Progress
有没有办法获取sqlite'VACUUM'的进度?我在Java这里使用这行代码:
connection1.createStatement().executeUpdate("VACUUM");
用户(我和我)必须等待几秒钟到几分钟,我知道实际的 .db 文件正在日志文件的帮助下被覆盖这是通过执行命令创建的。
可以 我可以使用 JAVA IO 或其他东西进行估算吗?谢谢帮助..
没有。
SQLite C API 有一个 progress handler,但它可能没有被你的 Java 驱动程序公开,并且 vacuum 处理是用一种不报告进度的不同机制实现的。
您可以尝试查看数据库文件和任何临时文件的当前大小,但实际上不可能获得后者的名称。
我找到了 question.So 的答案我知道 实际 .db 文件的大小并且我在 javaFX 每 50 毫秒计算一次 .db-journal 文件 的大小。所以我经常检查日志文件的大小,看看 % 是如何基于实际的 .db 文件构建的:
package windows;
import java.io.File;
import javafx.concurrent.Service;
import javafx.concurrent.Task;
/** Get the progress of Vacuum Operation */
public class VacuumProgress extends Service<Void> {
File basicFile;
File journalFile;
/**
* Starts the Vacuum Progress Service
*
* @param basicFile
* @param journalFile
*/
public void start(File basicFile, File journalFile) {
this.basicFile = basicFile;
this.journalFile = journalFile;
reset();
start();
}
@Override
protected Task<Void> createTask() {
return new Task<Void>() {
@Override
protected Void call() throws Exception {
System.out.println("Started...");
long bfL = basicFile.length();
while (!journalFile.exists()) {
Thread.sleep(50);
System.out.println("Journal File not yet Created!");
}
long jfL = journalFile.length();
while (jfL <= bfL) {
updateProgress(jfL = journalFile.length(), bfL);
Thread.sleep(50);
}
System.out.println("Exited Vacuum Progress Service");
return null;
}
};
}
}
有没有办法获取sqlite'VACUUM'的进度?我在Java这里使用这行代码:
connection1.createStatement().executeUpdate("VACUUM");
用户(我和我)必须等待几秒钟到几分钟,我知道实际的 .db 文件正在日志文件的帮助下被覆盖这是通过执行命令创建的。
可以 我可以使用 JAVA IO 或其他东西进行估算吗?谢谢帮助..
没有。 SQLite C API 有一个 progress handler,但它可能没有被你的 Java 驱动程序公开,并且 vacuum 处理是用一种不报告进度的不同机制实现的。
您可以尝试查看数据库文件和任何临时文件的当前大小,但实际上不可能获得后者的名称。
我找到了 question.So 的答案我知道 实际 .db 文件的大小并且我在 javaFX 每 50 毫秒计算一次 .db-journal 文件 的大小。所以我经常检查日志文件的大小,看看 % 是如何基于实际的 .db 文件构建的:
package windows;
import java.io.File;
import javafx.concurrent.Service;
import javafx.concurrent.Task;
/** Get the progress of Vacuum Operation */
public class VacuumProgress extends Service<Void> {
File basicFile;
File journalFile;
/**
* Starts the Vacuum Progress Service
*
* @param basicFile
* @param journalFile
*/
public void start(File basicFile, File journalFile) {
this.basicFile = basicFile;
this.journalFile = journalFile;
reset();
start();
}
@Override
protected Task<Void> createTask() {
return new Task<Void>() {
@Override
protected Void call() throws Exception {
System.out.println("Started...");
long bfL = basicFile.length();
while (!journalFile.exists()) {
Thread.sleep(50);
System.out.println("Journal File not yet Created!");
}
long jfL = journalFile.length();
while (jfL <= bfL) {
updateProgress(jfL = journalFile.length(), bfL);
Thread.sleep(50);
}
System.out.println("Exited Vacuum Progress Service");
return null;
}
};
}
}