Opened 18 years ago
Closed 18 years ago
#4732 closed defect (fixed)
pypgsql overuses server-side cursors resulting in large performance penalty
Reported by: | Owned by: | Christian Boos | |
---|---|---|---|
Priority: | high | Milestone: | 0.10.4 |
Component: | general | Version: | 0.10.3 |
Severity: | major | Keywords: | pypgsql cursor |
Cc: | jeremy@… | Branch: | |
Release Notes: | |||
API Changes: | |||
Internal Changes: |
Description
Most trac + postgres installs are using pyscopg2 which pulls full result sets for cursor.execute by default.
pypgsql, on the other hand, uses server-side cursors by default, leading to incredibly inefficient queries: rather than fetch e.g. select ... limit 20
all at once, it does declare cursor; fetch 1; fetch 1; ...
Fortunately, server-side cursors can be turned off with great results. I imagine some of pypgsql's widespread perception of slowness with Trac is due to this strange default behavior.
Attachments (1)
Change History (3)
by , 18 years ago
Attachment: | pypgsql_cursor_fix.diff added |
---|
comment:1 by , 18 years ago
Owner: | changed from | to
---|---|
Priority: | normal → high |
Thanks for the investigation and the fix!
comment:2 by , 18 years ago
Resolution: | → fixed |
---|---|
Status: | new → closed |
disable server-side cursors when using pypgsql