• Julien Muchembled's avatar
    storage: speed up reads by indexing 'obj' primarily by 'oid' (instead of 'tid') · 3c7a3160
    Julien Muchembled authored
    getObject becomes faster because it does not use secondary index anymore.
    Only the primary one. This frees RAM during normal operation. For MySQL,
    DatabaseManager._getObject is sped up by ~3% for in-memory loads.
    An improvement of ~1% from ERP5 was also mesured for IO-bound loads.
    
    On insertion, the fast index is (`partition`, tid, oid) because we almost
    always insert lines with increasing tid, whereas oid values are more random.
    Although the value (data_id+value_tid) is moved from the fast to the slow index,
    this should have little impact on performance because the value size is quite
    small compared to the key.
    
    The impact on replication should also be negligible:
    - a little faster when there's no oid to replicate: only the secondary index,
      smaller, is scanned
    - otherwise: the (slightly) biggest index is scanned randomly
    
    On disk usage, an increase of ~4% was observed for TokuDB.
    Less compressibility ? Any link with https://jira.percona.com/browse/TDB-86 ?
    3c7a3160
sqlite.py 26.4 KB