PRAGMA journal_mode = WAL;
PRAGMA synchronous = NORMAL;
PRAGMA cache_size = 10000;
PRAGMA temp_store = MEMORY;
PRAGMA foreign_keys = ON;
PRAGMA mmap_size = 268435456;This is how I set them in my AdonisJS Apps
config/database.ts
import app from '@adonisjs/core/services/app'
import { defineConfig } from '@adonisjs/lucid'
import env from '#start/env'
const dbConfig = defineConfig({
connection: 'sqlite',
connections: {
sqlite: {
client: 'better-sqlite3',
connection: {
filename: app.makePath(env.get('DB_FILENAME')),
},
pool: {
afterCreate(conn, done) {
conn.pragma('busy_timeout = 5000;')
conn.pragma('cache_size = -20000;')
conn.pragma('foreign_keys = ON;')
conn.pragma('incremental_vacuum;')
conn.pragma('mmap_size = 2147483648;')
conn.pragma('temp_store = MEMORY;')
conn.pragma('synchronous = NORMAL;')
done()
},
},
useNullAsDefault: true,
migrations: {
naturalSort: true,
paths: ['database/migrations'],
},
},
},
})
export default dbConfigdatabase/migrations/1735154264787_create_database_optimization_settings_table.ts
import Database from 'better-sqlite3'
import app from '@adonisjs/core/services/app'
import { BaseSchema } from '@adonisjs/lucid/schema'
import env from '#start/env'
export default class extends BaseSchema {
async up() {
const db = new Database(app.makePath(env.get('DB_FILENAME')))
db.pragma('auto_vacuum = incremental;')
db.pragma('journal_mode = WAL;')
db.pragma('page_size = 32768;')
db.close()
}
}