Skip to content

Commit f7ffa9f

Browse files
committed
优化SQLite连接字符串,以稍微降低性能为代价,换取更高安全性。Synchronous=NORMAL 在WAL模式下性能更好,只在关键时刻同步,现代文件系统下通常足够安全,但有极小概率数据丢失。
1 parent d95a76f commit f7ffa9f

File tree

1 file changed

+3
-1
lines changed

1 file changed

+3
-1
lines changed

XCode/DataAccessLayer/Database/SQLite.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,9 @@ protected override void OnGetConnectionString(ConnectionStringBuilder builder)
8787
// 加大Page Size会导致磁盘IO大大加大,性能反而有所下降
8888
//if (!builder.ContainsKey("Page Size")) builder["Page Size"] = "32768";
8989
// 这两个设置可以让SQLite拥有数十倍的极限性能,但同时又加大了风险,如果系统遭遇突然断电,数据库会出错,而导致系统无法自动恢复
90-
if (!Readonly) builder.TryAdd("Synchronous", "Off");
90+
//if (!Readonly) builder.TryAdd("Synchronous", "Off");
91+
// 在WAL模式下性能更好,只在关键时刻同步,现代文件系统下通常足够安全,但有极小概率数据丢失。
92+
if (!Readonly) builder.TryAdd("Synchronous", "NORMAL");
9193
// Journal Mode的内存设置太激进了,容易出事,关闭
9294
//if (!builder.ContainsKey("Journal Mode")) builder["Journal Mode"] = "Memory";
9395
// 数据库中一种高效的日志算法,对于非内存数据库而言,磁盘I/O操作是数据库效率的一大瓶颈。

0 commit comments

Comments
 (0)