CoronaZero
V2EX  ›  数据库

对于一个新的个人项目,你会如何选择数据库(MariaDB/MySQL/PostgreSQL)?

  •  
  •   CoronaZero · Apr 29, 2024 · 7192 views
    This topic created in 921 days ago, the information mentioned may be changed or developed.

    请将讨论范围限定于 MariaDB/MySQL/PostgreSQL 这三者之间,并假设此项目对数据库有一定的性能要求? 如何权衡性能与成本(包括服务器成本、学习成本与后期维护成本)来进行选择呢?

    78 replies  •  2025-08-19 23:03:32 +08:00
    xarthur
    xarthur
    Apr 29, 2024 via iPhone❤️25
    1
    先用 Sqlite ,如 Sqlite 不够用在用 PostgreSQL
    exguai
    exguai
    Apr 29, 2024
    2
    我是喜欢 mysql
    timethinker
    timethinker
    Apr 29, 2024❤️5
    3
    既然是个人项目,从严谨程度上来讲可以随意一些,没有必要在这个上面耗费太多的时间,与其在一开始考虑太多,倒不如多学习一下表结构设计相关的知识。

    不过当你提到性能相关问题的时候,严谨的来说基准测试才是唯一的答案。如果你没有任何数据库相关的经验,我更推荐 MySQL ,它容易学习,相比 PostgreSQL ,虽然没有那么多复杂特性,但是久经考验,足以应付常见的需求,最重要的是,它使用人群足够多,你能遇到的任何问题,基本上在网上都能找到相关的问答,从维护成本上来看,更多的资料也就意味着更快的解决效率。
    Aiurvia
    Aiurvia
    Apr 29, 2024❤️2
    4
    SurrealDB
    pandaidea
    pandaidea
    Apr 29, 2024 via iPhone
    5
    PostgreSQL
    qfdk
    qfdk
    PRO
    Apr 29, 2024❤️1
    6
    问题是 都是关系型数据库... 那就选个自己熟悉的. 如果都不熟悉,就百度搜一下,看看哪一个讨论的人多就好了
    yidinghe
    yidinghe
    PRO
    Apr 29, 2024 via Android
    7
    前面提到 SurrealDB 的请注意了,它不是一个关系数据库。
    shallyy
    shallyy
    Apr 29, 2024 via iPhone
    8
    单纯使用建议 MySQL
    二次开发产品可以考虑 PG
    很多国产数据库都是基于这两种数据库开发的
    QingXuJiaZhi
    QingXuJiaZhi
    Apr 29, 2024❤️1
    9
    个人项目为什么不用 Sqlite ?
    paranoiagu
    paranoiagu
    Apr 29, 2024 via Android
    10
    pg ,后续换信创方便
    chendy
    chendy
    Apr 29, 2024
    11
    个人项目我选择 MongoDB
    因为做不了多大,文档数据库一把梭完全够用
    macaodoll
    macaodoll
    Apr 29, 2024 via Android
    12
    首选 PostgreSQL
    wssy001
    wssy001
    Apr 29, 2024
    13
    首选 mysql 它教程多,学习成本比较低,后期维护也比较方便
    数据库性能更多地取决于服务器硬件与你的 SQL 水平,再不济,可以用 Redis 缓解 前提是你个人项目数据量能到 1kw+,但我觉得个人项目不需要考虑数据库性能
    dayeye2006199
    dayeye2006199
    Apr 29, 2024
    14
    postgres ,还有功能比这个更多的吗?
    你当 noSQL 都能使,向量数据库也行,全文搜索也行

    在你变成成功公司前,你甚至只需要这个数据库
    Ackvincent
    Ackvincent
    Apr 29, 2024
    15
    PGSQL YYDS ,
    zhy0216
    zhy0216
    Apr 29, 2024 via Android
    16
    postgres 拓展好很多
    无论之后是玩时序,向量还是分布式都有选择
    daysv
    daysv
    Apr 29, 2024
    17
    sqlite yyds ,啥时候不用了, 那你大概也发家了
    shinession
    shinession
    Apr 29, 2024
    18
    pg +1
    adimn
    adimn
    Apr 29, 2024
    19
    sqlite 赞一个, 轻松便捷
    encro
    encro
    Apr 29, 2024
    20
    PostgreSQL 就挺好的,
    装个插件就成了分析型数据库,
    还可以物化视图。
    jinker
    jinker
    Apr 29, 2024
    21
    sqlite 太容易嵌入了,规模大了再考虑其他的吧。
    yy77
    yy77
    Apr 29, 2024
    22
    个人用本地开发的推荐一个 duckdb 。和 sqlite 很类似,多了不少方便的数据导入导出功能。

    如果仅限楼主提的这 3 个,还是 mysql 吧。云服务商里 mysql 的实例也是相对最便宜的。出版、电子书等也较多。
    rahuahua
    rahuahua
    Apr 29, 2024
    23
    首先选你最熟悉的,其次是更多人熟悉的
    hnliuzesen
    hnliuzesen
    Apr 29, 2024
    24
    推荐一个 supabase 的 免费 pg ,省得装了,方便尝试。
    其实不用各种数据库的高级特性,SQL 都是兼容的,而且现在有了 LLM ,就算一些 SQL 用了特殊的关键字,也能很方便的翻译到其他数据库。
    debuggerx
    debuggerx
    Apr 29, 2024❤️2
    25
    MySQL 简单稳定可能是国内那帮搞互联网的说的最大的谎言。
    MySQL 看上去简单,实际上限制和坑比 PG 多不少,简单写个 demo 随便跑跑可能还体验不出区别,稍微做点像样的项目差距就出来了。MySQL 一大堆的文章和中间件方案,很多都是因为自身的缺陷和问题产生的,其实只要耐着性子把文档看完,学习使用 PG 所要花的精力并不会比学 MySQL 然后各种避坑花的精力多,使用过程中也更加自由,不会多写两个 join 就要担心会不会性能下降。
    uniquecolesmith
    uniquecolesmith
    Apr 29, 2024
    26
    不用犹豫,选 PG - 正确的选择,未来你会感谢 v 友
    coolcfan
    coolcfan
    Apr 29, 2024❤️1
    27
    性能方面得按照你们自己的业务去做基准测试。

    如果测试用的数据是生成的,要小心。我曾经遇到过一个问题,就是在我们的测试数据上,有个查询直接让 MySQL 的 CPU 占用冲到 90%多,但在 PostgreSQL 上就不会(小于 10%)。后来发现是因为我们的测试数据生成的太差,导致这个表上所有跟该查询沾边的索引都无法过滤掉任何行(也就是说查询会返回整个表),在这个情况下,MySQL 的优化器尝试的索引查询就变成了累赘……然而这种极端的数据在真实世界基本不会存在……
    iOCZS
    iOCZS
    Apr 29, 2024
    28
    论性能,据说还是微软的强。但是偶尔 CPU100%
    displayabc
    displayabc
    Apr 29, 2024
    29
    看你对数据库的定义是什么,如果定义就是简单存取,推荐 MySQL
    CoronaZero
    CoronaZero
    OP
    Apr 29, 2024
    30
    @iOCZS #28
    是的,微软的技术力倒是没的说,但是免费版本似乎有核心数限制和单表大小限制?
    对于个人项目来说感觉确实好贵
    x86
    x86
    Apr 29, 2024
    31
    mysql 吧,先建立起来再说性能
    PS:有些人建个 blog 个位数 ip 就考虑主机性能线路各种优化,/??/
    horizon
    horizon
    Apr 29, 2024
    32
    PostgreSQL
    Mithril
    Mithril
    Apr 29, 2024
    33
    最近几年的趋势就是,当你不知道选什么的时候,就选 Postgres 。除非你有特定理由,要换 MySQL 或者其他的什么东西,不然直接无脑 pg 。

    当然个人项目肯定优先 SQLite 。而且当你想拿出去打包卖拷贝的时候,MySQL 那 License 也是麻烦。
    0o0O0o0O0o
    0o0O0o0O0o
    Apr 29, 2024
    34
    PostgreSQL
    Mithril
    Mithril
    Apr 29, 2024
    35
    @CoronaZero 4 核心,单库 10GB 。
    一般来说当你的个人项目超过这个数据量的时候,你也应该考虑付费了。
    gimp
    gimp
    Apr 29, 2024
    36
    PostgreSQL
    Philippa
    Philippa
    Apr 29, 2024❤️1
    37
    简单实用 mysql 和 postgres 没区别,起个 k8s/k3s 环境(几分钟)然后安装任意一个数据库都是几分钟内解决了。这么一弄,sqlite 的便利性对比起来其实没啥优势。另外 mysql 和 postgres 有网络连接,比 sqlite 复制文件方便多了。如果真的上线,postgres 和 mysql 配置好直接用,sqlite 还得迁移回 mysql 和 postgres ,这些细细碎碎的杂活反倒比较花时间。

    综合来说选 postgres 。
    CoronaZero
    CoronaZero
    OP
    Apr 29, 2024
    38
    @Mithril #35
    这倒是没错,不过上次看到别人一个项目把图片 Excel 表格 word 文档等等等等都直接用 MySQL 存储二进制...
    感觉这样的话似乎很容易就会突破单库大小限制.(当然我肯定不会这么用数据库就是了)
    Mithril
    Mithril
    Apr 29, 2024
    39
    @CoronaZero 确实是有这种做法,优点就是你当你需要存文件的时候,不需要关心数据库记录和文件存储是否能对的上,是否需要做 hash 验证。同时只要能 commit ,那你这文件就算存上了。

    但缺点也很明显,就是数据库文件本身会变得非常的大。但多数允许你把文件存进来的数据库,你存一堆文件也不会影响性能。

    只要能搞定备份,那你直接把文件也存进去还是很方便的。
    yekern
    yekern
    Apr 29, 2024❤️1
    40
    个人项目 首先服务器资源就没有那么多, PG 比 MYSQL 资源占用要少,尤其是 MYSQL8.0 以后 是内存大户 ,而且两个使用起来也没啥太大差别 不管是 Docker 还是源安装也都很简单, 建议 PG
    jeesk
    jeesk
    Apr 29, 2024
    41
    可能是我写 java 太多, 这种 数据层喜欢用接口来做,至于 数据源真的无所谓.
    hello2090
    hello2090
    Apr 29, 2024
    42
    盈利 10 万以下 MySQL
    10 万-1000 万 MariaDB
    1000 万以上 PostgreSQL
    13240284671
    13240284671
    Apr 29, 2024
    43
    mysql
    key0323
    key0323
    Apr 29, 2024
    44
    @Mithril #33 请问这个趋势是在哪看到的,不是质疑,只是提问哈
    lujiaxing
    lujiaxing
    Apr 29, 2024
    45
    看你什么类型的项目. 个人项目也分类型, 你得说清楚你是做什么.
    一般个人项目的规模你说有性能要求, 能有什么性能要求... 一天能有 100 个访问量么?

    如果只是博客或者类似的比较简单简易的产品, MySQL / MariaDB 就足够了. 记得不要把表设计的太复杂. 越简单越好. 最好拿 MySQL 当硬盘版 Redis 用...

    如果功能比较复杂, 比如进销存之类的系统, 或者电商, 推荐用 PostgreSQL. 如果你不想稍微复杂点的查询就要上 ES 的话, 就别用 MySQL / MariaDB.
    changdy
    changdy
    Apr 29, 2024
    46
    想简单省事..直接用 mysql
    毕竟什么样的 sql 都能执行..
    如果你有点追求..有点想法 .. 就用 pg....


    是在想不开 想拯救世界 就用 mariadb.
    asuraa
    asuraa
    Apr 29, 2024
    47
    个人项目统统 mysql 无他遇到问题各种文档可以快速修复好
    adoal
    adoal
    Apr 29, 2024
    48
    趁着你还是初学者,用 pg ,培养严谨的好习惯,养成技术品位。
    Pierro
    Pierro
    Apr 29, 2024
    49
    H2 or Sqlite
    wuwuta170
    wuwuta170
    Apr 29, 2024
    50
    我也是在用 sqlite 但发现更新代码的时候 把数据库都更新了。。
    xiaocaiji111
    xiaocaiji111
    Apr 29, 2024
    51
    资料多的,烂大街的,用起来比较好
    tyrad
    tyrad
    Apr 29, 2024
    52
    sqlite 0 成本迁移
    kakki
    kakki
    Apr 29, 2024
    53
    无脑 PG
    L5tEU4WX072p5P42
    L5tEU4WX072p5P42
    Apr 29, 2024 via Android
    54
    建议 sqlite ,就个人网站的那点访问量,sqlite 很轻松,
    而且 sqlite 占用内存小,网站不想要了就带着一个 db 文件跑路.

    https://m.okjike.com/originalPosts/5d08f1c41089930018730223
    forvvvv123
    forvvvv123
    Apr 29, 2024
    55
    sqlite
    care
    care
    Apr 29, 2024
    56
    @adoal 请问下有啥比较好的书籍或者教程可以帮忙推荐吗?
    unclemcz
    unclemcz
    Apr 29, 2024 via Android
    57
    个人项目的话首先考虑成本低的,自己搭建的话我会选 sqlite ,云上会选择 mysql ,纯粹是因为比较便宜,至于性能问题,碰到性能瓶颈的时候再考虑,而且大概率是自己的代码质量有问题,如果一个个人项目把主流数据库被用到性能瓶颈,我估计会每天梦中笑醒。
    Mithril
    Mithril
    Apr 29, 2024
    58
    @key0323 个人体验。
    前段时间在做选型调查的时候发现的。这俩数据库的历史都很长,你要是不限定时间,搜到的东西都非常多,而且大多都是过期的无效内容。
    只看最近几年内容的话,问答类的比如 reddit, hn 的 comment 或者 so 上,推荐的比较多的都是 postgres 。包括我前面说的那句“不确定选啥就无脑 pg”也是之前在 reddit 上看的。
    但数据库这东西你基本上不会换,比如创业就用 LAMP ,后续大概率也是 MySQL 。而且互联网企业用不着关心 GPL 的问题。但还有大量需要部署在客户那边的系统,这 License 就可能让法务合规找你麻烦。

    另外还有个人倾向问题,之前看 hn 的帖子有人也说,他之所以推荐用 mysql ,就是因为 mysql 坑多。他自己有经验积累,知道怎么避坑。这样用的人越多,他就越不会失业。
    当然这也只是那个人的理由,也不是每个推荐 MySQL 的都这么想。

    总而言之,你可以搜一下最近几年的讨论,和十年前无脑推 MySQL 的差的还是很多的。
    adoal
    adoal
    Apr 29, 2024
    59
    @care

    有空可以看看两本老书:《 SQL 沉思录》、《 SQL 反模式》。
    clickclick
    clickclick
    Apr 29, 2024 via iPhone
    60
    就凭它一堆不遵守 sql 标准的怪语法,请避免使用
    clickclick
    clickclick
    Apr 29, 2024 via iPhone
    61
    @OliverDD mysql ,忘记打了
    qviqvi
    qviqvi
    Apr 29, 2024
    62
    会哪个用哪个,都不会则 postgre ,毕竟是三者中最受欢迎且性能最好且功能最强大的。其余两个会一个另一个也差不多会了,好像 mariadb 性能稍微好一点
    L5tEU4WX072p5P42
    L5tEU4WX072p5P42
    Apr 29, 2024 via Android
    63
    麻烦题主说说最后选了哪款数据库,谢谢
    ericguo
    ericguo
    Apr 29, 2024
    64
    PG ,现在( 2024 年)还要考虑其他数据库? PG 通过插件化的体系结构,还有赶上 AI 的向量数据库,前几天 MariaDB 的高级开发人员都跑过来做 PG 的 MySQL 兼容模式了。
    Lixiaobai233
    Lixiaobai233
    Apr 29, 2024
    65
    我会选 MySQL ,可能也是用惯了
    FightPig
    FightPig
    Apr 29, 2024
    66
    用了好多年 pg
    ihciah
    ihciah
    Apr 29, 2024
    67
    单机的话 sqlite 就行,通常你用的 sdk 会支持多种数据库实现,所以不够用了再迁移起来也蛮方便。
    ShuWei
    ShuWei
    Apr 29, 2024
    68
    单一节点项目,够用的情况下,sqlite 方便,优先考虑,其次考虑 pg
    CoronaZero
    CoronaZero
    OP
    Apr 29, 2024
    69
    @Mogamigawa #63
    postgreSQL 吧,感觉这个推荐的人很多?
    会提这个问题是因为最近在维护一个用了 MySQL 数据库的项目,版本还挺老,所以就来 V 站提问一下,顺便方便我自己以后的技术方向选择.
    CoronaZero
    CoronaZero
    OP
    Apr 29, 2024
    70
    @ericguo #64 这倒是,不过老项目挺多用 MySQL 的...维护起来的话也要了解一些 MySQL 方面的知识
    nm1st
    nm1st
    Apr 30, 2024
    71
    nightsky
    nightsky
    Apr 30, 2024
    72
    我们用.NET 的基本上不挑数据库,基本上 ORM 都支持无缝切换各种主流数据库。
    如果是我,前期会用 MySQL ,后期如果赚到钱了,就用 sql server
    CoronaZero
    CoronaZero
    OP
    Apr 30, 2024 via Android
    73
    @nightsky #72 .net 的话,是用 EF core 嘛?我这阵子在学习 .net ,感觉是个很强大的平台
    nightsky
    nightsky
    Apr 30, 2024
    74
    @CoronaZero #73 EF Core ,Freesql 之类的,基本都是可以无缝切换数据库
    flmn
    flmn
    May 5, 2024
    75
    PostgreSQL
    likeman
    likeman
    May 12, 2024 via Android❤️1
    76
    一步到位,直接 pg ,熟悉新特性,并且数据量没达到大数量的千万级,pg 自带的 memory 缓存都够了,不用上 redis
    psyer
    psyer
    May 12, 2024 via Android
    77
    跑个题,我司几千万级别的数据都在使用 MySQL😅 查询起来无敌慢,感觉从语句来讲没地方优化了,而且还是单一节点,经常出故障被客户投诉,不知道有的领导🧠怎么想的🤦‍♂️
    vitality
    vitality
    Aug 19, 2025
    78
    pg ,如果足够轻量/需要本地数据库,那就 SQLite/Turso
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   2278 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 139ms · UTC 12:18 · PVG 20:18 · LAX 04:18 · JFK 07:18
    ♥ Do have faith in what you're doing.