2012-01-03 15 views
0

使用PHP的pg_prepare()函數可以準備的預準備語句的數量是否有限制?允許的最大PHP-Postgres預處理語句?

+0

我想象它的內存有限,雖然DB服務器的內存和運行PHP的盒子上的內存都將是一個因素,因爲準備好的語句將在PHP中創建一個對象並在數據庫上創建一個準備好的語句。 – GordonM 2012-01-03 14:06:58

+0

儘管說實話,如果您爲內存耗盡產生足夠的準備語句是一個問題,那麼您的應用程序的體系結構可能需要重新思考。 – GordonM 2012-01-03 14:07:57

回答

2

但沒有數字上限爲PREPARE ed語句,但後端可以分配的RAM數量存在邏輯限制。只要PREPARE成功,PostgreSQL後端將保存準備好的語句,直到連接斷開,此時它將清除PREPARE ed語句(或者您可以在釋放內存時清除PREPARE語句)。

所有PREPARED語句都存儲在每個後端散列表中。 PREPARE ed語句的內存分配由語句本身處理,並重新分配給預處理語句高速緩存。如果您對細節感興趣,請參閱src/backend/commands/prepare.csrc/backend/utils/cache/plancache.c:SaveCachedPlan()。


此信息作爲2012-01-03 PostgreSQL的9.1+電流並且可以是在未來不同時PostgreSQL支持的編PREPARE語句的耐用緩存。

+0

非常好,那個持久的緩存會很好! – Liam 2012-01-06 17:47:46