你们有多少人从MySQL到Postgresql?它值得吗?

con*_*t47 11 mysql postgresql ruby-on-rails

我正在考虑从MySQL迁移到Postgres进行Rails开发,我只是想听听其他开发人员对此有何看法.

我正在寻找个人经历,而不是Mysql v Postgres枪战,只是你自己所获得的利弊.人们可能不一定会想到的东西.

随意解释你为什么一开始就搬家了.

rfu*_*sca 8

我做了转换,坦率地说,不能更开心.虽然Postgres缺少MySQL的一些东西(主要是为我插入忽略,替换,Upsert和加载数据),但它确实具有的功能不仅仅是弥补.它的存储过程功能更强大,在Postgres中编写复杂的函数和聚合要容易得多.

性能方面,如果你比较InnoDB(由于MVCC这只是公平的),那么感觉至少同样快,可能更快 - 由于某些限制,我们无法在这里做一些真正的测量,但那里当然不是性能问题.具有多个连接的复杂查询肯定更快,更快.

我发现你更有可能从Postgres社区得到你问题的正确答案.每个人和他们的祖母都有50种不同的方式在MySQL中做某事.使用Postgres,点击邮件列表,你可能会得到很多非常好的帮助.

任何语法等差异都有点微不足道.

总的来说,Postgres对我来说感觉更"成熟".我使用MySQL多年了,我现在不顾一切地避开它.


Rya*_*igg 5

亲爱的,这可能会以泪水结束.

仅从个人经验来看,我们仅仅因为我们的生产系统(Heroku)正在运行PostgreSQL而从MySQL迁移.我们为PostgreSQL打破了定制的MySQL查询.所以我想这里的故事的士气是在同一个DBMS上运行,否则你可能会遇到问题.

我们有时也需要插入快速的记录.为此,我们使用PostgreSQL的内置COPY函数,在我们的应用程序中使用类似于此:

query = "COPY users(email) FROM STDIN WITH CSV"
values = users.map! do |user|
  # Be wary of the types of the objects here, they matter.
  # For instance if you set the id to a string it will error.

  %Q{#{user["email"]}}
end.join("\n")

raw_connection.exec(query)
raw_connection.put_copy_data(values)
raw_connection.put_copy_end
Run Code Online (Sandbox Code Playgroud)

这将在不到两分钟的时间内将~500,000条记录插入数据库.大约在同一时间,如果我们添加更多字段.

PostgreSQL对MySQL的另一个好处:

  • 全文检索
  • 地理查询(PostGIS)
  • LIKE语法是这样的email ~ 'hotmail|gmail',NOT LIKE就像email !~ 'hotmail|gmail'.的|指示或.

总结一下:PostgreSQL就像砖头一样,MySQL就是Lego.选择适合自己的"感觉".这只是我个人的意见.