一个页面读 10 次硬盘 io 好,还是取 10 次 mysql 查询好? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
kmvan
V2EX    程序员

一个页面读 10 次硬盘 io 好,还是取 10 次 mysql 查询好?

  • /li>  
  •   kmvan 2014 年 12 月 31 日 5246 次点击
    这是一个创建于 4114 天前的主题,其中的信息可能已经有所发展或是发生改变。
    
    如果服务器没有 memcache 之类的内存数据库,那么程序将缓存数据存为硬盘文件。

    在一个页面中,有 10 个模块,每个模块都需要读取一次 mysql 来查询数据。如果将各个模块缓存,没有 memcache 的情况下,将得到缓存数据为 10 个的硬盘文件,这样就减轻了 mysql 压力了。

    But,这样做真的可以吗?磁盘 io 比起 mysql 谁更容易跑死?
    24 条回复    2015-01-01 02:49:17 +08:00
    huigeer
        1
    huigeer  
       2014 年 12 月 31 日
    mysql 的查询也是有缓存滴 一定要磁盘io, 建议ssd
    tczzjin
        2
    tczzjin  
       2014 年 12 月 31 日
    如果你的磁盘io和mysql都是跑在一个服务器的话那就是走mysql好,如果是不同服务器的话...
    既然你都有>=2的服务器了,再配台服务器专门弄缓存才是王道
    66CCFF
        3
    66CCFF  
       2014 年 12 月 31 日
    考虑ram cache?
    yanze0613
        4
    yanze0613  
       2014 年 12 月 31 日
    同样的查询,mysql也有缓存,看具体查询了
    9hills
        5
    9hills  
       2014 年 12 月 31 日
    你这个没法量化,比如MySQL查询是那种查询。10次IO又是多大的IO。。
    learnshare
        6
    learnshare  
       2014 年 12 月 31 日
    MySQL 也是存取文件,不过还有数据的缓存。当然,直接读硬盘的文件也很快。But 你不做测试,没法直接断言
    lincanbin
        8
    lincanbin  
       2014 年 12 月 31 日
    MySQL是有Cache的,近期的热数据会在内存的Cache里拿。
    如果你是说用文件作Cache的话,只有在数据库数据量特别巨大时,才有明显效果。
    typcn
        9
    typcn  
       2014 年 12 月 31 日
    我都是直接存成程序的变量 简单暴力有效

    var xxx;
    if(!xxx){
    xxx = mysql查询;
    }
    GtDzx
        10
    GtDzx  
       2014 年 12 月 31 日
    一般还是磁盘io更容易跑死吧
    akstrom
        11
    akstrom  
       2014 年 12 月 31 日
    shtml
    66450146
        12
    66450146  
       2014 年 12 月 31 日
    /dev/shm

    如果不用 ramdisk 的话妥妥的是 MySQL 啊
    zhicheng
        13
    zhicheng  
       2014 年 12 月 31 日
    简单回答: MySQL
    这个和文件系统,文件尺寸,IO 性能,服务器内存大小都有很大关系。
    bjzhush
        14
    bjzhush  
       2014 年 12 月 31 日
    你不知道innodb buffer pool嘛
    lhbc
        15
    lhbc  
       2014 年 12 月 31 日
    Linux 系统,读过一次的文件在内存里,如果内存足够的话
    数据库如果查询比较复杂,耗费计算资源还是比较多
    lyragosa
        16
    lyragosa  
       2014 年 12 月 31 日
    实践出真知

    我测试过 反复读100000次同一条sql文,和反复读硬盘上的一个文件,后者速度在我的机器上快很多。

    ssd,可能对其他应用不一定成立。所以自己测试才是王道。
    msg7086
        17
    msg7086  
       2014 年 12 月 31 日 via iPhone
    说得好像读磁盘文件一定会访问磁盘一样
    zhicheng
        18
    zhicheng  
       2014 年 12 月 31 日
    觉得读磁盘更快的同学,你们有没有考虑过一个问题,为什么大多数 Key/Value 数据库不是简单的把 Key 作为文件名 ,Value 作为内容按单个文件存储?
    yueyoum
        19
    yueyoum  
       2014 年 12 月 31 日
    @zhicheng 为什么呢?
    MozzieCN
        20
    MozzieCN  
       2014 年 12 月 31 日
    @yueyoum 因为文件是被缓存的,就算不会被缓存,按目前的文件系统来看,大文件基本上都是连续存储的.文件太小太多的话是随机存储,会增加磁头移动定位的时间.
    mqzhang
        21
    mqzhang  
       2014 年 12 月 31 日 via Android
    推荐用leveldb或者ssdb,速度快,数据放硬盘,内存占用小
    kaneg
        22
    kaneg  
       2014 年 12 月 31 日 via iPhone
    这要看你的sql查询耗时多少。举个极端的例子,每次查询耗时5秒,10次就得50秒,而如果只是从磁盘load一个结果,则要快得多,况且磁盘本身也有缓存
    gamexg
        23
    gamexg  
       2014 年 12 月 31 日
    感觉缓存好些,最大的好处是性能有问题直接改改就能直接上 memcache 。
    msg7086
        24
    msg7086  
       2015 年 1 月 1 日
    @zhicheng 因为会对Value的结构进行索引吧,比如NoSQL里存JSON/XML。
    纯KV查询很多就是直接用磁盘的。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2854 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 27ms UTC 14:36 PVG 22:36 LAX 07:36 JFK 10:36
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86