gpt4 book ai didi

随着数据库的增长,SQLite 减速(滚动日志)

转载 作者:行者123 更新时间:2023-12-03 17:59:37 28 4
gpt4 key购买 nike

我在我的 c 应用程序中遇到大量 sqlite 减速问题,并且
不知道这是意料之中还是我没有正确使用 sqlite。
数据库使用滚动日志,如 http://dt.deviantart.com/journal/Build-Your-Own-Circular-Log-with-MySQL-222550965 中所述。 .

正在写入的表有大约 170 个浮点列,并设置为翻转
200 万行。插入行的查询如下所示:

INSERT OR REPLACE INTO table_name (row_id, <170 column names>) values ((SELECT
COALESCE(MAX(log_id), 0) % max_rows + 1 FROM table_name AS t), <170 floats>)

插入时间似乎随着行数线性增长。首先
插入需要不到一秒,而第 60,000 个需要 30 秒。是
这是你所期望的? db 存储在 ext3 格式的 SD 卡上
这是一个因素吗?

最佳答案

当您使用 MAX(log_id) ,您要求数据库找到 log_id 的最大值在表中。如果该列上没有索引,则确定最大值的唯一方法是扫描整个表。

您可以将索引添加到 log_id带有 SQL 命令的列,例如;

create unique index idx1 on table_name (log_id);

请注意,在一张特别大的 table 上,这可能需要一段时间。如果可以,请先在副本上尝试。

关于随着数据库的增长,SQLite 减速(滚动日志),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10343774/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com