代码之家  ›  专栏  ›  技术社区  ›  Steve M

从MySQL迁移到PostgreSQL[closed]

  •  26
  • Steve M  · 技术社区  · 16 年前

    我们现在主要是为了尽快开发一个MySQL产品。

    有其他人做过这样的举动吗?我们的数据库是应用程序的生命线,最终将存储TBs的数据,因此我很想了解性能改进/损失的经验,转换SQL和存储过程的主要障碍等等。

    编辑:只是想向那些问我们为什么不喜欢MySQL的授权的人澄清一下。我们正在开发一个商业产品,它(目前)依赖于MySQL作为数据库后端。他们的许可证规定,我们需要支付他们一个百分比,我们的清单价格,而不是一个固定的费用。作为一家初创企业,这并不具有吸引力。

    3 回复  |  直到 16 年前
        1
  •  27
  •   Michał Niedźwiedzki    16 年前

    史蒂夫,我不得不迁移我的旧应用程序,那就是PgSQL->MySQL。我得说,你应该认为自己很幸运;—) 常见的陷阱有:

    • SQL实际上非常接近语言标准,所以您可能会受到MySQL方言的影响
    • MySQL悄悄地截断超过max length的varchar,而Pg则抱怨说——快速解决方法是将这些列作为“text”而不是“varchar”,并使用触发器截断长行
    • 使用双引号代替反撇号
    • 布尔字段使用IS和IS NOT运算符进行比较,但是MySQL兼容的INT(1)with=和<>仍然是可能的
    • Pg在强制外键完整性方面非常严格,所以不要忘记在引用上使用on DELETE CASCADE

    我希望这至少能有所帮助。和博士后玩得开心!

        2
  •  13
  •   Grant Johnson    16 年前

    以下是咬我们的东西:

    1. MySQL不强制约束
    2. 任何不需要ACID的代码

    也就是说,一旦安装到位并经过测试,效果会更好。由于安全原因和大量并发使用,PostgreSQL的性能优于MySQL。在不需要锁定的情况下(只读),性能不是很好,但仍然比网卡快,所以这不是问题。

    提示:

    • contrib中的自动脚本 目录是一个很好的起点 为了你的转换,但是需要 经常被触摸。
    • 我强烈建议你 默认级别。
    • pg_autodoc工具有助于 真正看到你的数据结构和 忘了定义和执行。
        3
  •  3
  •   Jonathan Leffler    13 年前

    我们从MySQL3迁移到postgresql8.2,然后是8.3。PostgreSQL有SQL的基础,还有很多,所以如果你的MYSQL不使用那些奇特的MYSQL,你就可以了。

    根据我的经验,我们的MySQL数据库(版本3)没有外键。。。PostgreSQL允许您使用它们,因此我们必须更改它。。。这是件好事,我们发现了一些错误。

    另一件我们必须改变的事情是编码(C#)连接器,这在MySQL中是不一样的。MySQL比PostgreSQL更稳定。我们对PostgreSQL仍然没有什么问题。