Bug #8918

memcached backend: Remove tagIndex

Added by Christian Kuhn over 10 years ago. Updated over 10 years ago.

Status:
Resolved
Priority:
Should have
Category:
Cache
Start date:
2010-08-16
Due date:
% Done:

100%

Estimated time:
PHP Version:
Has patch:
Complexity:

Description

Problem:
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

#1

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)
#2

Updated by Karsten Dambekalns over 10 years ago

  • Target version set to 1.0 alpha 11
  • Start date set to 2010-08-16
#3

Updated by Karsten Dambekalns over 10 years ago

  • Status changed from Accepted to Resolved
  • % Done changed from 0 to 100

Applied in changeset r4974.

Also available in: Atom PDF