V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
flypen
V2EX  ›  问与答

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

  •  
  •   flypen · 2012-01-28 13:55:58 +08:00 · 14522 次点击
    这是一个创建于 4683 天前的主题,其中的信息可能已经有所发展或是发生改变。
    数据只保留在内存里面做一些处理,处理完毕之后就丢掉。但是有源源不断地数据进来。有比较多的整数数值比较的操作,但是没有复杂查询,也没有其他复杂的数据库操作。请问,从性能和内存占用率来考虑,MySQL的memory engine和sqlite相比,哪个更好一些?有没有更好的推荐?
    25 条回复    1970-01-01 08:00:00 +08:00
    kingwkb
        1
    kingwkb  
       2012-01-28 13:59:44 +08:00 via Android
    当然sqlite
    felixonmars
        2
    felixonmars  
       2012-01-28 14:08:02 +08:00
    不考虑memcached之类的nosql内存数据库吗?
    panlilu
        3
    panlilu  
       2012-01-28 14:09:10 +08:00 via Android
    mysql 没有压岁钱。。
    felixonmars
        4
    felixonmars  
       2012-01-28 14:11:31 +08:00
    @panlilu 明明是 没压岁钱了 ...
    gujiaxi
        5
    gujiaxi  
       2012-01-28 14:26:31 +08:00
    想到个段子:MYSQL=妈要生气了
    cngump
        6
    cngump  
       2012-01-28 14:30:45 +08:00 via iPhone
    redis?
    flypen
        7
    flypen  
    OP
       2012-01-28 14:38:45 +08:00
    因为要设计到一些比较操作(select * from * where a>b),所以用SQL的数据库操作起来方便点(当然不一定是效率更好)。如果用memcached或者redis这种key-value形势的东东,弄起来怕有点不方便。

    顺便问问,SQL语句中的比较查询操作,在不能使用索引的时候都是会把数据库从头到尾扫描一遍的吧?这样的话,性能是不是就不是太好了?
    felixonmars
        8
    felixonmars  
       2012-01-28 14:43:21 +08:00
    还可以考虑mongodb之类的文档型数据库, 对于简单的where a>b类似操作是绝对足够了...
    panlilu
        9
    panlilu  
       2012-01-28 15:22:38 +08:00
    @felixonmars 哈哈。。一时打错了。。
    master
        10
    master  
       2012-01-28 15:58:00 +08:00
    各个的应用场景不同,没有哪个是绝对的好吧
    freefcw
        11
    freefcw  
       2012-01-28 16:45:53 +08:00
    最好用的其实是自己写一个= =
    Ricepig
        12
    Ricepig  
       2012-01-28 16:49:31 +08:00
    sqlite的join性能貌似很低
    flypen
        13
    flypen  
    OP
       2012-01-28 18:14:23 +08:00
    @Ricepig 对于sqlite的join性能很低,有实践过或者有出处吗?
    Ricepig
        14
    Ricepig  
       2012-01-28 18:43:12 +08:00
    @flypen 我有一个OLAP的应用开始就使用sqlite,数据量不太大的时候join性能就很一般,后来不得不自己做Hash Join
    feiandxs
        15
    feiandxs  
       2012-01-28 18:52:56 +08:00
    没用过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  
       2012-01-28 20:09:17 +08:00
    @gujiaxi 表达的是什么意思
    gujiaxi
        17
    gujiaxi  
       2012-01-28 21:41:15 +08:00
    @mlzboy “再不找女朋友,MYSQL”
    Kobe
        18
    Kobe  
       2012-01-28 23:03:26 +08:00 via iPad
    这两个默认都不是内存数据库,考虑redis或者mongodb吧
    arden
        19
    arden  
       2012-01-29 01:01:18 +08:00
    yyfearth
        20
    yyfearth  
       2012-01-29 04:01:27 +08:00
    @flypen 这个不是map reduce么?
    Livid
        21
    Livid  
    MOD
       2012-01-29 06:10:13 +08:00
    数据源源不断进来,处理完之后又丢掉,那么猜想应该不会需要同时处理太多数据。

    那这种时候就用 MySQL 好了。SQLite 是一个文件,如果有两个不同的程序同时使用一个 SQLite 数据库,那么你还需要第 3 个程序来协调写入。
    flypen
        22
    flypen  
    OP
       2012-01-29 09:43:58 +08:00
    @yyfearth 比map reduce简单很多,呵呵。
    shawiz
        23
    shawiz  
       2012-01-29 09:52:06 +08:00
    楼主可以考虑用 Redis, 速度很快的 Key-Value 存储
    根本不需要写 SQL
    iyten
        24
    iyten  
       2012-01-29 10:34:11 +08:00
    sqlite不支持单多线程数据处理~
    avatasia
        25
    avatasia  
       2012-01-29 10:48:59 +08:00
    redis couchdb都是大应用,小应用可以考虑leveldb
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   924 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 21:20 · PVG 05:20 · LAX 13:20 · JFK 16:20
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.