drymonfidelia
V2EX  ›  数据库

为什么 MySQL 软件本体这么大, SQLite 能做到那么小?

  •  4
     
  •   drymonfidelia · Jan 25, 2024 · 8621 views
    This topic created in 1024 days ago, the information mentioned may be changed or developed.
    55 replies  •  2024-03-04 19:46:38 +08:00
    James369
    James369
    Jan 25, 2024❤️1
    1
    好比电脑和手机,飞机和航模
    wheat0r
    wheat0r
    Jan 25, 2024
    2
    还能这么比
    Thiece
    Thiece
    Jan 25, 2024
    3
    应为功能少,存储过程、触发器、数据分区、网络访问、复制功能、事务管理 SQLite 实现的怎么样
    thevita
    thevita
    Jan 25, 2024
    4
    微信最初的版本 大小 457KB
    现在的微信已经 奔着数百兆去了

    而他核心功能基本差不多
    kirory
    kirory
    Jan 25, 2024
    5
    需求不同
    SQLite 会跑在各种设备上,MySQL 不用这样
    imydou
    imydou
    Jan 26, 2024
    6
    先不说复杂的,sqlite 才几种数据类型
    drymonfidelia
    drymonfidelia
    OP
    Jan 26, 2024
    7
    需求是把数据库打包进客户端(好几张表数据量都过亿条),SQLite 加各种索引都撑不住,查询一次三分钟,只能考虑把 MySQL 打包进去,但是这东西也太大了
    786375312123
    786375312123
    Jan 26, 2024❤️2
    8
    数据库打包进客户端?什么客户端?
    什么样的奇才会想出来这种构架。
    acapla
    acapla
    Jan 26, 2024❤️1
    9
    让我想起了 GTA Online 开始的十分钟 for loop.
    dyv9
    dyv9
    Jan 26, 2024 via Android❤️6
    10
    好奇,啥都客户端做了,你的服务器在做啥?如果没有服务器你为啥叫它客户端
    bkmi
    bkmi
    Jan 26, 2024 via Android
    11
    多大的数据量,说实话几十 G 的微信聊天记录搜索都能秒搜,SQLite 已经足够强了(微信用的是修改版的 SQLite ,有开源,叫 WCDB )
    hefish
    hefish
    Jan 26, 2024
    12
    @dyv9 老哥的灵魂一问,问的有道理。。。
    mightybruce
    mightybruce
    Jan 26, 2024
    13
    mysql 打入客户端 操作太神奇,你要调研几种嵌入式数据库, 而不是打包 mysql
    比如 WCDB 、Firebird
    netnr
    netnr
    Jan 26, 2024 via Android❤️2
    14
    换 DuckDB
    bianhui
    bianhui
    Jan 26, 2024❤️1
    15
    @dyv9 ?客户端一定要有服务端?想当然了吧,客户端的字面定义也就是客户所使用的端。有没有其它端毫无关联。
    Worldispow
    Worldispow
    Jan 26, 2024 via Android
    16
    oracle:你在说什么?
    bianhui
    bianhui
    Jan 26, 2024❤️1
    17
    工业软件很多内网环境使用,没有服务端很正常,要求有数据检索数据存储功能也很正常。安装后启动一个 mysql 也很正常。你可以尝试 mysql 作为可选依赖性,用户配置,默认使 sqlite 看能不能分库。或者用一些比较小的数据库发行版
    opengps
    opengps
    Jan 26, 2024
    18
    SQLlite 面向文件,mysql 面向进程
    ltmst
    ltmst
    Jan 26, 2024
    19
    @drymonfidelia #7 你这种不是 sqlite 的问题,最简单的处理方式就是分库。多数据库文件,客户机上固态硬盘。
    ucando
    ucando
    Jan 26, 2024
    20
    好几个表都过亿条, 我想单单是库文件就不小了, 再加 mysql 那点大小又算啥?
    XXWHCA
    XXWHCA
    Jan 26, 2024
    21
    它都带上 lite 字样了
    wanguorui123
    wanguorui123
    Jan 26, 2024
    22
    SQLite 轻量,只保留核心功能。
    dcsite
    dcsite
    Jan 26, 2024❤️1
    23
    @ucando 只有你发现了问题的重点! OP 几亿条数据,几个 G 的数据库,还去关注 MySQL 的大小,岂不是有些搞笑
    nothingistrue
    nothingistrue
    Jan 26, 2024❤️1
    24
    @bianhui #15 你要是真客户,术语解释会明明白白的将其限制为 Client - Server 中的 Client 。你要是程序员,那无需文档定义,约定上 Client 指的就是 Client - Server 中的 Client 。
    helllkz
    helllkz
    Jan 26, 2024
    25
    你赵鹏什么的都在踢中卫,他踢么?踢不了,没这个能力,知道吧
    weijancc
    weijancc
    Jan 26, 2024
    26
    楼上说得对, 可以用 DuckDB
    qiyilai
    qiyilai
    Jan 26, 2024
    27
    也没必要打包到客户端里吧,单独安装也行吧
    lifei6671
    lifei6671
    Jan 26, 2024
    28
    @786375312123 这是很常见的应用呀。很多 IOS 或 Android 的应用用来缓存本地数据会用到 sqlite 呀。你去看看微信的客户端,底层很多数据也是 sqlite 缓存的。
    june4
    june4
    Jan 26, 2024
    29
    数据量和一条 sql 几分钟没什么关系,你这肯定全表扫描了,上 mysql 即使更快也有限。主要还是索引没弄好或者本身是全表统计。
    以前呆过一家做企业软件的,里面的开发人员完全不懂索引优化,sql 随便写对执行计划怎样根本没这个意识。
    cccer
    cccer
    Jan 26, 2024
    30
    分表做好,我 20 亿数据 SQLite 没索引也是秒查,既然打包到客户端就不用考虑高并发问题。
    sujin190
    sujin190
    Jan 26, 2024
    31
    这数据量如果客户端安装不能保证内存充足和 ssd ,估计换 mysql 也提升不了多少,不知道你的客户端安装环境怎样,ToB 的话其实客户端大个几百兆无所谓,ToC 的话安装环境估计也无法保证资源充足似乎你换啥都意义不大吧
    wswlaz
    wswlaz
    Jan 26, 2024
    32
    一个服务端,一个客户端...... 你觉得呢......
    agagega
    agagega
    Jan 26, 2024
    33
    除了部署在服务器上这种需要并发访问的情况 SQLite 不适合,SQLite 其实是个相当强大的数据库,不要因为名字就瞧不起它。如果是在客户端保存一些数据的场景,用 SQLite 的性能几乎一定比自定义各种乱七八糟的格式或者序列化到 JSON/XML 然后一股脑 fwrite 到硬盘更好。
    flynaj
    flynaj
    Jan 26, 2024
    34
    SQLite 名字就暗示它小,适合少量数据。只支持基本的 sql,没有复杂功能,普通用户最多接触到的就是 chrome 类 ll 浏览器用来存用户数据,比起 ini 文件.自定义的 dat 文件,性能,操作性更好。
    drymonfidelia
    drymonfidelia
    OP
    Jan 26, 2024
    35
    @ucando
    @dcsite 软件本体和数据库是分开分发的
    drymonfidelia
    drymonfidelia
    OP
    Jan 26, 2024
    36
    @flynaj chrome 只有已经废弃的 indexeddb 用的是 sqlite 吧?用自定义的 dat 文件还需要自己写索引、删除数据逻辑吧
    drymonfidelia
    drymonfidelia
    OP
    Jan 26, 2024
    37
    drymonfidelia
    drymonfidelia
    OP
    Jan 26, 2024
    38
    VeteranCat
    VeteranCat
    Jan 26, 2024
    39
    没有白占的空间,也没有白吃的内存。
    whyrookie
    whyrookie
    Jan 26, 2024
    40
    @786375312123 客户端带个本地数据库,离线使用不是很常见吗?
    pkoukk
    pkoukk
    Jan 26, 2024
    41
    @dyv9 服务端只管登录和授权校验啊,想一下那些需要联网验证的游戏。
    cyningxu
    cyningxu
    Jan 26, 2024
    42
    是我重未设想过的问题,为啥 X86 芯片这么难造,51 芯片却能造出来?
    shunia
    shunia
    Jan 26, 2024
    43
    哈哈哈哈哈。

    为什么飞机那么大,自行车这么小,都是交通工具,自行车跑三天都到不了,飞机三个小时就到了。只能考虑坐飞机了,但是这东西也太贵了。
    lbp0200
    lbp0200
    Jan 26, 2024
    44
    @netnr 换 DuckDB

    我觉得吧,楼主能问这个问题,应该搞不定 duckdb
    nodejsexpress
    nodejsexpress
    Jan 26, 2024
    45
    明白楼主的需求。很多时候是客户需求和环境限制。
    sqlite 主要问题是当你文件太大时,程序启动载入太慢了。
    客户端,客户频繁打开的话,很难受得了。
    以前搞过一个项目,本来还 ok 的,后面也换了 mysql 。但不用打入客户端里面,只是单机离线。
    james122333
    james122333
    Jan 26, 2024 via Android
    46
    @ucando 但毕竞文字可压缩
    james122333
    james122333
    Jan 26, 2024 via Android
    47
    客户端频繁打开? 那应该是小问题
    wxf666
    wxf666
    Jan 27, 2024
    48
    楼主,放下你的 表结构 和 SQL 出来看看?
    geniussoft
    geniussoft
    Jan 27, 2024 via iPhone
    49
    虽然但是,SQLite 查询性能还是可以的,除非你需要的是 Oracle
    iv8d
    iv8d
    Jan 27, 2024
    50
    筷子跟瑞士军刀的区别吧,孩子有功夫想想别的
    iv8d
    iv8d
    Jan 27, 2024
    51
    下一条你是不是要问,为什么 Oracle 那么大,MySQL 却能做到那么小?
    lvlongxiang199
    lvlongxiang199
    Jan 27, 2024
    52
    @James369 有啥相似性吗 ? 有哪些是 MySQL 能做到, 但 sqlite 做不到的 ?
    wxf666
    wxf666
    Jan 27, 2024
    53
    @nodejsexpress SQLite 数据库文件就算大到 1TB ,也没事啊?又不是启动就要读完它?
    flowerains
    flowerains
    Jan 29, 2024
    54
    好奇 wcdb 国内 App 用的多不多

    Firebird 我是知道的
    nodejsexpress
    nodejsexpress
    Mar 4, 2024
    55
    @wxf666 作为客户端,用户经常关闭,打开。。。 不是 web
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1008 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 112ms · UTC 22:42 · PVG 06:42 · LAX 14:42 · JFK 17:42
    ♥ Do have faith in what you're doing.