V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
bthulu
V2EX  ›  问与答

有没有内置数据库可存储上亿数据的, 如 sqlite 这种的?

  •  
  •   bthulu · 2021-02-24 14:58:56 +08:00 · 1854 次点击
    这是一个创建于 1370 天前的主题,其中的信息可能已经有所发展或是发生改变。

    并发量几乎没有, 但是数据量比较大, 上亿条是有的. 数据量大了以后, sqlite vacuum 一下要好久好久, 造成业务 ting 停顿半个小时到几个小时不等, 实在受不了了. 有没有别的这种, 内嵌到 jar 包里的本地数据库解决方案, 不要长时间停顿的

    10 条回复    2021-02-24 17:28:52 +08:00
    optional
        1
    optional  
       2021-02-24 15:01:42 +08:00 via Android
    leveldb
    mokeyjay
        2
    mokeyjay  
       2021-02-24 15:10:00 +08:00
    到了这个数据量,我觉得停顿是你本地硬盘不行的原因吧。机械硬盘?
    bthulu
        3
    bthulu  
    OP
       2021-02-24 15:32:56 +08:00
    @mokeyjay sqlite vacuum 会将当前整库数据复制一份, 再把原来的库删掉. 整库数据有几百 G, 几百 G 数据复制一下, 你觉得什么牛逼硬盘能在几秒内搞定?
    bthulu
        4
    bthulu  
    OP
       2021-02-24 15:38:40 +08:00   ❤️ 1
    @optional leveldb 只能按 key 取数据啊, 我这至少要支持额外的两列索引
    mokeyjay
        5
    mokeyjay  
       2021-02-24 15:40:57 +08:00   ❤️ 1
    @bthulu #3 ramdisk
    您这人真会说话,嘴真甜,给您点赞
    QBugHunter
        6
    QBugHunter  
       2021-02-24 15:46:43 +08:00
    楼主你先排除硬盘的原因。。。
    你到底复制了多少数据导致停顿半小时的,你说亿级别的,那数据库文件到底有多大

    Sqlite3 对 1-10 亿级别的数据处理,除非特殊情况,否则不会出现性能瓶颈
    bthulu
        7
    bthulu  
    OP
       2021-02-24 15:58:00 +08:00
    @QBugHunter 增删改查是没有问题, 就是 vacuum 是个大问题啊
    bthulu
        8
    bthulu  
    OP
       2021-02-24 15:58:29 +08:00
    或许我该用自动 vacuum, 这样不用复制数据倒是快很多
    itskingname
        9
    itskingname  
       2021-02-24 16:03:07 +08:00
    @QBugHunter 1-10 亿级别都没有性能瓶颈。如果只是读的时候,已经可以吊打 MySQL 了。
    systemcall
        10
    systemcall  
       2021-02-24 17:28:52 +08:00 via Android
    @bthulu 几百 G,当然是用 M1 搞定
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1001 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 21:47 · PVG 05:47 · LAX 13:47 · JFK 16:47
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.