Retaining execution plans between connections?
От | James Russell |
---|---|
Тема | Retaining execution plans between connections? |
Дата | |
Msg-id | 3a3a16930601200114p27ccb3fdn750286898f39c405@mail.gmail.com обсуждение исходный текст |
Ответы |
Re: Retaining execution plans between connections?
Re: Retaining execution plans between connections? |
Список | pgsql-performance |
Hi there,
I am running a website where each page connects to the DB to retrieve and write information. Each page load uses a separate connection (rather than just sharing one as is the common case) because I use a lot of transactions.
I am looking to speed up performance, and since each page executes a static set of queries where only the parameters change, I was hoping to take advantage of stored procedures since I read that PostgreSQL's caches the execution plans used inside stored procedures.
However, the documentation states that this execution plan caching is done on a per-connection basis. If each page uses a separate connection, I can get no performance benefit between pages.
In other words, there's no benefit to me in putting a one-shot query that is basically the same for every page (e.g. "SELECT * FROM users WHERE user_name='<username>'") inside a stored proc, since the generated execution plan will be thrown away once the connection is dropped.
Has anyone found a way around this limitation? As I said, I can't share the DB connection between pages (unless someone knows of a way to do this and still retain a level of separation between pages that use the same DB connection).
Many thanks,
James
I am running a website where each page connects to the DB to retrieve and write information. Each page load uses a separate connection (rather than just sharing one as is the common case) because I use a lot of transactions.
I am looking to speed up performance, and since each page executes a static set of queries where only the parameters change, I was hoping to take advantage of stored procedures since I read that PostgreSQL's caches the execution plans used inside stored procedures.
However, the documentation states that this execution plan caching is done on a per-connection basis. If each page uses a separate connection, I can get no performance benefit between pages.
In other words, there's no benefit to me in putting a one-shot query that is basically the same for every page (e.g. "SELECT * FROM users WHERE user_name='<username>'") inside a stored proc, since the generated execution plan will be thrown away once the connection is dropped.
Has anyone found a way around this limitation? As I said, I can't share the DB connection between pages (unless someone knows of a way to do this and still retain a level of separation between pages that use the same DB connection).
Many thanks,
James
В списке pgsql-performance по дате отправления: