Performance Tweaking¶
Recommendations¶
- SSD is preferred over HDD.
- Dedicated server is preferred over shared.
- More RAM can be helpful if your database grows.
Database indexes¶
By default, EspoCRM has some pre-defined indexes. As your database gets bigger, it's reasonable to create new indexes. What exactly indexes are needed, depends on how you use CRM and how you customized it: what custom fields are created, default record orders are set, reports are often run, searches are usually performed, etc.
- You need indexes for fields that are used for a default order.
- You need indexes for fields that are often used in filters (reports & regular searches).
See the article on how to create indexes.
Database choice¶
Filters by teams, relations, multi-enums perform faster in MariaDB and PostgreSQL than in MySQL (as of the date of we performed tests).
MySQL and MariaDB parameters¶
innodb_buffer_pool_size¶
It's recommended to set a value that is about 70% of your RAM.
sort_buffer_size¶
You may consider increasing this param to speed up ORDER BY or GROUP BY. See more.
innodb_log_file_size¶
Should be large enough. See more.
innodb_flush_log_at_trx_commit¶
We recommend to set it to 2.
Misc¶
Disabling total count on list view¶
It is relevant if there are a lot of records of a specific entity type in the database. In this case, it can be reasonable to disable displaying the record count in the list view for that entity type, since the COUNT function may perform very slow in MySQL and MariaDB.
To disable: Administration > Entity Manager > {entity type} > Edit > check Disable record count.
Use full-text search¶
Create full-text search indexes for large tables. It will improve record lookup.
PHP configuration¶
Preloading¶
You can use a preloading. The file preload.php is available at the root directory.
Using preloading is not likely to bring a significant performance boost. The database usually is the bottleneck in applications like CRM.
Important
Preloading must be disabled before upgrading and extension installation.