Mysql vs Oracle XE vs Postgresql。可扩展性和性能,选择哪一种?

Mysql vs Oracle XE vs Postgresql。可扩展性和性能,选择哪一种?,mysql,oracle,postgresql,database-performance,Mysql,Oracle,Postgresql,Database Performance,我知道这是非常广泛的,所以让我给你的设置,并明确我的重点 设置: 我正在使用MYSQL处理一个现有的PHP应用程序。几乎所有的表都使用MYISAM引擎,并且大部分都包含数百万行。最大的表之一使用EAV设计,这是必要的,但会影响性能。该应用程序是为了最好地利用MYSQL缓存而编写的。它在每个页面负载上请求相当数量的请求(部分原因是这样),并且非常复杂,必须在每个页面负载上遍历整个数据库的大多数表 优点: 它是免费的 MYISAM表支持对应用程序很重要的全文索引 缺点: 按照设置方式,MYSQ

我知道这是非常广泛的,所以让我给你的设置,并明确我的重点

设置:

我正在使用MYSQL处理一个现有的PHP应用程序。几乎所有的表都使用MYISAM引擎,并且大部分都包含数百万行。最大的表之一使用EAV设计,这是必要的,但会影响性能。该应用程序是为了最好地利用MYSQL缓存而编写的。它在每个页面负载上请求相当数量的请求(部分原因是这样),并且非常复杂,必须在每个页面负载上遍历整个数据库的大多数表

优点:

  • 它是免费的
  • MYISAM表支持对应用程序很重要的全文索引
缺点:

  • 按照设置方式,MYSQL在整个应用程序中仅限于一个CPU。如果运行了一个要求很高的查询(或者服务器负载很大),它将对所有其他查询进行排队,从而使站点无响应
  • MYSQL缓存和缺少“WITH”或“INTERSECT”意味着我们必须分解查询以更好地使用缓存。从而乘以所做查询的数量。例如,在具有数百万行的多个表上使用子查询(即使有适当的索引)对于当前/向上提交的负载和上面的约束(CPU使用)来说是一个大问题
感觉到在即将到来的一年中需要扩展,但不一定要马上支付许可费,我一直在考虑重写应用程序并切换DBs

正在考虑的三个选项是继续使用mysql,但使用INNODB引擎,这样我们可以利用更多的CPU能力。当我们需要扩展到4Gb数据库、1Gb RAM或1CPU限制(所有这些我们都还没有达到)时,适应Oracle XE并获得许可证。或者适应PostgreSQL

所以问题是:

  • 在这三种情况下,丢失全文索引将如何影响性能(oracle或postgreSQL是否有类似的机制?)
  • oracle和postgreSQL如何在子查询、WITH和UNION/INTERSECT语句上利用缓存
  • Oracle和PostgreSQL如何利用多核/cpu能力(如果/当我们获得Oracle许可证时)
我想这已经有很多问题要回答了,所以我就到此为止。如果有赞美的链接,我不介意简单/不完整的答案

如果你需要更多的信息,请告诉我


提前感谢各位,非常感谢您的帮助。

PostgreSQL支持全文搜索和索引。细节

它可以使用任意数量的CPU核。它为每个会话创建单独的流程+一些额外的支持流程。细节


PostgreSQL没有内置的查询缓存,但是有很多用于此目的的开源实用程序。

InnoDB支持最新版本的全文。哦,很高兴知道这一点。谢谢
它在每次页面加载时都会请求相当数量的请求
表明您必须对Oracle和Postgres案例进行认真的重新设计。不管怎样,它们都是糟糕设计的标志:往返数据库的成本通常比典型查询的成本更高。
hstore
数据类型(和模块)可能是解决可怕的EAV问题的最佳方案。比“真正的”EAV实现要好得多(PostgreSQL的SQL特性比MySQL多得多——而且MySQL在可预见的未来似乎也不会赶上它)@lvaroG.Vicario:5.6(支持InnoDB的全文索引)还没有正式发布(GA)然而,尽管我提出了明确的问题,限制了回答的范围,但这个问题还是被解决了。所以我会把这个标记为正确答案。谢谢你的时间,这已经是我想要的一半了。这把锁真丢人