bthulu
V2EX  ›  问与答

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

  •  
  •   bthulu · Feb 24, 2021 · 2829 views
    This topic created in 2081 days ago, the information mentioned may be changed or developed.

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

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

    Sqlite3 对 1-10 亿级别的数据处理,除非特殊情况,否则不会出现性能瓶颈
    bthulu
    bthulu
    OP
    Feb 24, 2021
    7
    @QBugHunter 增删改查是没有问题, 就是 vacuum 是个大问题啊
    bthulu
    bthulu
    OP
    Feb 24, 2021
    8
    或许我该用自动 vacuum, 这样不用复制数据倒是快很多
    itskingname
    itskingname
    Feb 24, 2021
    9
    @QBugHunter 1-10 亿级别都没有性能瓶颈。如果只是读的时候,已经可以吊打 MySQL 了。
    systemcall
    systemcall
    Feb 24, 2021 via Android
    10
    @bthulu 几百 G,当然是用 M1 搞定
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   2166 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 36ms · UTC 12:48 · PVG 20:48 · LAX 04:48 · JFK 07:48
    ♥ Do have faith in what you're doing.