mirror of
https://we.phorge.it/source/phorge.git
synced 2024-12-03 20:22:46 +01:00
4adaf53bf0
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 |
||
---|---|---|
.. | ||
__tests__ | ||
PhabricatorHandleQuery.php | ||
PhabricatorObjectListQuery.php | ||
PhabricatorObjectQuery.php |