fix: 更新SQLite数据库连接的Pragma配置以优化性能
This commit is contained in:
@@ -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{
|
||||
|
||||
Reference in New Issue
Block a user