适用于大型数据集的最佳数据库引擎

时间:2009-08-24 09:12:24

标签: mysql database postgresql mysqldump data-mining

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

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

7 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:3)

只要在插入大量数据之前删除索引,这两者之间应该没有太大区别。

答案 2 :(得分:2)

例如,

HDF是NASA地球观测系统的存储选择。它不完全是传统意义上的数据库,它有自己的怪癖,但就纯粹的性能而言,它很难被击败。

答案 3 :(得分:2)

如果您的数据挖掘工具支持它,请考虑使用平面文件源。这应该可以节省大部分导入/导出操作。但确实有一些警告:

  • 您可能需要熟练使用像Perl或Python这样的脚本语言来进行数据修改(假设您还不熟悉它)。

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

  • 您的数据挖掘工具可能不支持以这种方式处理平面数据文件,在这种情况下您会被误导。

现代磁盘 - 甚至是SATA磁盘 - 在顺序读取时将从磁盘上拉出100MB /秒左右。这意味着某些东西可以相当快地吸入1GB文件。

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

答案 4 :(得分:1)

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

  • 的shared_buffers
  • work_mem
  • temp_buffers
  • maintenance_work_mem
  • COMMIT_DELAY
  • effective_cache_size

答案 5 :(得分:1)

你的问题太模糊,无法有效回答。 “表演”对不同的人来说意味着许多不同的东西。我可以评论MySQL和PostgreSQL如何在一些可能很重要的领域进行比较,但是如果没有信息,很难说哪些对你来说真的很重要。我在Why PostgreSQL Instead of MySQL: Comparing Reliability and Speed写了更多关于这个主题的背景信息。哪个更快肯定取决于你正在做什么。

将数据加载到数据库中的问题是否太慢?这是PostgreSQL特别不擅长的一个领域,Postgres中的COPY命令并不是一个特别快的批量加载机制。

查询运行得太慢的问题是什么?是这样,他们有多复杂?对于复杂的查询,PostgreSQL优化器可以比SQL中的更好,特别是如果涉及许多表连接。小而简单的查询往往在MySQL中运行得更快,因为它没有考虑如何在开始之前执行查询;更聪明的执行会花费一些开销。

涉及多少客户? MySQL可以在少量客户端上做得很好,在更高的客户端数量下,PostgreSQL中的锁定机制可能会做得更好。

您关心交易诚信吗?如果没有,那么在MySQL中关闭更多这些功能会更容易,与PostgreSQL相比,它具有明显的速度优势。

答案 6 :(得分:1)

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

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

以下是有关该主题的一些文章: