Message4416
We are using Roundup with the MySQL backend for a tracker instance with
almost half a million messages and about 32.000 issues. With this amount
of data, we saw a degradation of performance over time, mainly because
MySQL was unable to answer more complex filter queries without resorting
to table scans and on-disk sorting.
Wondering, why this should be necessary after all, i found the problem
to be the column data types in multilink tables - they are declared as
varchar(255) instead of integer. This, for sure, makes many queries
quite expensive, as e. g. joins require on-the-fly type conversions and
can't make use of the sort order in indexes and the table itself.
In our tracker instance, i changed the type to integer for all the
existing multilink tables, and the performance improvement really makes
a big difference.
Now i would like to ask: Is there any good reason for having linkid and
nodeid declared as a varchar(255) on MySQL and not going with the
default in rdbms_common?
def create_multilink_table(self, spec, ml):
sql = '''CREATE TABLE `%s_%s` (linkid VARCHAR(255),
nodeid VARCHAR(255)) ENGINE=%s'''%(spec.classname, ml,
self.mysql_backend)
self.sql(sql)
self.create_multilink_table_indexes(spec, ml) |
|
Date |
User |
Action |
Args |
2011-09-06 12:02:14 | whunger | set | recipients:
+ whunger |
2011-09-06 12:02:14 | whunger | set | messageid: <1315310534.69.0.281040365811.issue2550725@psf.upfronthosting.co.za> |
2011-09-06 12:02:14 | whunger | link | issue2550725 messages |
2011-09-06 12:02:14 | whunger | create | |
|