zoukankan      html  css  js  c++  java
  • mysql vs postgresql vs sqlite vs mysql

    对mysql没有什么发言权。
    就对postgresql谈一点使用的感受吧。
    用postgresql也有快一年了。碰到问题主要是当一个表的数据量超过50w条记录的时候,select速度就变的很慢。对数据库和系统做了优化都不行,一个普通的select语句就要执行很久。所以经常导致连接数不够,这点很让人郁闷。

    这个论坛有个存储关键词的表已经有283万条记录了,目前也基本上是这个数据库经常发生lock的地方。phpbb有个地方很不好,她在你发新贴 的时候检索关键词往这个表里面插入,所以会导致时不时发贴点击提交以后,要过很久很久才能成功。原来使用MyISAM的时候table level lock,经常会发生提交以后过了好久,页面不响应了,白提交了;现在改成了InnoDB,是row level lock,情况已经好多了,但是有时候还是感觉挺慢的,偶尔会出现错误。

    reference:http://www.javaeye.com/topic/13042?page=3      

    innodb: 15.19
    myiasm: 14.34
    pgsql: 23.41
    sqlite3: 锁住了
    sqlite3(单线程): 300+
    mongodb: 3.82
    couchdb: 90
    couchdb(单线程):66

    作为一个MySQL黑,看到这组测试数据我表示压力很大。在SQL数据库中,mysql意外地取得了最佳的成绩,好于pgsql,远好于 sqlite。更令人意外的是myisam居然优于号称insert比较快的innodb。不管如何,对我的应用来说,用mysql保存评论数据是一个更 为明智的选择。我对mysql彻底改观了,我宣布我是mysql半黑。以后select-intensive的应用我还是会选择sqlite,但是 insert/update-intensive的应用我就会改用mysql了。

    MongoDB和CouchDB同为NoSQL,表现却截然相反,MongoDB性能很高,CouchDB的并发性能我只能ORZ,这种性能实在太抱歉了。

    NoSQL的碎碎念

    其实我本来还打算测试cassandra的,可是cassandra用的是java,这首先让我眉头一皱,内存大户我养不起啊,其次看了 cassandra的文档,立刻崩溃,这简直就是没有文档么。(BTW,CouchDB也好不到哪里去,我都是用python-couchdb然后 help(couchdb.client)看用法的)

    至于CouchDB,可能是因为采用http方式发送请求,所以并发性能糟糕的一塌糊涂,很怀疑它是否有存在的理由。

    MongoDB是我用下来最讨人喜欢的一个NoSQL。不但文档丰富,使用简单,性能也非常好,它的Map/Reduce查询(很多NoSQL都 有)让我惊叹,数据库可以非常简单地就扩大规模,完全不用理会什么分区分表之类繁琐的问题,可惜这方面我暂时没有需求。但是MongoDB有两大致命问 题。

    第一是删除锁定问题,当批量删除记录时,数据库还是会锁定不让读写。这意味着进行数据清理时会让网站应用失去响应。见locking problems

    第二是内存占用问题,MongoDB用了操作系统的内存文件映射,这导致操作系统会把所有空闲内存都分配给MongoDB,当MongoDB有这个 需要时。更可怕的是,MongoDB从来不主动释放已经霸占的内存,它只会滚雪球一样越滚越大,除非重启数据库。这样的上下文环境下,MongoDB只适 合一台主机就一个数据库,而没有其他应用的环境,否则一会儿功夫MongoDB就会吃光内存,然后你都fork不出新进程,彻底悲剧。见memory limit

    总之NoSQL虽然让我眼前一亮,可是目前尝试的一些产品都让人望而生畏,现在的NoSQL都把目光放在了巨型网站上,而没有一个小型的,可以在 VPS里面应用的高性能NoSQL,令我有点失望。NoSQL尚未成熟,很期待它的将来发展,目前来说MySQL还是更好的选择。

    reference:http://508206df.blog.chinabyte.com/2010/03/19/48/

  • 相关阅读:
    关于wepy小程序图片显示问题
    输入地址到页面显示发生了写什么?
    一次Debug过程的思考
    一次冗长繁琐的排错经历
    PHP内核探索之变量(7)- 不平凡的字符串
    PHP内核探索之变量(6)- 后续内核探索系列大纲备忘
    PHP内核探索之变量(5)- session的基本原理
    PHP内核探索之变量(4)- 数组操作
    PHP内核探索之变量(3)- hash table
    PHP内核探索之变量(2)-理解引用
  • 原文地址:https://www.cnblogs.com/lexus/p/1806105.html
Copyright © 2011-2022 走看看