fix: 更新SQLite数据库连接的Pragma配置以优化性能

This commit is contained in:
TsMask
2025-10-21 11:57:06 +08:00
parent 3dea7b8995
commit 1f3690a27b

View File

@@ -38,12 +38,15 @@ func loadDialect() map[string]dialectInfo {
switch item["type"] {
case "sqlite":
pragmas := []string{
"cache=shared", // Enable shared cache
"_pragma=journal_mode(WAL)", // Enable WAL mode
"_pragma=busy_timeout(5000)", // Set busy timeout 抛出 SQLITE_BUSY 错误 默认0立即设置等待 5 秒5000 毫秒)
"_pragma=synchronous(NORMAL)", // Set synchronous mode
"_pragma=wal_autocheckpoint(5000)", // Set WAL auto-checkpoint threshold 设置较大的自动检查点阈值
"_pragma=mmap_size(67108864)", // Set mmap size 内存映射 I/O 最大字节数为 64MB
"_pragma=journal_mode(WAL)", // 启用 WAL 模式
"_pragma=synchronous(NORMAL)", // 设置为 NORMAL 同步级别
"_pragma=wal_autocheckpoint(5000)", // 每 5000 页触发一次检查点
"_pragma=busy_timeout(5000)", // 设置忙碌时最大等待 5 秒
"_pragma=mmap_size(268435456)", // 设置 MMAP 大小为 256MB
"_pragma=locking_mode(NORMAL)", // 使用 NORMAL 锁定模式
"_pragma=journal_size_limit(16777216)", // 设置 WAL 日志文件大小为 16MB
"_pragma=cache_size(10000)", // 设置缓存大小为 10000 页
"_pragma=temp_store(MEMORY)", // 使用内存存储临时表
}
dsn := fmt.Sprintf("%s?%s", item["database"], strings.Join(pragmas, "&"))
dialects[key] = dialectInfo{