gpt4 book ai didi

mysql - 我读到的关于 "that bad"的一致性/数据丢失/查询优化问题是什么?

转载 作者:可可西里 更新时间:2023-11-01 07:48:37 27 4
gpt4 key购买 nike

当我一直在研究 Postgres 和 MySQL 之间的差异时,令我震惊的是,如果我读到的内容可信,那么 MySQL 应该是(免责声明:通过阅读这句话的其余部分,您同意阅读下一段)RMDB 世界的笑柄:默认情况下它不强制执行 ACID,网络上充斥着与 MySQL 相关的数据丢失的故事,所有帐户和查询优化器都是一个笑话。

但这一切似乎都不重要。不难看出 MySQL 的炒作程度是 Postgres 的一百万倍*(是 LAMP,而不是 LAPP),MySQL 的大型安装并非闻所未闻(LJ?Digg?)并且我没有注意到 MySQL 的受欢迎程度有所下降。

这让我想知道:MySQL 的这些“问题”真的那么糟糕吗?

那么,如果您在相当大的项目中使用过 MySQL**,您的体验如何? 你也用过 Postgres 吗?怎么更糟了?怎么更好?

*:[需要引用]
**:我很清楚,对于“小事”(博客,你有什么),MySQL(以及几乎所有其他 RDB)都很好。

最佳答案

因为它被标记为[主观],所以我将是主观的。对我来说,这是关于小事的。 PostgreSQL 对开发人员更友好,默认情况下可以轻松地在数据完整性方面做正确的事情。

  • 如果您给 MySQL 一个不正确的类型,即使转换不正确,它也会隐式转换它。 PostgreSQL 会提示。
  • EXPLAIN 在 PostgeSQL 中比在 MySQL 中更有用。它为您提供了准确的结构化查询计划。它会使用什么样的算法,每一步的成本是多少等。这意味着如果 MySQL 中的查询优化器没有按照您的想法进行操作,您将很难调试它。
  • 如果您曾经用 MySQL 存储过程语言编写过任何更复杂的东西,您就会知道这是多么痛苦。 PL/pgSQL 实际上是一种不错的语言 + 您可以使用许多其他语言。
  • MySQL 没有序列,所以如果您需要它们,您必须自己动手。大多数人都会做错,他们的代码中存在竞争条件。
  • PostgreSQL 向开发人员公开了它的大部分内部锁类型。如果您需要以特殊方式锁定您的 table ,您可以这样做。
  • 一切都可以在 PostgreSQL 中进行编程。例如,如果某些特定数据需要自己的数据类型,则可以添加它。您可以为数据类型添加强制转换和运算符。可能不值得为小项目付出努力,但这比将东西存储为字符串要好。
  • 与 MySQL 不同,PostgreSQL 将包括 DDL 更改在内的每个操作都添加到一个事务中。如果您有创建/删除表的转换脚本,BEGIN/END 将无法帮助您在 MySQL 中保持一致的状态。

这并不意味着用 MySQL 编写好的数据库应用程序是不可能的,它只是需要更多的努力。

关于mysql - 我读到的关于 "that bad"的一致性/数据丢失/查询优化问题是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1630862/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com