Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database 如果postgres的性能较低,我应该选择哪个数据库_Database_Performance_Postgresql - Fatal编程技术网

Database 如果postgres的性能较低,我应该选择哪个数据库

Database 如果postgres的性能较低,我应该选择哪个数据库,database,performance,postgresql,Database,Performance,Postgresql,在一个支持5000多名用户的网络应用程序中,postgres正成为瓶颈 添加新用户需要1分钟以上。(即使在优化和Win 2k3上) 因此,作为一个设计问题,其他哪些数据库可能更好?首先,我要确保优化确实有用。例如,如果有许多索引,有时添加或修改记录可能需要很长时间。 我知道PostgreSQL上运行着几个大型项目,所以请看一下这个问题。PostgreSQL的扩展性比大多数都好,如果您打算继续使用关系数据库,Oracle将是最好的选择。扩展得更好,但他们有自己的问题,因为设置一个更接近编程。 雅虎

在一个支持5000多名用户的网络应用程序中,postgres正成为瓶颈

添加新用户需要1分钟以上。(即使在优化和Win 2k3上)


因此,作为一个设计问题,其他哪些数据库可能更好?

首先,我要确保优化确实有用。例如,如果有许多索引,有时添加或修改记录可能需要很长时间。
我知道PostgreSQL上运行着几个大型项目,所以请看一下这个问题。

PostgreSQL的扩展性比大多数都好,如果您打算继续使用关系数据库,Oracle将是最好的选择。扩展得更好,但他们有自己的问题,因为设置一个更接近编程。

雅虎使用,这应该告诉你一些关于可伸缩性的信息。

我建议在这里查找有关PostgreSQL性能的信息:


你正在运行什么版本的PG?随着版本的发展,性能有了很大的提高。

我认为您最好的选择仍然是PostgresSQL。花点时间确保您已经正确地调整了应用程序。在您自信地达到了调优的极限后,开始缓存所有可以缓存的内容。在那之后,开始考虑移动到异步主从设置…您是否在执行OLTP的同一数据库上运行OLAP类型功能?

很可能,这不是PostgreSQL,而是您的设计。换鞋很可能不会让你成为一个更好的舞者

你知道是什么导致了速度慢吗?是争用、更新索引的时间、查找时间吗? 是否所有5000个用户都在尝试插入5001个用户时同时尝试写入用户表?我相信这会引起一个问题。您可能需要使用一些经过调优的工具来处理极端并发性,比如Oracle

MySQL(我被告知)可以进行优化,以比PostgreSQL更快的读取速度,但就其支持的#事务/秒而言,两者的速度都非常快,这听起来并不是你的问题


附言。 我们在对不同答案的评论中进行了一些讨论——请注意,世界上一些最大的、存储方面的数据库是使用Postgres实现的(尽管它们倾向于调整引擎的内部结构)。Postgres在数据大小方面的伸缩性非常好,并发性方面比大多数都好,并且在处理数据方面非常灵活

我希望有一个更好的答案给你,在技术发明30年后,我们应该能够让用户对系统有更少的详细知识,以便它能够顺利运行。但遗憾的是,我所知道的所有产品都需要进行广泛的思考和调整。我想知道StackOverflow的创建者是否可以分享他们如何处理db并发性和可伸缩性?他们正在使用SQLServer,我知道很多


p.p.S。
所以,我昨天偶然碰到了Oracle中的一个并发问题。我不能完全肯定我是对的,我不是DBA,但这些人解释的是这样的:我们有大量的进程连接到DB并检查系统字典,这显然会强制对它进行短锁,尽管它只是一个读取。解析查询也会做同样的事情。。所以我们(在一个有1000个对象的多tera系统上)有很多强制等待时间,因为进程在系统中相互锁定。我们的系统字典也太大了,因为它包含每个分区所有信息的单独副本,每个表可能有数千个。这与PostgreSQL并没有真正的关系,但需要注意的是——除了检查您的设计之外,还要确保您的查询使用了绑定变量并得到重用,并且对共享资源的压力最小。

如果您确实想从PostgreSQL中切换,Sybase SQL Anywhere在价格/性能上排名第五。它也是前十名中价格最低的选项(到目前为止),也是唯一非微软和非甲骨文的产品

它可以轻松扩展到数千个用户和TB的数据


充分披露:我在SQL Anywhere开发团队工作。

让我向您介绍一种最简单、最实用的方法,如果数据库设计真的是最佳的,可以扩展几乎所有数据库服务器:只需将ram增加一倍,即可瞬间提高性能。这就像魔术一样。

请更改运行Postgres的操作系统-Windows端口,尽管它对于扩展用户群非常有用,但它具有(更老、更成熟的)Un*x端口(尤其是Linux端口)。

我们需要更多详细信息:您使用的是什么版本?服务器的内存使用情况如何?你正在清理数据库吗?您的性能问题可能与PostgreSQL无关。

如果您有许多读写问题,您可能希望尝试MySQL,假设问题是Postgres的问题,但您的问题是写问题

仍然,你可能想看看你的数据库设计,并且可能考虑剪辑。对于一个非常大的数据库,您可能仍然需要考虑上述两个问题

根据手头的任务,您可能还希望查看非RDBMS数据库服务器或面向文档的服务器,如Mensia和CouchDB。没有一个工具可以管理所有的任务,所以要明智地选择


出于好奇,您是否有任何可能导致此延迟的存储过程?

如上所述,问题不在于您正在使用的特定数据库,即PostgreSQL,而在于以下之一:

  • 模式设计,可能需要添加、删除和优化索引
  • 硬件也许你要求你的大部分服务器-你说有5k个用户,但他们中很少有人可能同时查询数据库
  • 查询:可能定义不清,导致大量的ineff