Bug #8918
memcached backend: Remove tagIndex
100%
Description
The memcached backend implementation currenty stores this key-value "structure" to map our identifier-data-keys relation:
- identifier -> data
- identifier -> keys
- key -> identifiers
- tagIndex -> All known tags
The tagIndex doesn't have any benefit at all, it just leads to more set() and get() calls.
Solution:
Completly remove tagIndex to save some operations which speeds up this backend, unit tests still show green bar.
Numbers:
Performance tests show that the backend speeds up between ~10 to 100% by removing the tagIndex. As an example, attached images show a test which set()'s a raising number of cache entries with a single attached tag to the backend. More numbers can be generated with ext:enetcacheanalytics (forge) in v4.
Notes:
Memcache is a simple key-value store and not designed to store structures of multiple related entries. Our implementation is a misuse, which leads to corrupt caches if memcache evicts entries from cache (because it needs space for new elements), or if single servers fail in a multi server environment.
Files
Updated by Karsten Dambekalns over 10 years ago
- Status changed from New to Accepted
- Assignee set to Karsten Dambekalns
- Start date deleted (
2010-07-17)
Updated by Karsten Dambekalns over 10 years ago
- Target version set to 1.0 alpha 11
- Start date set to 2010-08-16
Updated by Karsten Dambekalns over 10 years ago
- Status changed from Accepted to Resolved
- % Done changed from 0 to 100
Applied in changeset r4974.