mysql - Postgres 的并发参数

标签 mysql database multithreading postgresql concurrency

我们基本上是一家 MySQL 商店,我们熟悉 MySQL 的线程并发级别,它使用内部队列,因此即使有更多数量的连接/查询进来,I/O 也会受到限制和控制。

同样不能应用于 Postgres,因为它是多进程应用程序。现在是问题,

如果有更多的连接数,比如 2000 个连接进来,所有的查询是否会并行运行,即 2000 个进程将被同时生成和执行?如果是,那么当一个流氓查询进入并阻止其他查询时它的含义是什么,它是如何在内部处理的?

postgres 是否有一些类似于 MySQL 的内部可调参数?

如果有人指出我正确的方向,我将不胜感激。

最佳答案

PostgreSQL 架构基于 UNIX 进程 - 一次数据库 session (一次连接到数据库)意味着一个进程。如果您有 1000 个事件连接,则有 1000 个 PostgreSQL 进程。 PostgreSQL 本身不支持池化或类似的东西。但是你可以使用第三方软件。还有更多的变体 - 浅色 pgbouncer ,更复杂更重pgpoolII .当您计划拥有比 CPU 内核多十倍的连接数时,此软件是必需的。如果您拥有包含大量非常短查询的专用服务器,这也会有所帮助。

关于mysql - Postgres 的并发参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32610600/

相关文章:

java - CouchbaseClient 如何获取存储桶中所有 DesignDocuments 的列表

php - 消息系统。关于数据库设计的问题

java - 这种传递和修改 HashMap 的方式是线程安全的吗

c# - `AsyncLocal` 是否也做 `ThreadLocal` 做的事情?

php - 如何从 mysql select 中分离结果

php - 如何从数据库适配器获取 MySQL 中最后生成的错误

mysql - 重命名具有带触发器的表的数据库

c++ - 无法使用 pthread_kill 和 sigwait 解锁/"wake up"线程

MySql + Qt 5.8 : "Incorrect string value" Statement Containing Degree Symbol

mysql - 如何在 MySql 中的 View 上触发触发器