flypen
V2EX  ›  问与答

内存数据库,MySQL和sqlite,哪个更好?

  •  
  •   flypen · Jan 28, 2012 · 15283 views
    This topic created in 5228 days ago, the information mentioned may be changed or developed.
    数据只保留在内存里面做一些处理,处理完毕之后就丢掉。但是有源源不断地数据进来。有比较多的整数数值比较的操作,但是没有复杂查询,也没有其他复杂的数据库操作。请问,从性能和内存占用率来考虑,MySQL的memory engine和sqlite相比,哪个更好一些?有没有更好的推荐?
    25 replies    1970-01-01 08:00:00 +08:00
    kingwkb
        1
    kingwkb  
       Jan 28, 2012 via Android
    当然sqlite
    felixonmars
        2
    felixonmars  
       Jan 28, 2012
    不考虑memcached之类的nosql内存数据库吗?
    panlilu
        3
    panlilu  
       Jan 28, 2012 via Android
    mysql 没有压岁钱。。
    felixonmars
        4
    felixonmars  
       Jan 28, 2012
    @panlilu 明明是 没压岁钱了 ...
    gujiaxi
        5
    gujiaxi  
       Jan 28, 2012
    想到个段子:MYSQL=妈要生气了
    cngump
        6
    cngump  
       Jan 28, 2012 via iPhone
    redis?
    flypen
        7
    flypen  
    OP
       Jan 28, 2012
    因为要设计到一些比较操作(select * from * where a>b),所以用SQL的数据库操作起来方便点(当然不一定是效率更好)。如果用memcached或者redis这种key-value形势的东东,弄起来怕有点不方便。

    顺便问问,SQL语句中的比较查询操作,在不能使用索引的时候都是会把数据库从头到尾扫描一遍的吧?这样的话,性能是不是就不是太好了?
    felixonmars
        8
    felixonmars  
       Jan 28, 2012
    还可以考虑mongodb之类的文档型数据库, 对于简单的where a>b类似操作是绝对足够了...
    panlilu
        9
    panlilu  
       Jan 28, 2012
    @felixonmars 哈哈。。一时打错了。。
    master
        10
    master  
       Jan 28, 2012
    各个的应用场景不同,没有哪个是绝对的好吧
    freefcw
        11
    freefcw  
       Jan 28, 2012
    最好用的其实是自己写一个= =
    Ricepig
        12
    Ricepig  
       Jan 28, 2012
    sqlite的join性能貌似很低
    flypen
        13
    flypen  
    OP
       Jan 28, 2012
    @Ricepig 对于sqlite的join性能很低,有实践过或者有出处吗?
    Ricepig
        14
    Ricepig  
       Jan 28, 2012
    @flypen 我有一个OLAP的应用开始就使用sqlite,数据量不太大的时候join性能就很一般,后来不得不自己做Hash Join
    feiandxs
        15
    feiandxs  
       Jan 28, 2012
    没用过sqlite,但记得看到的资料普遍对sqlite的插入操作表示不理想。
    https://www.google.com/search?q=sqlite%E6%8F%92%E5%85%A5%E6%80%A7%E8%83%BD&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:en-US:official&client=firefox-a
    sql在不用索引的时候进行检索是会全扫的。如果不想用key-value形式的库,用mysql的内存表性能也不差,具体看你应用了。
    mlzboy
        16
    mlzboy  
       Jan 28, 2012
    @gujiaxi 表达的是什么意思
    gujiaxi
        17
    gujiaxi  
       Jan 28, 2012
    @mlzboy “再不找女朋友,MYSQL”
    Kobe
        18
    Kobe  
       Jan 28, 2012 via iPad
    这两个默认都不是内存数据库,考虑redis或者mongodb吧
    arden
        19
    arden  
       Jan 29, 2012
    yyfearth
        20
    yyfearth  
       Jan 29, 2012
    @flypen 这个不是map reduce么?
    Livid
        21
    Livid  
    MOD
    PRO
       Jan 29, 2012
    数据源源不断进来,处理完之后又丢掉,那么猜想应该不会需要同时处理太多数据。

    那这种时候就用 MySQL 好了。SQLite 是一个文件,如果有两个不同的程序同时使用一个 SQLite 数据库,那么你还需要第 3 个程序来协调写入。
    flypen
        22
    flypen  
    OP
       Jan 29, 2012
    @yyfearth 比map reduce简单很多,呵呵。
    shawiz
        23
    shawiz  
       Jan 29, 2012
    楼主可以考虑用 Redis, 速度很快的 Key-Value 存储
    根本不需要写 SQL
    iyten
        24
    iyten  
       Jan 29, 2012
    sqlite不支持单多线程数据处理~
    avatasia
        25
    avatasia  
       Jan 29, 2012
    redis couchdb都是大应用,小应用可以考虑leveldb
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2452 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 82ms · UTC 00:45 · PVG 08:45 · LAX 17:45 · JFK 20:45
    ♥ Do have faith in what you're doing.