我在我的 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 秒。这是你所期望的吗?数据库存储在 ext3 格式的 SD 卡上,这可能是一个因素吗?