在《计算机世界》的这篇文章中,它指定PostgreSQL最多可以扩展到64个内核。这是否意味着一个64核的多核处理器?还是拥有更少内核的多个处理器?
我之所以这样问,是因为我试图找到PostgreSQL可以扩展到多少处理器,但是当然可能仅限于处理器类型。但是,我一直在其他数据库中找到其他统计信息(例如,Microsoft SQL Server 在这里说明它可以扩展到320个逻辑处理器),并且它们没有指定其内核数。这是一个非常模糊的统计吗?
任何想法将不胜感激。谢谢!
在《计算机世界》的这篇文章中,它指定PostgreSQL最多可以扩展到64个内核。这是否意味着一个64核的多核处理器?还是拥有更少内核的多个处理器?
我之所以这样问,是因为我试图找到PostgreSQL可以扩展到多少处理器,但是当然可能仅限于处理器类型。但是,我一直在其他数据库中找到其他统计信息(例如,Microsoft SQL Server 在这里说明它可以扩展到320个逻辑处理器),并且它们没有指定其内核数。这是一个非常模糊的统计吗?
任何想法将不胜感激。谢谢!
Answers:
不,这是一个非常精确的统计信息。“逻辑处理器”是核心。核心是,它们在物理处理器上的分布方式无关紧要。
而且,如果您要处理的内核数量超过支持的内核数量,那么PostgreSQL应该不会有问题。每个连接本质上都是单线程 *,因此无论您拥有多少内核,都将限制并发连接的效率和功效。
不用说,这也意味着您应该把钱花在比核心数量快的核心上,除非您想用更复杂的方法将事物聚类。
* 2017更新:某些查询(或子查询)可能会并行执行。
Needless to say this also means you should put your money in faster cores than quantity of cores unless you want to cluster things in a more complicated method.
<-我仅在内核数大于并发客户端数且并发客户端数不太可能增加的情况下同意此声明。对于每个Postgres后端都有一个可用的内核,对于性能来说非常重要...
Postgres可以扩展到要安装的处理器数量,并且您的OS可以有效地处理/管理。您可以将Postgres安装在128核计算机上(甚至是具有128个物理处理器的计算机上),它将可以正常工作。如果OS调度程序可以处理那么多内核,它甚至可能比64核计算机上的性能更好。
Postgres的已经显示出扩展 线性多达64个内核(带警告:我们正在谈论的读取性能,在特定的配置(磁盘,内存,操作系统等) - 罗伯特·哈斯有一个漂亮的图的博客文章,其我转载如下:
只要“客户数”小于或等于“核心数”,该关系就呈线性关系(或接近线性关系),然后开始出现性能大约呈对数线性下降的趋势,因为客户端连接数多于您做核心以运行Postgres后端,因为后端开始争夺CPU(平均负载超过1.0等)。
虽然仅针对多达64个内核进行了演示,但您可以概括地说,可以继续添加内核(和客户端)并不断提高性能,直至不再需要进程的某些其他子系统(磁盘,内存,网络)的限制有CPU争用问题,但正在等待其他事情。
(Haas还发表了另一篇文章,他们证明了32核的线性可扩展性,这在可扩展性方面通常具有很好的参考资料-强烈建议您阅读背景知识!)