You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@manifoldcf.apache.org by "Karl Wright (JIRA)" <ji...@apache.org> on 2014/09/12 08:56:33 UTC

[jira] [Resolved] (CONNECTORS-1027) Database performance optimization

     [ https://issues.apache.org/jira/browse/CONNECTORS-1027?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Karl Wright resolved CONNECTORS-1027.
-------------------------------------
    Resolution: Fixed

> Database performance optimization
> ---------------------------------
>
>                 Key: CONNECTORS-1027
>                 URL: https://issues.apache.org/jira/browse/CONNECTORS-1027
>             Project: ManifoldCF
>          Issue Type: Task
>          Components: Framework core
>    Affects Versions: ManifoldCF 1.7
>            Reporter: Karl Wright
>            Assignee: Karl Wright
>             Fix For: ManifoldCF 2.0
>
>         Attachments: CONNECTORS-1027.conjunction.patch, CONNECTORS-1027.ui.patch
>
>
> Some database queries seem to perform better against postgresql in different form.  For example:
> {code}
>  SELECT
>  t0.id,t0.jobid,t0.dochash,t0.docid,t0.status,t0.failtime,t0.failcount,
>  t0.priorityset FROM jobqueue t0
>  WHERE t0.status IN ('P','G')  AND t0.checkaction='R' AND t0.checktime
>  <= 1407246846166
>  AND EXISTS (
>    SELECT 'x' FROM jobs t1
>    WHERE t1.status  IN ('A','a')  AND t1.id=t0.jobid  AND t1.priority=5
>  )
>  AND NOT EXISTS (
>    SELECT 'x' FROM jobqueue t2
>    WHERE t2.dochash=t0.dochash AND t2.status IN
>  ('A','F','a','f','D','d') AND t2.jobid!=t0.jobid
>  )
>  AND NOT EXISTS (
>    SELECT 'x' FROM prereqevents t3,events t4
>    WHERE t0.id=t3.owner AND t3.eventname=t4.name
>  )
>  ORDER BY t0.docpriority ASC
>  LIMIT 480;
> {code}
> ...apparently performs better on some versions of postgresql when written like this:
> {code}
>  SELECT
>  t0.id,t0.jobid,t0.dochash,t0.docid,t0.status,t0.failtime,t0.failcount,
>  t0.priorityset FROM jobqueue t0
>  WHERE (t0.status = 'P' OR t0.status = 'G')  AND t0.checkaction='R' AND
>  t0.checktime <= 1407246846166
> AND EXISTS (
>    SELECT 'x' FROM jobs t1
>    WHERE (t1.status = 'A' OR t1.status = 'a')  AND t1.id=t0.jobid  AND
>  t1.priority=5
>  )
>  AND NOT EXISTS (
>    SELECT 'x' FROM jobqueue t2
>    WHERE t2.dochash=t0.dochash AND (t2.status = 'A' OR t2.status = 'F'
>  OR t2.status = 'a' OR t2.status = 'f' OR t2.status = 'D' OR t2.status
>  = 'd')
>    AND t2.jobid!=t0.jobid
>  )
>  AND NOT EXISTS (
>    SELECT 'x' FROM prereqevents t3,events t4
>    WHERE t0.id=t3.owner AND t3.eventname=t4.name
>  )
>  ORDER BY t0.docpriority ASC
>  LIMIT 480;
> {code}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)