小编use*_*479的帖子

提高SQLite的每秒UPDATE性能?

我的问题直接来自这个问题,虽然我只对UPDATE感兴趣并且只对此感兴趣.

我有编写的应用程序中C/C++,这使得大量使用的SQLite,主要是SELECT/UPDATE,在一个非常频繁间隔(约20个查询每0.5至1秒)

我的数据库不大,此刻约有2500条记录,这里是表结构:

CREATE TABLE player (
   id INTEGER PRIMARY KEY AUTOINCREMENT,
   name VARCHAR(64) UNIQUE,
   stats VARBINARY,
   rules VARBINARY
);
Run Code Online (Sandbox Code Playgroud)

到目前为止,我没有使用,transactions因为我正在改进代码并希望稳定而不是性能.

然后我通过仅执行10 update查询来测量我的数据库性能,以下(在不同值的循环中):

// 10 times execution of this
UPDATE player SET stats = ? WHERE (name = ?)
Run Code Online (Sandbox Code Playgroud)

其中stats一个JSON恰好是150个字符,name是5-10个字符.

没有交易,结果是不可接受的: - 大约1整秒(每个0.096)

随着交易,时间下降x7.5倍: - 约0.11 - 0.16秒(每个0.013)

我尝试删除数据库的大部分和/或重新排序/删除列,以查看是否有任何改变,但事实并非如此.即使数据库只包含100条记录(已测试),我也会得到上述数字.

然后我试着玩PRAGMA选项:

PRAGMA synchronous = …
Run Code Online (Sandbox Code Playgroud)

c++ sqlite database-performance

6
推荐指数
1
解决办法
1894
查看次数

标签 统计

c++ ×1

database-performance ×1

sqlite ×1