17 lines
840 B
JavaScript
17 lines
840 B
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(); }
|