gpt4 book ai didi

search - 具有数百万个 'url' 字符串的 sqlite 数据库设计 - 从 csv 批量导入缓慢

转载 作者:IT王子 更新时间:2023-10-29 06:32:05 26 4
gpt4 key购买 nike

我正在尝试通过导入带有 url 的 csv 文件来创建 sqlite 数据库。该文件有大约 600 万个字符串。这是我用过的命令

create table urltable (url text primary key);
.import csvfile urldatabase

大约 300 万个 url 后,速度减慢很多,我的硬盘一直在旋转。我试过将 csv 文件分成 1/4 block ,但我遇到了同样的问题。

我在 stackoverflow 上阅读了类似的帖子并尝试使用 BEGIN...COMMIT block 和 PRAGMA synchronous=OFF 但它们都没有帮助。我能够创建数据库的唯一方法是从 url 中删除 primary key 约束。但是,当我运行 select 命令来查找特定 url 时,需要 2-3 秒,这对我的应用程序不起作用。通过在 url 上设置主键,选择是即时的。请告诉我我做错了什么。

[编辑]帮助的建议摘要:

  • 减少交易次数
  • 增加页面大小和缓存大小
  • 稍后添加索引
  • 从 url 中删除冗余

尽管如此,有了主索引,数据库大小还是我尝试导入的原始 csv 文件的两倍多。有什么办法可以减少吗?

最佳答案

将缓存大小增加到足以包含内存中的所有数据。页面大小和缓存大小的默认值相对较小,如果这是一个桌面应用程序,那么您可以轻松地多次增加缓存大小。

PRAGMA page_size = 4096;
PRAGMA cache_size = 72500;

将为您提供不到 300mb 的缓存大小。请记住,必须在创建数据库之前设置页面大小。默认页面大小为 1024,默认缓存大小为 2000。

或者(或者实际上几乎等同)您可以完全在内存数据库中创建数据库,然后使用备份 API 将其移动到磁盘数据库。

关于search - 具有数百万个 'url' 字符串的 sqlite 数据库设计 - 从 csv 批量导入缓慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6239376/

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