一个页面读 10 次硬盘 io 好,还是取 10 次 mysql 查询好? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
请不要在回答技术问题时复制粘贴 AI 生成的内容
kmvan

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

  •  
  •   kmvan Dec 31, 2014 5278 views
    This topic created in 4134 days ago, the information mentioned may be changed or developed.
    
    如果服务器没有 memcache 之类的内存数据库,那么程序将缓存数据存为硬盘文件。

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

    But,这样做真的可以吗?磁盘 io 比起 mysql 谁更容易跑死?
    24 replies    2015-01-01 02:49:17 +08:00
    huigeer
        1
    huigeer  
       Dec 31, 2014
    mysql 的查询也是有缓存滴 一定要磁盘io, 建议ssd
    tczzjin
        2
    tczzjin  
       Dec 31, 2014
    如果你的磁盘io和mysql都是跑在一个服务器的话那就是走mysql好,如果是不同服务器的话...
    既然你都有>=2的服务器了,再配台服务器专门弄缓存才是王道
    66CCFF
        3
    66CCFF  
       Dec 31, 2014
    考虑ram cache?
    yanze0613
        4
    yanze0613  
       Dec 31, 2014
    同样的查询,mysql也有缓存,看具体查询了
    9hills
        5
    9hills  
       Dec 31, 2014
    你这个没法量化,比如MySQL查询是那种查询。10次IO又是多大的IO。。
    learnshare
        6
    learnshare  
       Dec 31, 2014
    MySQL 也是存取文件,不过还有数据的缓存。当然,直接读硬盘的文件也很快。But 你不做测试,没法直接断言
    wesley
        7
    wesley  
       Dec 31, 2014
    如果是小文件,磁盘读取也是有缓存的

    btw 可以用mysql的内存表
    lincanbin
        8
    lincanbin  
       Dec 31, 2014
    MySQL是有Cache的,近期的热数据会在内存的Cache里拿。
    如果你是说用文件作Cache的话,只有在数据库数据量特别巨大时,才有明显效果。
    typcn
        9
    typcn  
       Dec 31, 2014
    我都是直接存成程序的变量 简单暴力有效

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

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

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

    ssd,可能对其他应用不一定成立。所以自己测试才是王道。
    msg7086
        17
    msg7086  
       Dec 31, 2014 via iPhone
    说得好像读磁盘文件一定会访问磁盘一样
    zhicheng
        18
    zhicheng  
       Dec 31, 2014
    觉得读磁盘更快的同学,你们有没有考虑过一个问题,为什么大多数 Key/Value 数据库不是简单的把 Key 作为文件名 ,Value 作为内容按单个文件存储?
    yueyoum
        19
    yueyoum  
       Dec 31, 2014
    @zhicheng 为什么呢?
    MozzieCN
        20
    MozzieCN  
       Dec 31, 2014
    @yueyoum 因为文件是被缓存的,就算不会被缓存,按目前的文件系统来看,大文件基本上都是连续存储的.文件太小太多的话是随机存储,会增加磁头移动定位的时间.
    mqzhang
        21
    mqzhang  
       Dec 31, 2014 via Android
    推荐用leveldb或者ssdb,速度快,数据放硬盘,内存占用小
    kaneg
        22
    kaneg  
       Dec 31, 2014 via iPhone
    这要看你的sql查询耗时多少。举个极端的例子,每次查询耗时5秒,10次就得50秒,而如果只是从磁盘load一个结果,则要快得多,况且磁盘本身也有缓存
    gamexg
        23
    gamexg  
       Dec 31, 2014
    感觉缓存好些,最大的好处是性能有问题直接改改就能直接上 memcache 。
    msg7086
        24
    msg7086  
       Jan 1, 2015
    @zhicheng 因为会对Value的结构进行索引吧,比如NoSQL里存JSON/XML。
    纯KV查询很多就是直接用磁盘的。
    About     Help     Advertise     Blog     API     FAQ     Solana     3391 Online   Highest 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 104ms UTC 00:39 PVG 08:39 LAX 17:39 JFK 20:39
    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