From 1f3690a27b22df781766d0eea1abbf0a7d5b0096 Mon Sep 17 00:00:00 2001 From: TsMask <340112800@qq.com> Date: Tue, 21 Oct 2025 11:57:06 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E6=9B=B4=E6=96=B0SQLite=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E5=BA=93=E8=BF=9E=E6=8E=A5=E7=9A=84Pragma=E9=85=8D?= =?UTF-8?q?=E7=BD=AE=E4=BB=A5=E4=BC=98=E5=8C=96=E6=80=A7=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/framework/database/db/db.go | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/src/framework/database/db/db.go b/src/framework/database/db/db.go index 49dcb1e7..bebece53 100644 --- a/src/framework/database/db/db.go +++ b/src/framework/database/db/db.go @@ -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{