微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

mysql – 我读到的关于“那么糟糕”的一致性/数据丢失/查询优化问题是什么?

正如我一直在研究Postgres和MySQL间的差异一样,令我印象深刻的是,如果我读到的东西是可信的,那么MysqL应该是(免责声明:通过阅读这句话的其余部分,你同意阅读下一段同样)RMDB世界的笑柄:它认不强制执行A​​CID,网络充斥着与MysqL相关的数据丢失的故事,并且所有帐户和查询优化器都是一个笑话.

但这似乎都不重要.不难说MysqL有大约一百万倍*与Postgres(它是LAMP,而不是LAPP)的大肆宣传,MysqL的大装置并不是闻所未闻的(LJ?Digg?)而且我没有注意到MysqL的下降人气.

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

所以,如果你已经将MysqL用于一个相当大的项目**,你的体验是什么样的?你也使用Postgres吗?怎么变得更糟?它怎么样更好?

*:[需要引证]
**:我很清楚,对于“小东西”(博客,你有什么),MysqL(以及几乎所有其他RDB)都很好.

解决方法:

由于它被标记为[主观],我将是主观的.对我来说,这是关于小事情. Postgresql对开发人员更友好,认情况下可以很容易地做出关于数据完整性的正确事情.

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐