我进行数据挖掘,我的工作涉及将 +1GB 数据库转储文件加载和卸载到 MySQL。我想知道在大型数据库上是否有任何其他免费数据库引擎比 MySQL 更好?PostgreSQL 在性能方面更好吗?
我只使用基本的 SQL 命令,所以速度是我选择数据库的唯一因素
我进行数据挖掘,我的工作涉及将 +1GB 数据库转储文件加载和卸载到 MySQL。我想知道在大型数据库上是否有任何其他免费数据库引擎比 MySQL 更好?PostgreSQL 在性能方面更好吗?
我只使用基本的 SQL 命令,所以速度是我选择数据库的唯一因素
替换不同的数据库引擎不太可能显着提高性能。您提到的减速更可能与您的架构设计和数据访问模式有关。也许您可以提供更多有关此的信息?例如,数据是否存储为时间序列?记录是按顺序写入一次还是任意插入/更新/删除?
只要在插入大量数据之前删除索引,这两者之间应该没有太大区别。
例如, HDF是 NASA 地球观测系统的存储选择。它不完全是传统意义上的数据库,它有自己的怪癖,但就纯粹的性能而言,它很难被击败。
如果您的数据挖掘工具支持它,请考虑使用平面文件源。这应该可以节省您的大部分导入/导出操作。不过,它确实有一些警告:
您可能需要精通 Perl 或 Python 之类的脚本语言才能进行数据处理(假设您还不熟悉)。
如果需要更多内存,您可能需要扩展计算机上的内存或转至 64 位平台。
您的数据挖掘工具可能不支持以这种方式从平面数据文件中工作,在这种情况下您会遇到麻烦。
现代磁盘——即使是 SATA 磁盘——将在顺序读取中从磁盘上拉出 100MB/秒左右的速度。这意味着某些东西可以相当快地吸入一个 1GB 的文件。
或者,您可以尝试在您的机器上安装 SSD,看看这是否会提高您的 DBMS 的性能。
我在当前项目中使用 PostgreSQL,并且还必须经常转储/恢复数据库。恢复 400Mb 压缩转储只需不到 20 分钟。您可以尝试一下,尽管需要调整一些服务器配置参数以符合您的硬件配置。这些参数包括但不限于:
您的问题太含糊,无法有效回答。“性能”对不同的人意味着许多不同的东西。我可以评论 MySQL 和 PostgreSQL 在一些可能很重要的领域中的比较,但是如果没有信息,很难说其中哪些对你来说真正重要。我在Why PostgreSQL instead of MySQL: Comparing Reliability and Speed中写了很多关于这个主题的背景信息。哪个更快当然取决于你在做什么。
是不是加载数据到数据库太慢的问题?这是 PostgreSQL 不太擅长的一个领域,Postgres 中的 COPY 命令并不是一种特别快速的批量加载机制。
是查询运行太慢的问题吗?是吗,它们有多复杂?在复杂的查询中,PostgreSQL 优化器可以比 SQL 中的优化器做得更好,特别是在涉及许多表连接的情况下。小的、简单的查询往往在 MySQL 中运行得更快,因为它没有在开始之前考虑如何执行查询;更智能的执行会花费一些开销。
有多少客户参与?MySQL 可以在少量客户端上做得很好,在更高的客户端数量下,PostgreSQL 中的锁定机制可能会做得更好。
你关心交易的完整性吗?如果没有,在 MySQL 中关闭更多这些功能会更容易,这与 PostgreSQL 相比具有显着的速度优势。