1
0
Fork 0
mirror of https://we.phorge.it/source/phorge.git synced 2025-02-26 05:29:06 +01:00
phorge-phorge/src/applications/people/storage
epriestley 4adaf53bf0 Dramatically increase cache hit rate for feed
Summary:
Ref T8631. The query plan for feed stories is really bad right now, because we miss caches we should be hitting:

  - The workspace cache is stored at each query, so adjacent queries can't benefit from the cache (only subqueries). Feed has primarily sibling queries.
    - There is no technical reason to do this. Store the workspace cache on the root query, so sibling queries can hit it.
  - In `ObjectQuery`, we check the workspace once, then load all the PHIDs. When the PHIDs are a mixture of transactions and objects, we always miss the workspace and load the objects twice.
    - Instead, check the workspace after loading each type of object.
  - `HandleQuery` does not set itself as the parent query for `ObjectQuery`, so handles never hit the workspace cache.
    - Pass it, so they can hit the workspace cache.
  - Feed's weird `PhabricatorFeedStory::loadAllFromRows()` method does not specify a parent query on its object/handle queries.
    - Just declare the object query to be the "root" query until this eventually gets cleaned up.

Test Plan: Saw queries for each object drop from 4-6x to 1x in `/feed/`.

Reviewers: btrahan

Reviewed By: btrahan

Subscribers: epriestley

Maniphest Tasks: T8631

Differential Revision: https://secure.phabricator.com/D13479
2015-06-30 11:19:41 -07:00
..
__tests__ phtize all the things 2015-05-22 21:16:39 +10:00
PhabricatorExternalAccount.php Fix visiblity of LiskDAO::getConfiguration() 2015-01-14 06:54:13 +11:00
PhabricatorRegistrationProfile.php New Registration Workflow 2013-06-16 10:13:49 -07:00
PhabricatorUser.php Dramatically increase cache hit rate for feed 2015-06-30 11:19:41 -07:00
PhabricatorUserConfiguredCustomFieldStorage.php Various linter fixes. 2014-02-26 12:44:58 -08:00
PhabricatorUserCustomFieldNumericIndex.php Various linter fixes. 2014-02-26 12:44:58 -08:00
PhabricatorUserCustomFieldStringIndex.php Various linter fixes. 2014-02-26 12:44:58 -08:00
PhabricatorUserDAO.php Delete license headers from files 2012-11-05 11:16:51 -08:00
PhabricatorUserEmail.php phtize all the things 2015-05-22 21:16:39 +10:00
PhabricatorUserLog.php Add "Mailing List" users 2015-06-03 18:42:33 -07:00
PhabricatorUserProfile.php Fix visiblity of LiskDAO::getConfiguration() 2015-01-14 06:54:13 +11:00
PhabricatorUserSchemaSpec.php Fix various MySQL version issues with new charset stuff 2014-10-29 15:49:29 -07:00
PhabricatorUserTransaction.php Rename PHIDType classes 2014-07-24 08:05:46 +10:00