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.174rows=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.
>
>

Reply via email to