• 请不要在回答技术问题时复制粘贴 AI 生成的内容
youla
V2EX  ›  程序员

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

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

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

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

    如果你不想文件以图片的形式保存在服务器,
    你可以代码加密(可逆)的方式存储成任意文件,需要读取的时候在解密就好了.
    数据库存路径,原始信息
    oott123
    oott123
    Dec 25, 2020❤️4
    68
    是这样的,你想做事情 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
    westoy
    Dec 25, 2020
    69
    @youla

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

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

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

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

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

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


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

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

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

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