代码之家  ›  专栏  ›  技术社区  ›  Mark

大型数据集的最佳数据库引擎

  •  4
  • Mark  · 技术社区  · 17 年前

    我做数据挖掘,我的工作包括将+1GB数据库转储文件加载和卸载到MySQL中。我想知道在大型数据库上是否还有其他比MySQL更好的免费数据库引擎?PostgreSQL的性能更好吗?

    我只使用基本的SQL命令,所以速度是我选择数据库的唯一因素

    7 回复  |  直到 15 年前
        1
  •  1
  •   Joseph Turian    17 年前

    如果您正在进行数据挖掘,也许可以使用面向文档的数据库。 如果不使用我的SQL,这些数据库比关系数据库更快。

    MongoDB 和 CouchDB 都是不错的选择。我更喜欢MangGDB,因为我不知道Java,并且发现CouchDB更容易启动和运行。

    下面是一些关于这个主题的文章:

        2
  •  4
  •   Adamski    15 年前

    替换不同的数据库引擎不太可能会大幅提高性能。您提到的减速更可能与您的模式设计和数据访问模式相关。也许你可以提供更多的信息?例如,数据是否存储为时间序列?记录是按顺序写的还是随意插入/更新/删除的?

        3
  •  3
  •   M. Utku ALTINKAYA    17 年前

    只要在插入大量数据之前删除索引,这两者之间就不会有太大的区别。

        4
  •  2
  •   Joonas Pulakka    17 年前

    HDF 例如,是美国宇航局地球观测系统的存储选择。在传统意义上,它并不完全是一个数据库,它有自己的特性,但是在纯粹的性能方面,它很难击败。

        5
  •  2
  •   ConcernedOfTunbridgeWells    17 年前

    如果您的数据挖掘工具将支持它,请考虑从平面文件源进行工作。这样可以保存大部分导入/导出操作。不过,它确实有一些警告:

    • 您可能需要精通Perl或Python之类的脚本语言才能进行数据挖掘(假设您还不熟悉)。

    • 如果需要更多内存,您可能需要扩展计算机上的内存,或者转到64位平台。

    • 您的数据挖掘工具可能不支持以这种方式从平面数据文件进行工作,在这种情况下,您会遇到错误。

    现代磁盘——甚至是SATA磁盘——将以顺序读取的方式从磁盘中拉出100MB/秒左右。这意味着有东西可以相当快地吸入一个1GB文件。

    或者,您可以尝试在您的计算机上安装SSD,看看它是否提高了DBMS的性能。

        6
  •  1
  •   akrasikov    17 年前

    我在当前的项目中使用PostgreSQL,并且经常需要转储/恢复数据库。恢复400MB压缩垃圾场不到20分钟。 您可以尝试一下,尽管需要调整一些服务器配置参数以符合您的硬件配置。这些参数包括但不限于:

    • 共享缓冲区
    • 工作记忆
    • 风暴缓冲区
    • 维护工作
    • 委托延误
    • 有效缓存大小
        7
  •  1
  •   Greg Smith    17 年前

    你的问题太模棱两可了,无法有效回答。”“表演”对不同的人来说意味着许多不同的事情。我可以评论一下MySQL和PostgreSQL在一些可能很重要的领域中的比较,但是如果没有信息,很难说哪一个对你很重要。关于这个话题,我在 Why PostgreSQL Instead of MySQL: Comparing Reliability and Speed . 哪种速度更快当然取决于你在做什么。

    将数据加载到数据库的速度是否太慢?这是PostgreSQL做得不太好的一个领域,Postgres中的copy命令不是一个特别快的批量加载机制。

    查询运行是否太慢?是吗,它们有多复杂?对于复杂的查询,PostgreSQL优化器可以比SQL优化器做得更好,特别是在涉及到许多表连接的情况下。在MySQL中,小而简单的查询往往运行得更快,因为它没有在开始之前考虑如何执行查询;更智能的执行需要一些开销。

    有多少客户参与?MySQL可以很好地处理少量的客户机,在较高的客户机计数下,PostgreSQL中的锁定机制可能会做得更好。

    您关心事务完整性吗?如果没有,那么在MySQL中关闭更多的功能就更容易了,这使得它比PostgreSQL具有显著的速度优势。