V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
youla
V2EX  ›  程序员

超低访问量的小站用 sqlite 还是 mysql?存储数据占用的空间是一样的吗?主要以存图片为主。

  •  1
     
  •   youla · Dec 25, 2020 · 11155 views
    This topic created in 1957 days ago, the information mentioned may be changed or developed.

    如题~

    Supplement 1  ·  Dec 25, 2020

    数据库就是准备存图片的,没其他东西存。

    Supplement 2  ·  Dec 25, 2020

    心累!!我不需要增量同步!!

    就是存一些自己的照片

    备份我就下载sqlite.db或mysql data打包,不嫌麻烦

    我只是想问问存mysql和sqlite哪个好点

    数据量一点也不大。。

    Supplement 3  ·  Dec 25, 2020
    @xchaoinfo 我不存海量,就是自己的照片~~~不超过 1k 吧
    Supplement 4  ·  Dec 25, 2020

    没有在使用数据库的时候,断电会有影响?

    不至于吧?mysql我不清楚,sqlite不就是个文件吗?

    懵懵懂懂...啥也不懂~~~

    思来想去还是存sqlite吧,代码都写好了~<del>看运气吧</del>

    一开始主要是纠结存储后mysql 和 sqlite占用磁盘的大小~~

    Supplement 5  ·  Dec 25, 2020

    纳闷了,我不是在写大项目,就是自己存着玩,我一开始提问,也就是想知道

    存sqlite 和 mysql 哪个比较省空间,做公司项目肯定是数据库存文件路径。

    可我现在只是想自己玩一玩啊

    Supplement 6  ·  Dec 25, 2020

    你要干什么,根本不会妨碍到别人,别人还不让你干,还说是为你好,你却不听。

    好熟悉的画面

    Supplement 7  ·  Dec 25, 2020
    @icyalala 我发帖问的是 超低访问量的小站用 sqlite 还是 mysql ?存储数据占用的空间是一样的吗?
    Supplement 8  ·  Dec 25, 2020

    超低访问量的小站用 sqlite 还是 mysql?存储数据占用的空间是一样的吗?

    如果觉得这样存不对,这个提问就很傻,可以不回答

    干嘛阴阳怪气的呢???

    Supplement 9  ·  Dec 25, 2020

    不一个个回了,看来目前比较科学的方式还是zip add~~

    等会下午摸鱼时再比较下占用磁盘的情况。。

    完结

    Supplement 10  ·  Dec 25, 2020

    最后再说一句吧,那些说别人给我建议我不听,章口就莱的

    我不知道是眼瞎还是怎么了?

    我前两个帖子,都是选了网友的建议啊。

    1.zeptojs+puress,我认为我能够用得上的,能尽快完成我的任务的

    2.xx虚拟主机,看到网友回复,一想到也有朋友用过,之前也有一些了解,所以买了。

    答非所问我真是很崩溃,就拿这个虚拟主机来说,我说我要买php虚拟主机。

    xx:买云服务器啊、github pages

    103 replies    2020-12-25 20:31:18 +08:00
    1  2  
    sunziren
        1
    sunziren  
       Dec 25, 2020
    mysql 可以存图片吗
    jevonszmx
        2
    jevonszmx  
       Dec 25, 2020
    图片\CSS\JS 等静态资源,一般不存数据库,所以和 sqlite 和 mysql 没关系,可以考虑七牛云,CDN 免费有 10 个 G 的流量,超低访问量应该够的
    youla
        3
    youla  
    OP
       Dec 25, 2020
    @jevonszmx 我准备 mediumblob 存到数据库
    @sunziren
    laminux29
        4
    laminux29  
       Dec 25, 2020
    单机 sqlite 性能比 mysql 高的多,但日后你们要考虑扩容的话,前期选 sqlite 就是饮鸩止渴,这种情况建议选 mysql 走 isam 引擎。
    xyooyx
        5
    xyooyx  
       Dec 25, 2020
    文件存服务器磁盘,存储地址索引在数据库,程序内做热点文件缓存
    young1lin
        6
    young1lin  
       Dec 25, 2020
    七牛云有非常多的限制
    youla
        7
    youla  
    OP
       Dec 25, 2020
    @laminux29 好的,谢谢
    @lqw3030 主要是保存一些照片,所以想存数据库,方便备份!
    supuwoerc
        8
    supuwoerc  
       Dec 25, 2020
    图片入库那就得 blob 这种的吧,还是 mysql 吧,踩坑了也能找到抢救方案
    nekoneko
        9
    nekoneko  
       Dec 25, 2020
    图片找个对象存储,数据库可以用 H2
    love
        10
    love  
       Dec 25, 2020 via Android   ❤️ 1
    存数据库方便备份文件😂,你是怎么产生这种错觉的。 而且另外一大堆小文件存一个数据库,要备份就只能一起备份了吧,rsync 都不行。web 访问的效率也更低。
    cp19890714
        11
    cp19890714  
       Dec 25, 2020
    什么图片, 为何要存数据库?
    如果是为了方便备份, 那么云存储更方便.
    0bit
        12
    0bit  
       Dec 25, 2020
    图片别存数据库
    超小站用 SQLite 其实也可以,后期大了再迁移
    encro
        13
    encro  
       Dec 25, 2020
    @laminux29

    这时候还推荐老引擎?喜欢停电重启后手动修复数据库?
    youla
        14
    youla  
    OP
       Dec 25, 2020
    @love 难道存到硬盘就好备份了?
    spacebound
        15
    spacebound  
       Dec 25, 2020
    mysql 后期也方便扩展
    图片找个对象存储或者直接静态资源,不建议存数据库
    privil
        16
    privil  
       Dec 25, 2020
    @youla #14 增量同步,每次同步只需要传输增量部分,搞到数据库里面就不行了。
    NotFoundEgg
        17
    NotFoundEgg  
       Dec 25, 2020   ❤️ 1
    文件入库一时爽 后期维护火葬场
    youla
        18
    youla  
    OP
       Dec 25, 2020
    @NotFoundEgg 你太高估我的数据量了~我又不是做图床
    rekulas
        19
    rekulas  
       Dec 25, 2020
    @laminux29 "单机 sqlite 性能比 mysql 高" 从何而来
    cheng6563
        20
    cheng6563  
       Dec 25, 2020
    @laminux29 mysql 也多机不了
    julyclyde
        21
    julyclyde  
       Dec 25, 2020
    @love 这种错觉显然是拿着锤子看啥都像钉子导致的
    lawler
        22
    lawler  
       Dec 25, 2020
    sqlite 单库不要超 2G
    zliea
        23
    zliea  
       Dec 25, 2020
    minio?
    liningit
        24
    liningit  
       Dec 25, 2020
    图片还是直接存磁盘吧,数据库就放个文件地址就可以了
    wjhjd163
        25
    wjhjd163  
       Dec 25, 2020 via Android
    头铁就文件入库...
    看你之前帖子中有谈到虚拟主机问题?
    如果是准备用虚拟主机中的共享数据库,那个文件入库更是火葬场...
    虽然虚拟主机的数据库空间可能比分配的文件空间大点儿,但文件入库还是不太明智
    还是建议用对象存储
    Juszoe
        26
    Juszoe  
       Dec 25, 2020 via Android   ❤️ 3
    对于图片,文件系统就是最好的数据库,没必要再加一层 sqlite
    Macv1994
        27
    Macv1994  
       Dec 25, 2020
    个人建议图片最好别入库,之前在上一家公司做的项目也是图片入库,那维护真的想死,果断跑路了..
    chendy
        28
    chendy  
       Dec 25, 2020
    图片入过 mysql 也入过 mongodb 的表示
    老老实实弄个 oss,再入库我就是**
    securityCoding
        29
    securityCoding  
       Dec 25, 2020
    方向错了吧? 文件用对象存储 ,数据库可以存在 key 索引
    boluo
        30
    boluo  
       Dec 25, 2020
    图片为啥要进数据库啊。。。给自己以后挖坑么
    USAA
        31
    USAA  
       Dec 25, 2020   ❤️ 1
    数据库就存个图片路径不就行了
    图片放服务器里啊
    opengps
        32
    opengps  
       Dec 25, 2020
    你这个需求,需要动态吗?
    不需要的话, 阿里云 oss,七牛云 oss,腾讯云 cos,华为云 oss,百度云 obs,都是适合你的产品,流量小基本可以计费等于 0 。以防万一,你可以套一层 cdn 避免 被刷流量
    keepeye
        33
    keepeye  
       Dec 25, 2020   ❤️ 1
    /
    -- /files
    -- db.sqlite3
    -- server.exe

    这样不行嘛?备份的时候整个文件夹打包就行了,非要把文件塞数据库做什么...
    tabris17
        34
    tabris17  
       Dec 25, 2020
    SQLite 数据库文件大小的上限是 140TB 。几十 GB,如果有索引的话性能也还是可以的,问题应该不大
    xchaoinfo
        35
    xchaoinfo  
       Dec 25, 2020
    https://www.v2ex.com/t/678233 这个是不是对你场景有帮助, 我之前也有类似的需求, 需要存储海量的图片
    youla
        36
    youla  
    OP
       Dec 25, 2020
    @keepeye 还有存数据库不容易被发现~万一别人看见你放这么多自己的图片在硬盘,不是显得很自恋
    hd2ex
        37
    hd2ex  
       Dec 25, 2020
    既然是小站,所以可以忽略性能差异,那就选择扩展性更强的 mysql 吧,万一不小心变成大站呢。
    icyalala
        38
    icyalala  
       Dec 25, 2020
    都不嫌麻烦了,那还不存文件,非要存数据库。。
    问题是数据库损坏的可能性远比文件系统要大得多,一旦损坏你就要哭了。
    laminux29
        39
    laminux29  
       Dec 25, 2020
    @rekulas 功能不同、驱动连接方式不一样。这些细节都写在 sqlite 文档里了,你也可以去找找性能测评。
    laminux29
        40
    laminux29  
       Dec 25, 2020
    @cheng6563 mysql 有集群版本。
    keepeye
        41
    keepeye  
       Dec 25, 2020
    @youla 你这不是服务器么,谁会去你服务器上看,你手机会给别人看么
    imgbed
        42
    imgbed  
       Dec 25, 2020 via Android
    图片可以存硬盘,路径在数据库里对应。写少读多的,可以 sqlite,后续大了再转 mysql 不迟
    keepeye
        43
    keepeye  
       Dec 25, 2020
    存 sqlite 吧 反正量也不大 能满足
    Keyes
        44
    Keyes  
       Dec 25, 2020
    @youla 直接放 filesystem,数据库存图片后果,唉一言难尽
    laminux29
        45
    laminux29  
       Dec 25, 2020
    @encro 其他数据库停电后自动修复,你放心?
    Keyes
        46
    Keyes  
       Dec 25, 2020
    非要 mysql vs sqlite 二选一,还是 mysql 吧
    podel
        47
    podel  
       Dec 25, 2020
    数据库的作用是快速所有索引,外键关联等。 不是专门用来存储大容量的二进制数据的。 你那个设计,最好是把文件名放在数据库里面。file 单独放在文件系统里面。
    youla
        48
    youla  
    OP
       Dec 25, 2020
    直接存文件系统和 sqlite 应该差不多吧?其实我是想把 sqlite 当压缩包用~~会被打吗
    debuggerx
        49
    debuggerx  
       Dec 25, 2020   ❤️ 3
    看了楼主最近几个帖子,明显是被视野限制了思维,虽然是在提问但是又不接受别人给出超出自己认知的建议,no medicine to save……
    wtks1
        50
    wtks1  
       Dec 25, 2020 via Android
    sqlite 无法并发写入....
    jevonszmx
        51
    jevonszmx  
       Dec 25, 2020
    @debuggerx 我后悔自己的回复了,楼主就是那种别人给很好的建议,就是不听,不是来刷流量的,就是,哎,多说浪费自己生命。
    youla
        52
    youla  
    OP
       Dec 25, 2020
    @jevonszmx 我把自己照片存 cdn,那不浪费别人资源吗,免费就能随便玩吗。
    youla
        53
    youla  
    OP
       Dec 25, 2020
    @wtks1 我一个人的东西要什么并发!!
    @debuggerx 可能有一些限制,不过你都说了是建议,不是强制!
    guanhui07
        54
    guanhui07  
       Dec 25, 2020
    放云存储好
    youla
        55
    youla  
    OP
       Dec 25, 2020
    @debuggerx 顺便再补充一下,虽然我可能被视野限制了思维,但这么多人明显就是被技术限制了思维啊,而且我一开始提问就明确了,我是要存数据库的,自己玩的项目而已。
    westoy
        56
    westoy  
       Dec 25, 2020
    同样存在一个文件里...
    可以存 kv 库, 比如 leveldb 、tokyo tyrant, 甚至以后可以上各种基于这些 k-v 库的 replication 系统
    也可以 dd 一个块文件, 格成 fs 系统, 要备份就 dd 出来 gzip 一下
    为啥想不开要存 sql db 里......而且 mysql 要备份很明显不止一个文件.....
    xyshmily
        57
    xyshmily  
       Dec 25, 2020
    minio
    icyalala
        58
    icyalala  
       Dec 25, 2020   ❤️ 3
    既然只想自己玩,又不愿意听别人的建议,那发帖子的意义是什么。。
    0bit
        59
    0bit  
       Dec 25, 2020   ❤️ 4
    @youla 我觉得大家不是被限制了思维,只是单纯的不希望有人去吃某种不该吃的东西,过来劝两句而已
    youla
        60
    youla  
    OP
       Dec 25, 2020
    @westoy 因为是虚拟主机,这些都不支持
    0bit
        61
    0bit  
       Dec 25, 2020
    真想吃,谁也拦不住不是🤷‍♂️
    youla
        62
    youla  
    OP
       Dec 25, 2020
    @0bit 你看看,张口闭口就开始指桑骂槐,证明自己的观点是正确的,却拿不出什么实际证据。
    KagurazakaNyaa
        63
    KagurazakaNyaa  
       Dec 25, 2020
    非要存文件到数据库,建议用 mongo 的 gridfs
    0bit
        64
    0bit  
       Dec 25, 2020
    @youla 没必要,大家都挺忙的,劝一句不听就算了,各自安好呗
    youla
        65
    youla  
    OP
       Dec 25, 2020
    @XiLingHost 这个新知识,学习了,可以!!
    takemeaway
        66
    takemeaway  
       Dec 25, 2020
    mysql base64 存。 没问题的
    zjttfs
        67
    zjttfs  
       Dec 25, 2020
    mysql 吧, 量小也要考虑出问题下可恢复

    如果你不想文件以图片的形式保存在服务器,
    你可以代码加密(可逆)的方式存储成任意文件,需要读取的时候在解密就好了.
    数据库存路径,原始信息
    oott123
        68
    oott123  
       Dec 25, 2020   ❤️ 4
    是这样的,你想做事情 X,然后你觉得 Y 是做事情 X 的最好方法,所以你发帖来问如何更好地做 Y 。这个现象通常被称为“XY Problem”(参考: https://coolshell.cn/articles/10804.html

    换到你的需求来说,我猜就是(可能猜的不准):

    我要在只有 FTP 作为文件管理手段的虚拟主机上,使用 PHP 建设一个网站,用于存储少量的图片。我不希望把每张图片分别存储,因为这样如果需要备份,通过 FTP 下载会很慢。由于我的存储空间有限,所以希望选择空间占用小的方法。

    在这个问题下,你觉得使用 sqlite 或者 MySQL 是最理想的选择,但又拿不准哪个占用小,所以来发帖询问这个问题。但显然,无论是 sqlite 还是 MySQL 都不是为这个场景优化的,所以大家对你要做什么表示了疑惑。

    ---

    回答你一开始的问题,无论是 sqlite 还是 MySQL 在这种场景下的硬盘资源占用区别不会太大。

    不过如果我对你的需求理解没有错的话,我大概会选择存储文件,并且在我的 PHP 后台添加一个功能,点击之后把所有的图片文件打包成一个 zip,再通过 FTP 下载这个 zip 从而规避 FTP 下载大量文件缓慢的问题,同时又避免了把文件存到 sqlite 的风险(数据库错误导致所有图片同时丢失)。
    westoy
        69
    westoy  
       Dec 25, 2020
    @youla

    没得选就 sqlite 吧, 我是感觉折腾一下 levledb 应该能上

    虚拟主机文件存 mysql 大概没几天就会被 abuse 砍掉了......
    wtks1
        70
    wtks1  
       Dec 25, 2020 via Android
    @youla 如果你一个人只是单线程操作,那的确是不需要
    youla
        71
    youla  
    OP
       Dec 25, 2020
    @takemeaway 目前是 base64->gz 入库,所以用 blob 字段,测试了是可以有效压缩文件大小的,虽然有点呆。

    @zjttfs 主要是不想一堆文件,如果可以直接代码往压缩包里追加的话(还没试过),我还是愿意存到文件系统的,我现在存数据库也不是为了查询,就是保留,可能过了几个月、几年后再去看,那样...
    Thiece
        72
    Thiece  
       Dec 25, 2020
    @oott123 在社区里这种手段当目的的问题,多半是炸鱼
    oott123
        73
    oott123  
       Dec 25, 2020
    @Thiece 确实,我就是老忍不住我这回复的手,叹气
    youla
        74
    youla  
    OP
       Dec 25, 2020
    @oott123 这种回复看着就很舒服,有理有据,我之前也想过,不过不是存储完成后打包 zip,是直接 php 往 zip 里面追加,因为我其实并不需要“查询”功能,别问我为什么不用云盘,我也在用~~
    qiayue
        75
    qiayue  
    PRO
       Dec 25, 2020
    php 可以直接往一个 zip 文件里写入新文件
    kidlj
        76
    kidlj  
       Dec 25, 2020 via iPhone   ❤️ 9
    有两种人问的问题不值得浪费时间:

    一种是回答了看不到反馈的;一种是回答了完全不听的。
    youla
        77
    youla  
    OP
       Dec 25, 2020 via Android
    @kidlj 答非所问算不算呢???又不讲道理,就说这不行那不行。
    suotm
        78
    suotm  
       Dec 25, 2020
    好多 append 啊
    947211232
        79
    947211232  
       Dec 25, 2020
    超低访问量的小站 建议改为 自用的小站,如果自用的话 sqlite 确实够了
    eason1874
        80
    eason1874  
       Dec 25, 2020
    看到前面楼主坚持要二进制入库,我就猜是为了保密,后来果然看到了这个需求。

    考虑下 OneDrive 的个人保管库吧,安全和易用性共存,这地方放裸照都能安心的。
    JerryCha
        81
    JerryCha  
       Dec 25, 2020
    当然 mysql 啊,不然出去吹逼都没人听
    ashine
        82
    ashine  
       Dec 25, 2020
    sqlite 不支持并发,建议考虑做个 redis 缓存索引
    cs8425
        83
    cs8425  
       Dec 25, 2020
    很久以前做过一个自用的小档案保存平台, 全部直接入库 mysql, 不过那些档案最大不超过 100kB
    后果嘛... 除了后来要翻资料比较麻烦外, 其实也没啥后果, 吃灰还能怎样...

    如果需求是:
    1. 减少空间占用
    2. 不依靠外部服务
    3. 存放档案数量少, 方便备份
    那我会选择 index+单一大档
    一个档案(sql 啥的都好)存放偏移,长度,(UUID/档名)
    另一个大档案直接 append 要存的内容(要不要加密处理随你高兴)
    取出要取出某个档案就去 index 找出偏移跟长度
    再从那个大档里面拉出来就好
    备份就更简单了
    index 档+单一大档
    没了...


    @debuggerx #49, @0bit #59: 赞同你们的说法, 就是视野限制又铁头, 当作回给其他路过得人参考搂...
    charlie21
        84
    charlie21  
       Dec 25, 2020
    单文件嘛 sqlite 反正想导出也可以导出
    caoyouming
        85
    caoyouming  
       Dec 25, 2020
    LZ 这种应该就是图片直接存储在服务器上文件夹里面的吧,那数据库就是个记录文件名的,随便啥都行。主流 mysql 。占用的话,全存在服务器上文件多了肯定会慢了。
    namelosw
        86
    namelosw  
       Dec 25, 2020
    Sqlite 其实挺适合文件的. MySQL 没道理用, 放 MySQL 里会很影响性能

    想要特别简单的方案: 磁盘
    想要正常点的方案: S3 之类的
    想要折衷省事的方案: SQLite
    w950888
        87
    w950888  
       Dec 25, 2020
    Sqlite 挺好的,支持楼主,干就完了
    litchinn
        88
    litchinn  
       Dec 25, 2020
    图片量少用 FTP 或者直接 local,量大用 Minio 吧,然后 nginx 搞个代理,sqlite 存 metadata,mysql 最好咯
    ming7435
        89
    ming7435  
       Dec 25, 2020
    不超过 1K 也值得发个贴?
    lscexpress
        90
    lscexpress  
       Dec 25, 2020
    @sunziren mysql 可以存图片,兄 der 上课的时候是不是操作系统翘课了啊
    YvanGu
        91
    YvanGu  
       Dec 25, 2020
    当初干过这种事,php+sqlite 写的笔记本程序,附件图片啥的都存 sqlite 里,感觉还是蛮快的,对了,当时还搞了个加密,所有数据写入前加密,感觉一点都不慢呢(丢免费虚拟主机里)
    hanxiV2EX
        92
    hanxiV2EX  
       Dec 25, 2020 via Android
    为什么可以附言这么多,我的帖子只能 3 条
    youla
        93
    youla  
    OP
       Dec 25, 2020
    @hanxiV2EX 你很久没发过帖了吧?可能后面改了。
    hanxiV2EX
        94
    hanxiV2EX  
       Dec 25, 2020
    @youla 可能我被降权了吧,我新建的帖子只能附言 3 条。。。我猜的。。。
    youla
        95
    youla  
    OP
       Dec 25, 2020
    @hanxiV2EX 降权了不是没回复提示吗?我看你很正常啊。
    dark3212
        96
    dark3212  
       Dec 25, 2020
    数据量不大写入 mysql 问题也不大。
    唯一要考虑的就是定时备份,因为文件存磁盘时出现磁盘坏道损坏的只是几张图片,存数据库坏道有可能导致整个数据库挂了。
    youla
        97
    youla  
    OP
       Dec 25, 2020
    @dark3212 是固态硬盘,xixi
    hanxiV2EX
        98
    hanxiV2EX  
       Dec 25, 2020
    @youla 搜了下,是提示忘记改了,可以附言 10 条。
    byzf
        99
    byzf  
       Dec 25, 2020
    mysql 放本地,资源字段里存个 url,文件放本地 nginx 提供,不香吗。

    扩展的话,mysql 扔外部服务,文件扔 cdn,扩展到百万访问都无所谓,无缝衔接,甚至不用改代码。

    访问量不大的话感受不到 mysql 和 sqlite 的性能差距,而且反正 cpu 跑不满,mysql 多开销 100mb 内存,也是微乎其微。
    jimmyismagic
        100
    jimmyismagic  
       Dec 25, 2020
    我大三的时候写了个管理系统,头像就是存数据库的,哈哈,当时比较傻,但也不算傻,毕竟能在数据库存图像还是有点难度的
    1  2  
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   913 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 187ms · UTC 18:38 · PVG 02:38 · LAX 11:38 · JFK 14:38
    ♥ Do have faith in what you're doing.