Re: EXPLAIN progress info
| От | Heikki Linnakangas |
|---|---|
| Тема | Re: EXPLAIN progress info |
| Дата | |
| Msg-id | 47FC7D62.9090509@enterprisedb.com обсуждение исходный текст |
| Ответ на | Re: EXPLAIN progress info (Tom Lane <tgl@sss.pgh.pa.us>) |
| Ответы |
Re: EXPLAIN progress info
|
| Список | pgsql-patches |
Tom Lane wrote: > Gregory Stark <stark@enterprisedb.com> writes: >> There are downsides: > > Insurmountable ones at that. This one already makes it a non-starter: > >> a) the overhead of counting rows and loops is there for every query execution, >> even if you don't do explain analyze. > > and you are also engaging in a flight of fantasy about what the > client-side code might be able to handle. Particularly if it's buried > inside, say, httpd or some huge Java app. Yeah, you could possibly make > it work for the case that the problem query was manually executed in > psql, but that doesn't cover very much real-world territory. I think there's two different use cases here. The one that Greg's proposal would be good for is a GUI, like pgAdmin. It would be cool to see how a query progresses through the EXPLAIN tree when you run it from the query tool. That would be great for visualizing the executor; a great teaching tool. But I agree it's no good for use by a DBA to monitor a live system running a real-world application. For that we do need something else. > You'd be far more likely to get somewhere with a design that involves > looking from another session to see if anything's happening. In the > case of queries that are making database changes, pgstattuple is > certainly a usable option. For SELECT-only queries, I agree it's > harder, but it's still possible. I seem to recall some discussion of > including a low-overhead progress counter of some kind in the > pg_stat_activity state exposed by a backend. The number of rows so far > processed by execMain.c in the current query might do for the > definition. Yeah, something like this would be better for monitoring a live system. The number of rows processed by execMain.c would only count the number of rows processed by the top node of the tree, right? For a query that for example performs a gigantic sort, that would be 0 until the sort is done, which is not good. It's hard to come up with a single counter that's representative :-(. -- Heikki Linnakangas EnterpriseDB http://www.enterprisedb.com
В списке pgsql-patches по дате отправления: