Closed
Description
This is a master issue for all things related to local datastore performance improvements.
- Make LDS stop checkpointing and making copies of objects for mutable containers (Removed 'mutable containers' functionality. #102)
- Make LDS query matching more efficient by not loading every object into memory for a specified pin.
- Make LDS use
PFObjectState
andPFUserState
instead ofPFObject
andPFUser
, to reduce the amount of locking required for every LDS operation. - Improve LDS
PFRelation
tracking. - Update LDS database schema to allow for query matching in the database layer itself.
For anyone reaching this issue as a result of currently bad LDS performance here's our current recommendations:
- Keep your object schemas as small as possible - the faster it is to parse them from JSON, the better.
- Relations are currently inefficient. If you can avoid them, do so.
- Minimize usage of any values of the following classes:
- NSArray
- NSDictionary
- PFACL
- PFGeoPoint
- Whenever possible, use smaller pins. Because LDS loads all objects in a single pin before evaluating a query, the smaller the pin is, the better.