Hello,
We have created a websitein modx that should receive 25k visitors a day.
We have an array of PHP servers but 1 mysql server. So we need to ensure that all calls to the db are cached.
What I have tried with modx.
1) Turned on cache_db in systems settings
Results: "Most of the db calls" are cached.
Looking at the mysql query log, there are still calls to the modx_session table and calls to modx_access_resources_groups.
2) To remove the session db calls.
Turned on system settings -> Enable database session cache.
Result: I see that the session related queries are gone. Good
3) Remaining uncached db queries.
My mysql log still outputs a list of queries. So not all the db queries are cached.
For example:
The 8 queries are always made, each return empty result set.
SELECT Acl.target, Acl.principal, Acl.authority, Acl.policy, Policy.data FROM `modx_access_resource_groups` Acl LEFT JOIN `modx_access_policies` Policy ON Policy.id = Acl.policy JOIN `modx_document_groups` ResourceGroup ON Acl.principal_class = 'modUserGroup' AND (Acl.context_key = 'web' OR Acl.context_key IS NULL OR Acl.context_key = '') AND ResourceGroup.document = '1' AND ResourceGroup.document_group = Acl.target GROUP BY Acl.target, Acl.principal, Acl.authority, Acl.policy
SELECT Acl.target, Acl.principal, Acl.authority, Acl.policy, Policy.data FROM `modx_access_resource_groups` Acl LEFT JOIN `modx_access_policies` Policy ON Policy.id = Acl.policy JOIN `modx_document_groups` ResourceGroup ON Acl.principal_class = 'modUserGroup' AND (Acl.context_key = 'web' OR Acl.context_key IS NULL OR Acl.context_key = '') AND ResourceGroup.document = '1' AND ResourceGroup.document_group = Acl.target GROUP BY Acl.target, Acl.principal, Acl.authority, Acl.policy
SELECT Acl.target, Acl.principal, Acl.authority, Acl.policy, Policy.data FROM `modx_access_resource_groups` Acl LEFT JOIN `modx_access_policies` Policy ON Policy.id = Acl.policy JOIN `modx_document_groups` ResourceGroup ON Acl.principal_class = 'modUserGroup' AND (Acl.context_key = 'web' OR Acl.context_key IS NULL OR Acl.context_key = '') AND ResourceGroup.document = '64' AND ResourceGroup.document_group = Acl.target GROUP BY Acl.target, Acl.principal, Acl.authority, Acl.policy
SELECT Acl.target, Acl.principal, Acl.authority, Acl.policy, Policy.data FROM `modx_access_resource_groups` Acl LEFT JOIN `modx_access_policies` Policy ON Policy.id = Acl.policy JOIN `modx_site_tmplvar_access` ResourceGroup ON Acl.principal_class = 'modUserGroup' AND (Acl.context_key = 'web' OR Acl.context_key IS NULL OR Acl.context_key = '') AND ResourceGroup.tmplvarid = '123' AND ResourceGroup.documentgroup = acl.target ORDER BY Acl.target, Acl.principal, Acl.authority
SELECT Acl.target, Acl.principal, Acl.authority, Acl.policy, Policy.data FROM `modx_access_category` Acl LEFT JOIN `modx_access_policies` Policy ON Policy.id = Acl.policy JOIN `modx_categories_closure` CategoryClosure ON CategoryClosure.descendant = '13' AND Acl.principal_class = 'modUserGroup' AND CategoryClosure.ancestor = Acl.target AND (Acl.context_key = 'web' OR Acl.context_key IS NULL OR Acl.context_key = '') ORDER BY CategoryClosure.depth DESC, target, principal, authority ASC
SELECT Acl.target, Acl.principal, Acl.authority, Acl.policy, Policy.data FROM `modx_access_resource_groups` Acl LEFT JOIN `modx_access_policies` Policy ON Policy.id = Acl.policy JOIN `modx_site_tmplvar_access` ResourceGroup ON Acl.principal_class = 'modUserGroup' AND (Acl.context_key = 'web' OR Acl.context_key IS NULL OR Acl.context_key = '') AND ResourceGroup.tmplvarid = '52' AND ResourceGroup.documentgroup = acl.target ORDER BY Acl.target, Acl.principal, Acl.authority
SELECT Acl.target, Acl.principal, Acl.authority, Acl.policy, Policy.data FROM `modx_access_category` Acl LEFT JOIN `modx_access_policies` Policy ON Policy.id = Acl.policy JOIN `modx_categories_closure` CategoryClosure ON CategoryClosure.descendant = '13' AND Acl.principal_class = 'modUserGroup' AND CategoryClosure.ancestor = Acl.target AND (Acl.context_key = 'web' OR Acl.context_key IS NULL OR Acl.context_key = '') ORDER BY CategoryClosure.depth DESC, target, principal, authority ASC
SELECT Acl.target, Acl.principal, Acl.authority, Acl.policy, Policy.data FROM `modx_access_resource_groups` Acl LEFT JOIN `modx_access_policies` Policy ON Policy.id = Acl.policy JOIN `modx_document_groups` ResourceGroup ON Acl.principal_class = 'modUserGroup' AND (Acl.context_key = 'web' OR Acl.context_key IS NULL OR Acl.context_key = '') AND ResourceGroup.document = '1' AND ResourceGroup.document_group = Acl.target GROUP BY Acl.target, Acl.principal, Acl.authority, Acl.policy
Is there any way that I can completly prevent DB query for a period of time once the cache is primed.
Any advice appreciated.
Thanks
Jim