Opened 12 years ago
Last modified 11 years ago
#2269 closed defect
Unreasonable memory usage when analyzing table with geometry column with many toasted datums — at Version 1
Reported by: | pgeoghegan | Owned by: | strk |
---|---|---|---|
Priority: | blocker | Milestone: | PostGIS 2.0.4 |
Component: | postgis | Version: | 2.0.x |
Keywords: | toast, leak, history | Cc: |
Description (last modified by )
I appear to have a problem running ANALYZE on a table with the Postgis geometry type. The table in question is 1099 MB, but only has 10631 tuples.
The call stack during the ANALYZE usually looks like this:
(gdb) bt #0 pglz_decompress (source=0x43f6bd98, dest=0x43fb5b2c "") at pg_lzcompress.c:711 #1 0x0000000000493c17 in heap_tuple_untoast_attr_slice (attr=0x7f8f49b8fd90, sliceoffset=0, slicelength=40) at tuptoaster.c:217 #2 0x0000000000880010 in pg_detoast_datum_slice (datum=0x7f8f49b8fd90, first=0, count=40) at fmgr.c:2266 #3 0x00007f8f4aa6e085 in gserialized_datum_get_gidx_p (gsdatum=140253393911184, gidx=gidx@entry=0x7fffbbac5d40) at gserialized_gist.c:248 #4 0x00007f8f4aa6e170 in gserialized_datum_get_gbox_p (gsdatum=<optimized out>, gbox=0x7fffbbac5ef0) at gserialized_gist.c:65 #5 0x00007f8f4aa379ec in compute_geometry_stats (stats=0x1310678, fetchfunc=0x5a0ae7 <std_fetch_func>, samplerows=10631, totalrows=10631) at geometry_estimate.c:865 #6 0x000000000059e02f in do_analyze_rel (onerel=0x7f9054bd1000, vacstmt=0x12ca5a0, acquirefunc=0x59f0f7 <acquire_sample_rows>, relpages=726, inh=0 '\000', elevel=17) at analyze.c:525 #7 0x000000000059d5a9 in analyze_rel (relid=17173, vacstmt=0x12ca5a0, bstrategy=0x130d9e8) at analyze.c:265 #8 0x0000000000612aab in vacuum (vacstmt=0x12ca5a0, relid=0, do_toast=1 '\001', bstrategy=0x130d9e8, for_wraparound=0 '\000', isTopLevel=1 '\001') at vacuum.c:247 #9 0x0000000000764c7a in standard_ProcessUtility (parsetree=0x12ca5a0, queryString=0x12c9af8 "analyze verbose onesite_overview ;", params=0x0, isTopLevel=1 '\001', dest=0x12ca928, completionTag=0x7fffbbac6910 "") ---Type <return> to continue, or q <return> to quit--- at utility.c:1027 #10 0x00007f9052a97e15 in pgss_ProcessUtility () from /home/pg/pgsql/lib/pg_stat_statements.so #11 0x000000000076395b in ProcessUtility (parsetree=0x12ca5a0, queryString=0x12c9af8 "analyze verbose onesite_overview ;", params=0x0, isTopLevel=1 '\001', dest=0x12ca928, completionTag=0x7fffbbac6910 "") at utility.c:332 #12 0x00000000007628e0 in PortalRunUtility (portal=0x1248398, utilityStmt=0x12ca5a0, isTopLevel=1 '\001', dest=0x12ca928, completionTag=0x7fffbbac6910 "") at pquery.c:1185 #13 0x0000000000762ab8 in PortalRunMulti (portal=0x1248398, isTopLevel=1 '\001', dest=0x12ca928, altdest=0x12ca928, completionTag=0x7fffbbac6910 "") at pquery.c:1316 #14 0x0000000000761fe6 in PortalRun (portal=0x1248398, count=9223372036854775807, isTopLevel=1 '\001', dest=0x12ca928, altdest=0x12ca928, completionTag=0x7fffbbac6910 "") at pquery.c:814 #15 0x000000000075be41 in exec_simple_query ( query_string=0x12c9af8 "analyze verbose onesite_overview ;") at postgres.c:1046 #16 0x0000000000760190 in PostgresMain (argc=2, argv=0x1229380, username=0x12291c8 "pg") at postgres.c:3958 #17 0x0000000000700321 in BackendRun (port=0x124c370) at postmaster.c:3619 #18 0x00000000006ff991 in BackendStartup (port=0x124c370) at postmaster.c:3304 #19 0x00000000006fc7b3 in ServerLoop () at postmaster.c:1367 #20 0x00000000006fc0aa in PostmasterMain (argc=2, argv=0x1227230) at postmaster.c:1127 #21 0x0000000000667225 in main (argc=2, argv=0x1227230) at main.c:199
PostGIS appears to leak memory for each tuple ANALYZED (or the memory context that allocation occurs within is not destroyed until the end of ANALYZE, which results in ballooning of memory consumption in practice).
This test case was produced with PostGIS 2.0.3.
Change History (1)
comment:1 by , 12 years ago
Description: | modified (diff) |
---|---|
Milestone: | → PostGIS 2.0.4 |
Owner: | changed from | to
Status: | new → assigned |
Note:
See TracTickets
for help on using tickets.