Re: I s this a bug of spgist index in a heavy write condition?
| От | 李海龙 |
|---|---|
| Тема | Re: I s this a bug of spgist index in a heavy write condition? |
| Дата | |
| Msg-id | 50EBF992.2000704@qunar.com обсуждение исходный текст |
| Ответ на | I s this a bug of spgist index in a heavy write condition? (李海龙 <hailong.li@qunar.com>) |
| Ответы |
Re: I s this a bug of spgist index in a heavy write condition?
|
| Список | pgsql-hackers |
<br /><pre wrap="">Hi,dear tom lane && pgsql-hackers
I am very excited to say that I may have created a test case!
<b>
</b><b>OS Version:</b>
CentOS release 5.5 (Final)
<b>PostgreSQL Version:</b>
postgres=# select version(); version
---------------------------------------------------------------------------------------------------------------PostgreSQL
9.2.2on x86_64-unknown-linux-gnu, compiled by gcc (GCC) 4.1.2 20080704 (Red Hat 4.1.2-50), 64-bit
(1 row)
I create a database named test_spgist,and there is only one table named route_raw which has a spgist index column in
thedatabase.
Some details is shown as following:
</pre> test_spgist=# \dt<br /> List of relations<br /> Schema | Name | Type | Owner <br />
--------+-----------+-------+----------<br/> public | route_raw | table | postgres<br /> (1 row)<br /><br />
test_spgist=#\d route_raw<br /> Table "public.route_raw"<br />
Column | Type | Modifiers <br />
----------------------+-----------------------------+---------------------------------------------<br/>
sourceurl | character varying(1000) | not null default ''::character varying<br /> title
|character varying(200) | default NULL::character varying<br /> price |
numeric(10,0) | default NULL::numeric<br /> routesnapshot | character varying(4024) | default
NULL::charactervarying<br /> routesnapshot_small | character varying(800) | default NULL::character varying<br
/> routesnapshot_mid | character varying(800) | default NULL::character varying<br /> feature |
text | <br /> departure | character varying(50) | default NULL::character
varying<br/> arrive | character varying(500) | default NULL::character varying<br />
function | character varying(50) | default NULL::character varying<br /> type |
charactervarying(50) | default NULL::character varying<br /> subject | text
|<br /> dateofdeparture | timestamp without time zone | <br /> dateofexpire | timestamp without time
zone| <br /> dateofbookingexpire | timestamp without time zone | <br /> itineraryday |
integer | <br /> sightspot | text | <br /> traffic
|character varying(100) | default NULL::character varying<br /> stargrade | double
precision | <br /> region | character varying(50) | default NULL::character varying<br
/> subregion | character varying(50) | default NULL::character varying<br /> currency |
charactervarying(45) | default NULL::character varying<br /> listinfo | character varying(1024)
|default NULL::character varying<br /> dateofload | timestamp without time zone | <br />
urlkey | character varying(64) | not null default ''::character varying<br /> sightspot_b
|text | <br /> sightspot_c | text | <br />
wrapperid | character varying(128) | default NULL::character varying<br /> wrappername |
charactervarying(50) | default NULL::character varying<br /> toflight | character varying(45)
|default NULL::character varying<br /> backflight | character varying(45) | default NULL::character
varying<br/> raw_date | character varying(2048) | default NULL::character varying<br />
feeinfo | text | <br /> others | text | <br
/> feeinclude | character varying(1000) | default NULL::character varying<br /> feeexclude |
charactervarying(1000) | default NULL::character varying<br /> ownexpense | character varying(1000)
|default NULL::character varying<br /> bookingterms | character varying(1000) | default NULL::character
varying<br/> visainfos | character varying(1000) | default NULL::character varying<br />
shopinfos | character varying(500) | default NULL::character varying<br /> flightinfos |
charactervarying(500) | default NULL::character varying<br /> spotofdeparture | character varying(20)
|default NULL::character varying<br /> spotofback | character varying(20) | default NULL::character
varying<br/> tips | character varying(1000) | default NULL::character varying<br />
contact | character varying(100) | default NULL::character varying<br /> raw_price |
charactervarying(100) | default NULL::character varying<br /> raw_bookexpiredate | character varying(100)
|default NULL::character varying<br /> transfer | character varying(20) | default NULL::character
varying<br/> contractstyle | character varying(500) | default NULL::character varying<br />
citiesofbook | character varying(1000) | default NULL::character varying<br /> ishotelselected |
charactervarying(20) | not null default 'false'::character varying<br /> freetripitineraryday |
integer | not null default (-1)<br /> suitcrowdsubject | character varying(50) | default
NULL::charactervarying<br /> newsubject | character varying(50) | default NULL::character varying<br
/> isflightselected | character varying(20) | not null default 'false'::character varying<br />
festival | character varying(512) | default NULL::character varying<br /> promotion |
charactervarying(1024) | <br /> Indexes:<br /> "route_raw_1_idx" btree (price, departure, dateofdeparture,
itineraryday)<br/> "route_raw_sourceurl_idx1" spgist (sourceurl)<br /><br /> test_spgist=# select sourceurl from
route_rawlimit 5;<br />
sourceurl <br />
---------------------------------------------------------------------------------------------------------------<br/>
<aclass="moz-txt-link-freetext"
href="http://suz.bacts.com/group/group_33_128972.aspx">http://suz.bacts.com/group/group_33_128972.aspx</a><br/> <a
class="moz-txt-link-freetext"
href="http://www.gzl.com.cn/Travel/TeamDetail.aspx?tuanhao=GHX%B0%B2%D0%C4%C0%F6%C0%A520120613%B4%BF%CD%E6&xl=12623">http://www.gzl.com.cn/Travel/TeamDetail.aspx?tuanhao=GHX%B0%B2%D0%C4%C0%F6%C0%A520120613%B4%BF%CD%E6&xl=12623</a><br
/> <a class="moz-txt-link-freetext"
href="http://www.ctszj.com.cn/route_group_1_147707.html">http://www.ctszj.com.cn/route_group_1_147707.html</a><br/> <a
class="moz-txt-link-freetext"
href="http://jx.bacts.com/group/group_33_118381.aspx">http://jx.bacts.com/group/group_33_118381.aspx</a><br/> <a
class="moz-txt-link-freetext"
href="http://www.gzl.com.cn/Travel/TeamDetail.aspx?tuanhao=GHX%C9%F1%C5%A9%CE%D420120723&xl=7096">http://www.gzl.com.cn/Travel/TeamDetail.aspx?tuanhao=GHX%C9%F1%C5%A9%CE%D420120723&xl=7096</a><br
/>(5 rows)<br /><br /> --<b>Before the test, this table has 997736 records.</b><br /> test_spgist=# select count(1)
fromroute_raw ;<br /> count <br /> --------<br /> 997736<br /> (1 row)<br /><br /> My some deteails the test
procedureis as follows.<br /><br /><b><big>1. edit a shell script that function is insert data to table
route_raw</big></b><br/><br /> [hailong.li@pgdb2 ~]$ <b><big>cat /tmp/insert_spgist.sh</big></b><br /> #/bin/bash<br
/><br/> export PGPASSWORD="6b4df779-dd13-4031-a00b-126b49287995"<br /> PSQL="/opt/pg92/bin/psql"<br />
DBHOST=l-pgdb2.s.cn6<br/> DB=test_spgist<br /> USR=postgres<br /><br /> while [ 10 -ne 9 ]<br /> do<br />
SQL="insertinto route_raw(sourceurl) values ('<a class="moz-txt-link-freetext"
href="http://suz.bacts.com/group/group_33_128972.aspx">http://suz.bacts.com/group/group_33_128972.aspx</a>, <a
class="moz-txt-link-freetext"
href="http://www.gzl.com.cn/Travel/TeamDetail.aspx?tuanhao=GHX%B0%B2%D0%C4%C0%F6%C0%A520120613%B4%BF%CD%E6&xl=12623">
http://www.gzl.com.cn/Travel/TeamDetail.aspx?tuanhao=GHX%B0%B2%D0%C4%C0%F6%C0%A520120613%B4%BF%CD%E6&xl=12623</a>,
<aclass="moz-txt-link-freetext"
href="http://www.ctszj.com.cn/route_group_1_147707.html,http://jx.bacts.com/group/group_33_118381.aspx">
http://www.ctszj.com.cn/route_group_1_147707.html,http://jx.bacts.com/group/group_33_118381.aspx</a>,<a
class="moz-txt-link-freetext"
href="http://www.gzl.com.cn/Travel/TeamDetail.aspx?tuanhao=GHX%C9%F1%C5%A9%CE%D420120723&xl=7096">
http://www.gzl.com.cn/Travel/TeamDetail.aspx?tuanhao=GHX%C9%F1%C5%A9%CE%D420120723&xl=7096</a>, <a
class="moz-txt-link-freetext"href="http://www.gzl.com.cn/Travel/TeamDetail.aspx?tuanhao=TUCCZ120625A&xl=7957">
http://www.gzl.com.cn/Travel/TeamDetail.aspx?tuanhao=TUCCZ120625A&xl=7957</a>, <a class="moz-txt-link-freetext"
href="http://www.ctszj.com.cn/route_group_1_134782.html">http://www.ctszj.com.cn/route_group_1_134782.html</a> , <a
class="moz-txt-link-freetext"href="http://fj.bacts.com/group/group_33_113288.asp">
http://fj.bacts.com/group/group_33_113288.asp</a>, <a class="moz-txt-link-freetext"
href="http://www.gzl.com.cn/Travel/TeamDetail.aspx?tuanhao=TUCCZ120625A&xl=7957">
http://www.gzl.com.cn/Travel/TeamDetail.aspx?tuanhao=TUCCZ120625A&xl=7957</a>,<a class="moz-txt-link-freetext"
href="http://www.ctszj.com.cn/route_group_1_134782.html,http://fj.bacts.com/group/group_33_113288.aspx">
http://www.ctszj.com.cn/route_group_1_134782.html,http://fj.bacts.com/group/group_33_113288.aspx</a>,<a
class="moz-txt-link-freetext"
href="http://www.sztravel.com.cn/travel/detail.aspx?xlid=19883&ctype=1">http://www.sztravel.com.cn/travel/detail.aspx?xlid=19883&ctype=1</a>
,<a class="moz-txt-link-freetext" href="http://www.ctszj.com.cn/route_group_1_134695.html">
http://www.ctszj.com.cn/route_group_1_134695.html</a>')"<br /> sleep 1<br /> $PSQL -h $DBHOST -U $USR
-d$DB -c "$SQL"<br /> done<br /><br /><b>2.</b> <b>I create 15 clients and execute this shell script in each client
</b><br/><br /> [<a class="moz-txt-link-abbreviated"
href="mailto:hailong.li@l-pgdb2.s.cn6">hailong.li@l-pgdb2.s.cn6</a>~]$ /tmp/insert_spgist.sh >/dev/null<br /> ...<br
/>...<br /> ...<br /> [<a class="moz-txt-link-abbreviated"
href="mailto:hailong.li@l-pgdb2.s.cn6">hailong.li@l-pgdb2.s.cn6</a>~]$ /tmp/insert_spgist.sh >/dev/null<br /><br />
3.<b>I execute the statement "<font color="#ff0000">select * from pg_stat_activity;</font> and <font
color="#ff0000">selectcount(1) from route_raw;</font> " to monitor the connections</b><br /><br /> test_spgist=# select
*from pg_stat_activity ;<br /> datid | datname | pid | usesysid | usename | application_name | client_addr
|client_hostname | client_port | backend_start | xact_start | <br />
query_start | state_change | waiting | state
| <br
/>
; <br />
query <br />
; <br />
; <br />
-------+-------------+-------+----------+----------+------------------+-----------------+-----------------+-------------+-------------------------------+-------------------------------+------<br
/>
-------------------------+-------------------------------+---------+--------+------------------------------------------------------------------------------------------------------------------<br
/>
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------<br
/>
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------<br
/>
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------<br
/>
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------<br
/> 16384 | test_spgist | 14959 | 10 | postgres | psql | | |
-1| 2013-01-08 16:43:53.175203+08 | 2013-01-08 17:16:01.997493+08 | 2013-<br /> 01-08 17:16:01.997493+08 | 2013-01-08
17:16:01.997495+08| f | active | select * from pg_stat_activity ;<br /><br /> 16384 | test_spgist | 16858
| 10 | postgres | psql | | | -1 | 2013-01-08
17:04:15.000472+08| | 2013-<br /> 01-08 17:15:01.303197+08 | 2013-01-08
17:15:02.372496+08| f | idle | select count(1) from route_raw ;<br /><br /> 16384 | test_spgist | 26097 |
10| postgres | psql | 192.168.232.122 | | 54637 | 2013-01-08 17:12:16.228789+08 |
2013-01-0817:12:16.231496+08 | 2013-<br /> 01-08 17:12:16.231496+08 | 2013-01-08 17:12:16.231504+08 | f | active
|insert into route_raw(sourceurl) values ('<a class="moz-txt-link-freetext"
href="http://suz.bacts.com/group/group_33_128972.aspx">http://suz.bacts.com/group/group_33_128972.aspx</a>, <a
class="moz-txt-link-freetext"href="http://www.gzl.com.cn">http://www.gzl.com.cn</a><br />
/Travel/TeamDetail.aspx?tuanhao=GHX%B0%B2%D0%C4%C0%F6%C0%A520120613%B4%BF%CD%E6&xl=12623, <a
class="moz-txt-link-freetext"
href="http://www.ctszj.com.cn/route_group_1_147707.html,http://jx.bacts.com/group/group_33_118381.aspx">
http://www.ctszj.com.cn/route_group_1_147707.html,http://jx.bacts.com/group/group_33_118381.aspx</a>,ht<br />
tp://www.gzl.com.cn/Travel/TeamDetail.aspx?tuanhao=GHX%C9%F1%C5%A9%CE%D420120723&xl=7096, <a
class="moz-txt-link-freetext"href="http://www.gzl.com.cn/Travel/TeamDetail.aspx?tuanhao=TUCCZ120625A&xl=7957">
http://www.gzl.com.cn/Travel/TeamDetail.aspx?tuanhao=TUCCZ120625A&xl=7957</a>, <a class="moz-txt-link-freetext"
href="http://www.ctszj.com.cn/">http://www.ctszj.com.cn/</a><br /> route_group_1_134782.html , <a
class="moz-txt-link-freetext"href="http://fj.bacts.com/group/group_33_113288.asp">
http://fj.bacts.com/group/group_33_113288.asp</a>, <a class="moz-txt-link-freetext"
href="http://www.gzl.com.cn/Travel/TeamDetail.aspx?tuanhao=TUCCZ120625A&xl=7957">
http://www.gzl.com.cn/Travel/TeamDetail.aspx?tuanhao=TUCCZ120625A&xl=7957</a>,<a class="moz-txt-link-freetext"
href="http://www.ctszj.com.cn/route_group_1_1">http://www.ctszj.com.cn/route_group_1_1</a><br /> 34782.html,<a
class="moz-txt-link-freetext"
href="http://fj.bacts.com/group/group_33_113288.aspx">http://fj.bacts.com/group/group_33_113288.aspx</a>,<a
class="moz-txt-link-freetext"
href="http://www.sztravel.com.cn/travel/detail.aspx?xlid=19883&ctype=1">http://www.sztravel.com.cn/travel/detail.aspx?xlid=19883&ctype=1</a>
,<a class="moz-txt-link-freetext" href="http://www.ctszj.com.cn/route_group_1_134695.html">
http://www.ctszj.com.cn/route_group_1_134695.html</a>')<br /> ......<br /> ......<br /> (17 rows)<br /><br />
test_spgist=#select count(1) from route_raw ;<br /> count <br /> --------<br /> 997799<br /> (1 row)<br /><br />
test_spgist=#select count(1) from route_raw ;<br /> count <br /> --------<br /> 997801<br /> (1 row)<br /><br />
test_spgist=#select count(1) from route_raw ;<br /> count <br /> --------<br /> 998687<br /> (1 row)<br /><br />
test_spgist=#select count(1) from route_raw ;<br /> count <br /> --------<br /> 999647<br /> (1 row)<br /><br />
test_spgist=#select count(1) from route_raw ;<br /> count <br /> --------<br /> 999647<br /> (1 row)<br /><br />
......<br/> ......<br /><br /> test_spgist=# select count(1) from route_raw ;<br /> count <br /> --------<br />
999647<br/> (1 row)<br /><br /> When I found that the counts of the records of the table route_raw is is not
increased,I immediately went to displays the process information using command gdb at that time.<br /><br /><b>4.
displayprocess information using gdb</b><br /><br /> [<a class="moz-txt-link-abbreviated"
href="mailto:hailong.li@l-pgdb2.s.cn6">hailong.li@l-pgdb2.s.cn6</a>~]$ sudo gdb<br /> GNU gdb (GDB) Red Hat Enterprise
Linux(7.0.1-23.el5_5.2)<br /> Copyright (C) 2009 Free Software Foundation, Inc.<br /> License GPLv3+: GNU GPL version 3
orlater <a class="moz-txt-link-rfc2396E" href="http://gnu.org/licenses/gpl.html">
<http://gnu.org/licenses/gpl.html></a><br/> This is free software: you are free to change and redistribute it.<br
/>There is NO WARRANTY, to the extent permitted by law. Type "show copying"<br /> and "show warranty" for details.<br
/>This GDB was configured as "x86_64-redhat-linux-gnu".<br /> For bug reporting instructions, please see:<br /><a
class="moz-txt-link-rfc2396E"
href="http://www.gnu.org/software/gdb/bugs/"><http://www.gnu.org/software/gdb/bugs/></a>.<br/> (gdb) attach
26097<br/> Attaching to process 26097<br /> Reading symbols from /opt/pg92/bin/postgres...done.<br /> Reading symbols
from/usr/lib64/libxslt.so.1...(no debugging symbols found)...done.<br /> Loaded symbols for /usr/lib64/libxslt.so.1<br
/>Reading symbols from /usr/lib64/libxml2.so.2...(no debugging symbols found)...done.<br /> Loaded symbols for
/usr/lib64/libxml2.so.2<br/> Reading symbols from /lib64/libcrypt.so.1...(no debugging symbols found)...done.<br />
Loadedsymbols for /lib64/libcrypt.so.1<br /> Reading symbols from /lib64/libdl.so.2...(no debugging symbols
found)...done.<br/> Loaded symbols for /lib64/libdl.so.2<br /> Reading symbols from /lib64/libm.so.6...(no debugging
symbolsfound)...done.<br /> Loaded symbols for /lib64/libm.so.6<br /> Reading symbols from /lib64/libc.so.6...(no
debuggingsymbols found)...done.<br /> Loaded symbols for /lib64/libc.so.6<br /> Reading symbols from
/usr/lib64/libz.so.1...(nodebugging symbols found)...done.<br /> Loaded symbols for /usr/lib64/libz.so.1<br /> Reading
symbolsfrom /lib64/ld-linux-x86-64.so.2...(no debugging symbols found)...done.<br /> Loaded symbols for
/lib64/ld-linux-x86-64.so.2<br/> Reading symbols from /lib64/libnss_files.so.2...(no debugging symbols
found)...done.<br/> Loaded symbols for /lib64/libnss_files.so.2<br /> 0x00000039e4ed5337 in semop () from
/lib64/libc.so.6<br/> (gdb) bt<br /> #0 0x00000039e4ed5337 in semop () from /lib64/libc.so.6<br /> #1
0x00000000006985f3in PGSemaphoreLock (sema=0x2b4cb1e2bb30, interruptOK=0 '\000') at pg_sema.c:415<br /> #2
0x00000000006ea043in LWLockAcquire (lockid=355054, mode=LW_EXCLUSIVE) at lwlock.c:474<br /> #3 0x00000000006d0739 in
LockBuffer(buffer=177443, mode=2) at bufmgr.c:2533<br /> #4 0x00000000004d9ab0 in <font
color="#ff0000">spgdoinsert</font>(index=0x2b4cb26edcc0, state=0x7fffb8ce3f30, heapPtr=0xb574124, datum=190267736,
isnull=0'\000') at spgdoinsert.c:1940<br /> #5 0x00000000004d1880 in <font color="#ff0000">spginsert
</font>(fcinfo=0x7fffb8ce3fe0)at spginsert.c:220<br /> #6 0x000000000080c921 in FunctionCall6Coll (flinfo=0xb5702a0,
collation=0,arg1=47608411118784, arg2=140736293913696, arg3=140736293913664, arg4=190267684, arg5=47608411039440,
arg6=0)<br/> at fmgr.c:1439<br /> #7 0x0000000000489526 in index_insert (indexRelation=0x2b4cb26edcc0,
values=0x7fffb8ce4460,isnull=0x7fffb8ce4440 "", heap_t_ctid=0xb574124, heapRelation=0x2b4cb26da6d0, <br />
checkUnique=UNIQUE_CHECK_NO)at indexam.c:216<br /> #8 0x00000000005eaf3c in ExecInsertIndexTuples (slot=0xb56e520,
tupleid=0xb574124,estate=0xb56e290) at execUtils.c:1087<br /> #9 0x00000000005fcfb5 in ExecInsert (slot=0xb56e520,
planSlot=0xb56e520,estate=0xb56e290, canSetTag=1 '\001') at nodeModifyTable.c:248<br /> #10 0x00000000005fde2e in
ExecModifyTable(node=0xb56e5b0) at nodeModifyTable.c:848<br /> #11 0x00000000005ddde3 in ExecProcNode (node=0xb56e5b0)
atexecProcnode.c:376<br /> #12 0x00000000005dc24e in ExecutePlan (estate=0xb56e290, planstate=0xb56e5b0,
operation=CMD_INSERT,sendTuples=0 '\000', numberTuples=0, direction=ForwardScanDirection, dest=0xb556160)<br /> at
execMain.c:1393<br/> #13 0x00000000005daa2a in standard_ExecutorRun (queryDesc=0xb486830,
direction=ForwardScanDirection,count=0) at execMain.c:301<br /> #14 0x00000000005da922 in ExecutorRun
(queryDesc=0xb486830,direction=ForwardScanDirection, count=0) at execMain.c:249<br /> #15 0x00000000006fb344 in
ProcessQuery(plan=0xb50ce80, <br /> sourceText=0xb50b500 "insert into route_raw(sourceurl) values ('<a
class="moz-txt-link-freetext"
href="http://suz.bacts.com/group/group_33_128972.aspx">http://suz.bacts.com/group/group_33_128972.aspx</a>, <a
class="moz-txt-link-freetext"
href="http://www.gzl.com.cn/Travel/TeamDetail.aspx?tuanhao=GHX%B0%B2%D0%C4%C0%F6%C0%A520120613%B4%BF%CD%E6&xl=1262">
http://www.gzl.com.cn/Travel/TeamDetail.aspx?tuanhao=GHX%B0%B2%D0%C4%C0%F6%C0%A520120613%B4%BF%CD%E6&xl=1262</a>"...,
params=0x0,dest=0xb556160, completionTag=0x7fffb8ce4ae0 "") at pquery.c:185<br /> #16 0x00000000006fcaa9 in
PortalRunMulti(portal=0xb484820, isTopLevel=1 '\001', dest=0xb556160, altdest=0xb556160, completionTag=0x7fffb8ce4ae0
"")at pquery.c:1277<br /> #17 0x00000000006fc183 in PortalRun (portal=0xb484820, count=9223372036854775807,
isTopLevel=1'\001', dest=0xb556160, altdest=0xb556160, completionTag=0x7fffb8ce4ae0 "") at pquery.c:814<br /> #18
0x00000000006f66dain exec_simple_query (<br /> query_string=0xb50b500 "insert into route_raw(sourceurl) values ('<a
class="moz-txt-link-freetext"
href="http://suz.bacts.com/group/group_33_128972.aspx">http://suz.bacts.com/group/group_33_128972.aspx</a>, <a
class="moz-txt-link-freetext"
href="http://www.gzl.com.cn/Travel/TeamDetail.aspx?tuanhao=GHX%B0%B2%D0%C4%C0%F6%C0%A520120613%B4%BF%CD%E6&xl=1262">
http://www.gzl.com.cn/Travel/TeamDetail.aspx?tuanhao=GHX%B0%B2%D0%C4%C0%F6%C0%A520120613%B4%BF%CD%E6&xl=1262</a>"...)
atpostgres.c:1046<br /> #19 0x00000000006fa5bd in PostgresMain (argc=2, argv=0xb4664e8, username=0xb4663f0 "postgres")
atpostgres.c:3958<br /> #20 0x00000000006a9305 in BackendRun (port=0xb489290) at postmaster.c:3619<br /> #21
0x00000000006a8a02in BackendStartup (port=0xb489290) at postmaster.c:3304<br /> #22 0x00000000006a591a in ServerLoop ()
atpostmaster.c:1367<br /> #23 0x00000000006a52a8 in PostmasterMain (argc=3, argv=0xb464660) at postmaster.c:1127<br />
#240x000000000061cfcb in main (argc=3, argv=0xb464660) at main.c:199<br /><br /><br /><pre wrap="">I say my doubt once
one"May be the spgist index has a bug in a heavy write condition?"
My colleagues and I are looking forward very much to hearing from you.
Thanks again
Best Regards!</pre><br /><br /><blockquote cite="mid:50EBED1E.4060402@qunar.com" type="cite"><div
class="moz-cite-prefix">at2012-12-14 12:00, hailong.li wrote:<br /></div><blockquote
cite="mid:50CAA452.1060602@qunar.com"type="cite"><pre wrap="">hi,
The problem is not always appear on our system, we can't find a way to
reproduce it.
After rebuild the index with btree, the problem is disappear
at 2012-12-14 00:16, Tom Lane wrote:
</pre><blockquote type="cite"><pre wrap="">李海龙 <a class="moz-txt-link-rfc2396E" href="mailto:hailong.li@qunar.com"
moz-do-not-send="true"><hailong.li@qunar.com></a>writes:
</pre><blockquote type="cite"><pre wrap="">We have lots data to insert in that table which have the spgist index,
may be the spgist index have a bug on a heavy write condition?
</pre></blockquote><pre wrap="">Perhaps, but you certainly haven't provided any information that would
help anyone to fix the bug. Can you create a self-contained test case?
regards, tom lane
</pre></blockquote></blockquote> at 2012-12-13 23:46, hailong.li wrote:<br /><br /><pre wrap="">Hi,pgsql-hackers,
I'm not sure whether it is a bug of using spgist index or not .
OS Version:
CentOS release 6.2 (Final)
PostgreSQL Version:
postgres=# select version();
version
--------------------------------------------------------------------------------------------------------------
PostgreSQL9.2.2 on x86_64-unknown-linux-gnu, compiled by gcc (GCC)
4.4.6 20110731 (Red Hat 4.4.6-3), 64-bit
(1 row)
The lock infomation, pid 17225 was granted > # select * from pg_locks where transactionid = 45463704;
> locktype | database | relation | page | tuple | virtualxid |
transactionid | classid | objid | objsubid | virtualtransaction | pid | mode | granted | f > astpath >
---------------+----------+----------+------+-------+------------+---------------+---------+-------+----------+--------------------+-------+---------------+---------+--
>-------- > transactionid | | | | | |
45463704 | | | | 131/103 | 17225 |
ExclusiveLock | t | f > transactionid | | | | | |
45463704 | | | | 185/44 | 24592 |
ShareLock | f | f > (2 rows)
The query is come from 192.168.232.43,but we already killed the process
at that server, there is no tcp connection from that server, the
following command output nothing. > # netstat -anp | grep 192.168.232.43
Postgres process stat which running the query, it's doing a insert. > postgres 17225 0.0 0.0 1763812 19056 ?
Ss 21:48 0:00
postgres: searcher vacation 192.168.232.43(64757) INSERT >
Strace info for pid 17225 > # strace -p 17225 > Process 17225 attached - interrupt to quit > semop(877035566,
{{5,-1, 0}}, 1
backtrace for pid 17225, we found there is running some function named
like spgxxxx > Missing separate debuginfos, use: debuginfo-install
pg92-9.2.2-2.el6.x86_64 > (gdb) bt > #0 0x0000003d6baea747 in semop () from /lib64/libc.so.6 > #1
0x00000000005fef57in PGSemaphoreLock () > #2 0x000000000063f1a4 in LWLockAcquire () > #3 0x00000000004b7002 in
spgdoinsert() > #4 0x00000000004b25e1 in spginsert () > #5 0x00000000007155a4 in FunctionCall6Coll () > #6
0x000000000047b4e0in index_insert () > #7 0x00000000005871d2 in ExecInsertIndexTuples () > #8
0x0000000000594747in ExecModifyTable () > #9 0x000000000057de18 in ExecProcNode () > #10 0x000000000057ccb1 in
standard_ExecutorRun() > #11 0x000000000064e93f in ProcessQuery () > #12 0x000000000064eb6f in PortalRunMulti ()
>#13 0x000000000064f32e in PortalRun () > #14 0x000000000064cba2 in PostgresMain () > #15 0x000000000060a547
inServerLoop () > #16 0x000000000060d077 in PostmasterMain () > #17 0x00000000005ac3d0 in main ()
We have lots data to insert in that table which have the spgist index,
may be the spgist index have a bug on a heavy write condition?
Thanks
Best Regards!
</pre></blockquote><br />
В списке pgsql-hackers по дате отправления: