2009-08-24 33 views
4

我做datamining和我的工作涉及加载和卸载+ 1GB数据库转储文件到MySQL。我想知道是否还有其他免费的数据库引擎比MySQL在巨大的数据库上工作得更好? PostgreSQL在性能方面更好吗?大数据集的最佳数据库引擎

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

+2

1)你用什么样的数据挖掘工具?该工具是否需要JDBC访问? 2)为什么你需要加载/卸载? 3)性能通常涉及改进硬件,您目前的配置是什么,您是否有升级预算? – 2009-08-24 09:31:58

+0

你目前使用哪种数据库引擎? InnoDB,MyISAM等...? – Luke 2009-08-24 10:12:24

+0

我在MySQL中使用InnoDB – Mark 2009-08-24 10:35:28

回答

4

这是不可能取代一个不同的数据库引擎将提供在性能上大为提高。您提到的速度慢可能与您的架构设计和数据访问模式有关。也许你可以提供更多关于这方面的信息?例如,数据是按时间序列存储的吗?记录是按顺序写入还是随意插入/更新/删除?例如,美国国家航空航天局的地球观测系统的存储选择是

2

HDF。这不完全是传统意义上的数据库,它有自己的怪癖,但就纯粹的性能而言,它很难被击败。

1

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

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

temp_buffers或commit_delay都不适用于大多数人。整个功能commit_delay参与并不真正起作用,temp_buffers的默认大小足够好,除非您真的非常依赖临时数据。 现在,PostgreSQL服务器参数调整的最佳指南是http://wiki.postgresql.org/wiki/Tuning_Your_PostgreSQL_Server – 2009-08-24 16:32:22

3

只要你插入之前删除索引庞大的数据,应该没有太大的差别这两者之间。

2

如果您的datamining工具支持它,请考虑使用平面文件源。这应该可以节省大部分导入/导出操作。它也有一些注意事项,但:

  • 您可能需要获得精通脚本语言如Perl或Python做数据改写(munging)(假设你不熟悉的一个)。

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

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

现代磁盘 - 即使是SATA磁盘 - 在连续读取时也会将100MB /秒左右的磁盘从磁盘中取出。这意味着某些东西可以很快吸入1GB文件。

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

+1

或者只是将您的内存升级到8GB,创建一个足够大的tmpfs RAM磁盘,并执行所有随机访问与随机访问友好介质中的操作相关联?这可能是最便宜的方法,看到2GB RAM的价格为20欧元。 – mikaelhg 2009-08-24 22:42:43

1

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

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

查询运行速度是否太慢?是的,他们有多复杂?在复杂的查询中,PostgreSQL优化器可以比SQL中的更好,特别是涉及很多表连接时。在MySQL中,小而简单的查询往往会运行得更快,因为它在开始之前没有考虑如何执行查询。更智能的执行需要一定的开销。

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

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