Optimizing SecuritySuite
Been on SecuritySuite for awhile now and need it to run faster? Here are a few things try:
Remove all of the deleted records in securitygroups_records.
delete from securitygroups_records where deleted = 1;
Then delete duplicates
delete r from securitygroups_records r
inner join securitygroups_records r2 on r.module = r2.module
and r.record_id = r2.record_id and r2.deleted = 0
and r.id <> r2.id and r.date_modified > r2.date_modified
where r.deleted = 0;
Alternative Query Method
Depending on the database engine, it may be beneficial to enable an option to use a different query method. To try this add the following to your config_override.php:
$sugar_config['securitysuite_use_exists_query'] = true;
Other options
You can find records with many groups associated to it with (change table/count as desired):
select m.name, count(1)
from meetings m
inner join securitygroups_records r on m.id = r.record_id and r.module = 'Meetings' and r.deleted = 0
group by r.id
having count(r.id) > 2;
Some other things to try: 1) Upgrade to at least MySQL 5.5 if you haven't already (200-360% performance boost). 2) Reassess how groups are being used 3) Make sure InnoDB is being used as the db engine 4) Disable list count queries in SugarCRM 5) Reassess and apply tuner recommendations (https://github.com/rackerhacker/MySQLTuner-perl) 6) Optimize MySQL tables (mysqlcheck) 7) See if it's a specific module: select module, count(*) from securitygroups_records group by module; 8) Defrag the securitygroups_records table (after doing deletes):
http://dev.mysql.com/doc/refman/5.0/en/innodb-file-defragmenting.html
ALTER TABLE securitygroups_records ENGINE=INNODB;
OPTIMIZE TABLE securitygroups_records;