flypen
V2EX  ›  问与答

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

  •  
  •   flypen · Jan 28, 2012 · 15813 views
    This topic created in 5396 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
    kingwkb
    Jan 28, 2012 via Android
    1
    当然sqlite
    felixonmars
    felixonmars
    Jan 28, 2012
    2
    不考虑memcached之类的nosql内存数据库吗?
    panlilu
    panlilu
    Jan 28, 2012 via Android
    3
    mysql 没有压岁钱。。
    felixonmars
    felixonmars
    Jan 28, 2012
    4
    @panlilu 明明是 没压岁钱了 ...
    gujiaxi
    gujiaxi
    Jan 28, 2012
    5
    想到个段子:MYSQL=妈要生气了
    cngump
    cngump
    Jan 28, 2012 via iPhone
    6
    redis?
    flypen
    flypen
    OP
    Jan 28, 2012
    7
    因为要设计到一些比较操作(select * from * where a>b),所以用SQL的数据库操作起来方便点(当然不一定是效率更好)。如果用memcached或者redis这种key-value形势的东东,弄起来怕有点不方便。

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

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