> Hello Mat, > > Setting enable_bitmapscan to off doesn't really helps. It gets worse... > > x=> SET enable_bitmapscan=off; > SET > x=> explain analyze select * from (select * from entity2document2 where > name='ranitidine' ) as a order by a.hepval; > > QUERY PLAN > > ---------------------------------------------------------------------------------------------------------------------------------------------------------------- > Sort (cost=18789.21..18800.70 rows=4595 width=131) (actual > time=79965.282..79966.657 rows=13512 loops=1) > Sort Key: entity2document2.hepval > Sort Method: quicksort Memory: 2301kB > -> Index Scan using entity2document2_name on entity2document2 > (cost=0.00..18509.70 rows=4595 width=131) (actual time=67.507..79945.362 > rows=13512 loops=1) > Index Cond: ((name)::text = 'ranitidine'::text) > Total runtime: 79967.705 ms > (6 rows) > > Any other idea? >
Please post your hw configuration. I think that your db is on disk and they are slow. > Thank you very much for your help. Regards, > Andrés > > El Mar 6, 2014, a las 2:11 PM, desmodemone escribió: > >> >> Il 05/mar/2014 00:36 "Venkata Balaji Nagothi" <vbn...@gmail.com> ha scritto: >> > >> > After looking at the distinct values, yes the composite Index on "name" >> > and "hepval" is not recommended. That would worsen - its expected. >> > >> > We need to look for other possible work around. Please drop off the above >> > Index. Let me see if i can drill further into this. >> > >> > Meanwhile - can you help us know the memory parameters (work_mem, >> > temp_buffers etc) set ? >> > >> > Do you have any other processes effecting this query's performance ? >> > >> > Any info about your Disk, RAM, CPU would also help. >> > >> > Regards, >> > Venkata Balaji N >> > >> > Fujitsu Australia >> > >> > >> > >> > >> > Venkata Balaji N >> > >> > Sr. Database Administrator >> > Fujitsu Australia >> > >> > >> > On Tue, Mar 4, 2014 at 10:23 PM, acanada <acan...@cnio.es> wrote: >> >> >> >> Hello, >> >> >> >> I don't know if this helps to figure out what is the problem but after >> >> adding the multicolumn index on name and hepval, the performance is even >> >> worse (¿?). Ten times worse... >> >> >> >> explain analyze select * from (select * from entity_compounddict2document >> >> where name='progesterone') as a order by a.hepval; >> >> >> >> QUERY PLAN >> >> >> >> ------------------------------------------------------------------------------------------------------------------------------------------------------------- >> >> Sort (cost=422746.18..423143.94 rows=159104 width=133) (actual >> >> time=95769.674..95797.943 rows=138165 loops=1) >> >> Sort Key: entity_compounddict2document.hepval >> >> Sort Method: quicksort Memory: 25622kB >> >> -> Bitmap Heap Scan on entity_compounddict2document >> >> (cost=3501.01..408999.90 rows=159104 width=133) (actual >> >> time=70.789..95519.258 rows=138165 loops=1) >> >> Recheck Cond: ((name)::text = 'progesterone'::text) >> >> -> Bitmap Index Scan on entity_compound2document_name >> >> (cost=0.00..3461.23 rows=159104 width=0) (actual time=35.174..35.174 >> >> rows=138165 loops=1) >> >> Index Cond: ((name)::text = 'progesterone'::text) >> >> Total runtime: 95811.838 ms >> >> (8 rows) >> >> >> >> Any ideas please? >> >> >> >> Thank you >> >> Andrés. >> >> >> >> >> >> >> >> El Mar 4, 2014, a las 12:28 AM, Venkata Balaji Nagothi escribió: >> >> >> >>> On Mon, Mar 3, 2014 at 9:17 PM, acanada <acan...@cnio.es> wrote: >> >>>> >> >>>> Hello, >> >>>> >> >>>> Thankyou for your answer. >> >>>> I have made more changes than a simple re-indexing recently. I have >> >>>> moved the sorting field to the table in order to avoid the join clause. >> >>>> Now the schema is very simple. The query only implies one table: >> >>>> >> >>>> x=> \d+ entity_compounddict2document; >> >>>> Table "public.entity_compounddict2document" >> >>>> Column | Type | Modifiers | >> >>>> Storage | Description >> >>>> ------------------+--------------------------------+-----------+----------+------------- >> >>>> id | integer | not null | plain >> >>>> | >> >>>> document_id | integer | | plain >> >>>> | >> >>>> name | character varying(255) | | >> >>>> extended | >> >>>> qualifier | character varying(255) | | >> >>>> extended | >> >>>> tagMethod | character varying(255) | | >> >>>> extended | >> >>>> created | timestamp(0) without time zone | | plain >> >>>> | >> >>>> updated | timestamp(0) without time zone | | plain >> >>>> | >> >>>> curation | integer | | plain >> >>>> | >> >>>> hepval | double precision | | plain >> >>>> | >> >>>> cardval | double precision | | plain >> >>>> | >> >>>> nephval | double precision | | plain >> >>>> | >> >>>> phosval | double precision | | plain >> >>>> | >> >>>> patternCount | double precision | | plain >> >>>> | >> >>>> ruleScore | double precision | | plain >> >>>> | >> >>>> hepTermNormScore | double precision | | plain >> >>>> | >> >>>> hepTermVarScore | double precision | | plain >> >>>> | >> >>>> Indexes: >> >>>> "entity_compounddict2document_pkey" PRIMARY KEY, btree (id) >> >>>> "entity_compound2document_cardval" btree (cardval) >> >>>> "entity_compound2document_heptermnormscore" btree >> >>>> ("hepTermNormScore") >> >>>> "entity_compound2document_heptermvarscore" btree ("hepTermVarScore") >> >>>> "entity_compound2document_hepval" btree (hepval) >> >>>> "entity_compound2document_name" btree (name) >> >>>> "entity_compound2document_nephval" btree (nephval) >> >>>> "entity_compound2document_patterncount" btree ("patternCount") >> >>>> "entity_compound2document_phosval" btree (phosval) >> >>>> "entity_compound2document_rulescore" btree ("ruleScore") >> >>>> Has OIDs: no >> >>>> >> >>>> tablename | indexname >> >>>> | num_rows | table_size | >> >>>> index_size | unique | number_of_scans | tuples_read | tuples_fetched >> >>>> entity_compounddict2document | entity_compound2document_cardval >> >>>> | 5.42452e+07 | 6763 MB | 1162 MB | Y | >> >>>> 0 | 0 | 0 >> >>>> entity_compounddict2document | >> >>>> entity_compound2document_heptermnormscore | 5.42452e+07 | 6763 MB >> >>>> | 1162 MB | Y | 0 | 0 | 0 >> >>>> entity_compounddict2document | >> >>>> entity_compound2document_heptermvarscore | 5.42452e+07 | 6763 MB >> >>>> | 1162 MB | Y | 0 | 0 | 0 >> >>>> entity_compounddict2document | entity_compound2document_hepval >> >>>> | 5.42452e+07 | 6763 MB | 1162 MB | Y | >> >>>> 0 | 0 | 0 >> >>>> entity_compounddict2document | entity_compound2document_name >> >>>> | 5.42452e+07 | 6763 MB | 1505 MB | Y | >> >>>> 24 | 178680 | 0 >> >>>> entity_compounddict2document | entity_compound2document_nephval >> >>>> | 5.42452e+07 | 6763 MB | 1162 MB | Y | >> >>>> 0 | 0 | 0 >> >>>> entity_compounddict2document | entity_compound2document_patterncount >> >>>> | 5.42452e+07 | 6763 MB | 1162 MB | Y | >> >>>> 0 | 0 | 0 >> >>>> entity_compounddict2document | entity_compound2document_phosval >> >>>> | 5.42452e+07 | 6763 MB | 1162 MB | Y | >> >>>> 0 | 0 | 0 >> >>>> entity_compounddict2document | entity_compound2document_rulescore >> >>>> | 5.42452e+07 | 6763 MB | 1162 MB | Y | >> >>>> 0 | 0 | 0 >> >>>> entity_compounddict2document | entity_compounddict2document_pkey >> >>>> | 5.42452e+07 | 6763 MB | 1162 MB | Y | >> >>>> 0 | 0 | 0 >> >>>> >> >>>> The table has aprox. 54,000,000 rows >> >>>> There are no NULLs in hepval field and pg_settings haven't changed. I >> >>>> also have done "analyze" to this table. >> >>>> >> >>>> I have simplified the query and added the last advise that you told me: >> >>>> >> >>>> Query: >> >>>> >> >>>> explain analyze select * from (select * from >> >>>> entity_compounddict2document where name='ranitidine') as a order by >> >>>> a.hepval; >> >>>> >> >>>> QUERY PLAN >> >>>> >> >>>> ------------------------------------------------------------------------------------------------------------------------------------------------------ >> >>>> Sort (cost=11060.50..11067.55 rows=2822 width=133) (actual >> >>>> time=32715.097..32716.488 rows=13512 loops=1) >> >>>> Sort Key: entity_compounddict2document.hepval >> >>>> Sort Method: quicksort Memory: 2301kB >> >>>> -> Bitmap Heap Scan on entity_compounddict2document >> >>>> (cost=73.82..10898.76 rows=2822 width=133) (actual >> >>>> time=6.034..32695.483 rows=13512 loops=1) >> >>>> Recheck Cond: ((name)::text = 'ranitidine'::text) >> >>>> -> Bitmap Index Scan on entity_compound2document_name >> >>>> (cost=0.00..73.12 rows=2822 width=0) (actual time=3.221..3.221 >> >>>> rows=13512 loops=1) >> >>>> Index Cond: ((name)::text = 'ranitidine'::text) >> >>>> Total runtime: 32717.548 ms >> >>>> >> >>>> Another query: >> >>>> explain analyze select * from (select * from >> >>>> entity_compounddict2document where name='progesterone' ) as a order >> >>>> by a.hepval; >> >>>> >> >>>> QUERY PLAN >> >>>> ------------------------------------------------------------------------------------------------------------------------------------------------------------ >> >>>> Sort (cost=367879.25..368209.24 rows=131997 width=133) (actual >> >>>> time=9262.887..9287.046 rows=138165 loops=1) >> >>>> Sort Key: entity_compounddict2document.hepval >> >>>> Sort Method: quicksort Memory: 25622kB >> >>>> -> Bitmap Heap Scan on entity_compounddict2document >> >>>> (cost=2906.93..356652.81 rows=131997 width=133) (actual >> >>>> time=76.316..9038.485 rows=138165 loops=1) >> >>>> Recheck Cond: ((name)::text = 'progesterone'::text) >> >>>> -> Bitmap Index Scan on entity_compound2document_name >> >>>> (cost=0.00..2873.93 rows=131997 width=0) (actual time=40.913..40.913 >> >>>> rows=138165 loops=1) >> >>>> Index Cond: ((name)::text = 'progesterone'::text) >> >>>> Total runtime: 9296.815 ms >> >>>> >> >>>> >> >>>> It has improved (I supose because of the lack of the join table) but >> >>>> still taking a lot of time... Anything I can do?? >> >>>> >> >>>> Any help would be very appreciated. Thank you very much. >> >>> >> >>> >> >>> >> >>> Good to know performance has increased. >> >>> >> >>> "entity_compounddict2document" table goes through high INSERTS ? >> >>> >> >>> Can you help us know if the "helpval" column and "name" column have high >> >>> duplicate values ? "n_distinct" value from pg_stats table would have >> >>> that info. >> >>> >> >>> Below could be a possible workaround - >> >>> >> >>> As mentioned earlier in this email, a composite Index on name and hepval >> >>> column might help. If the table does not go through lot of INSERTS, then >> >>> consider performing a CLUSTER on the table using the same INDEX. >> >>> >> >>> Other recommendations - >> >>> >> >>> Please drop off all the Non-primary key Indexes which have 0 scans / >> >>> hits. This would harm the DB and the DB server whilst maintenance and >> >>> DML operations. >> >>> >> >>> Regards, >> >>> Venkata Balaji N >> >>> >> >>> Fujitsu Australia >> >> >> >> >> >> >> >> **NOTA DE CONFIDENCIALIDAD** Este correo electrónico, y en su caso los >> >> ficheros adjuntos, pueden contener información protegida para el uso >> >> exclusivo de su destinatario. Se prohíbe la distribución, reproducción o >> >> cualquier otro tipo de transmisión por parte de otra persona que no sea >> >> el destinatario. Si usted recibe por error este correo, se ruega >> >> comunicarlo al remitente y borrar el mensaje recibido. >> >> >> >> **CONFIDENTIALITY NOTICE** This email communication and any attachments >> >> may contain confidential and privileged information for the sole use of >> >> the designated recipient named above. Distribution, reproduction or any >> >> other use of this transmission by any party other than the intended >> >> recipient is prohibited. If you are not the intended recipient please >> >> contact the sender and delete all copies. >> >> >> > >> >> >> >> Hi I think the problem is th heap scan of the table , that the backend have >> to do because the btree to bitmap conversion becomes lossy. Try to disable >> the enable_bitmapscan for the current session and rerun the query. >> >> Mat Dba >> > > > > **NOTA DE CONFIDENCIALIDAD** Este correo electrónico, y en su caso los > ficheros adjuntos, pueden contener información protegida para el uso > exclusivo de su destinatario. Se prohíbe la distribución, reproducción o > cualquier otro tipo de transmisión por parte de otra persona que no sea el > destinatario. Si usted recibe por error este correo, se ruega comunicarlo al > remitente y borrar el mensaje recibido. > > **CONFIDENTIALITY NOTICE** This email communication and any attachments may > contain confidential and privileged information for the sole use of the > designated recipient named above. Distribution, reproduction or any other use > of this transmission by any party other than the intended recipient is > prohibited. If you are not the intended recipient please contact the sender > and delete all copies. > > -- Sent via pgsql-performance mailing list (pgsql-performance@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-performance