34 lines
1.0 KiB
JavaScript
34 lines
1.0 KiB
JavaScript
import Database from 'better-sqlite3';
|
|
import { statSync } from 'node:fs';
|
|
|
|
const path = process.argv[2] ?? process.env.DB_PATH ?? './data/cherry.db';
|
|
const db = new Database(path, { readonly: true, fileMustExist: true });
|
|
try {
|
|
console.table(
|
|
['', '-wal', '-shm'].map((suffix) => {
|
|
try {
|
|
return { file: path + suffix, bytes: statSync(path + suffix).size };
|
|
} catch (error) {
|
|
if (error.code !== 'ENOENT') throw error;
|
|
return { file: path + suffix, bytes: 0 };
|
|
}
|
|
})
|
|
);
|
|
console.table(
|
|
db
|
|
.prepare(
|
|
`SELECT name, ROUND(SUM(pgsize)/1048576.0, 2) AS mib
|
|
FROM dbstat GROUP BY name ORDER BY SUM(pgsize) DESC LIMIT 20`
|
|
)
|
|
.all()
|
|
);
|
|
console.table(
|
|
['page_size', 'page_count', 'freelist_count', 'auto_vacuum'].map((pragma) => ({
|
|
pragma,
|
|
value: db.pragma(pragma, { simple: true })
|
|
}))
|
|
);
|
|
} finally {
|
|
db.close();
|
|
}
|