2012-09-04 99 views
1

让我来解释一下我需要什么信息:如何确定缓冲区大小

我有几个并发用户一次打同一条记录。这意味着,在db端会有一些排队和锁定。这个缓冲区有多大?可以为200多个并发用户排队和锁定吗?

如何确定在我们的设置中这个缓冲区的大小?有没有默认设置?

回答

1

数据库中没有查询队列(“缓冲区”)。

到数据库的每个并发连接可以有一个正在运行的查询。其他查询不能排在其后面*

您的应用程序可能使用内部连接池,作为Rails,因此您可以有许多查询在等待连接池中的插槽。

如果你的应用程序和PostgreSQL之间有一个像PgBouncer代理的外部连接池,那么你可以有更多的查询排队,因为在连接到pgbouncer时,由于pgbouncer连接非常轻便,因此在应用中可以有更大的池大小。 PgBouncer将通过较少数量的到PostgreSQL的真实连接来处理这些请求。这样有效地使PgBouncer成为查询队列(尽管不一定是FIFO队列)。 但是因为这些查询实际上并没有命中Pg,所以它们在PgBouncer中等待时不锁。这对于一些并发设计可能很重要。


* OK,这样你就可以发送多个分号分隔一次查询,而不是像一个队列系列。