Vladimir Ozerov created IGNITE-6930: ---------------------------------------
Summary: Non-persistent free lists Key: IGNITE-6930 URL: https://issues.apache.org/jira/browse/IGNITE-6930 Project: Ignite Issue Type: Task Security Level: Public (Viewable by anyone) Components: cache Reporter: Vladimir Ozerov Assignee: Taras Ledkov Fix For: 2.4 When cache entry is created, we need to write update the free list. When entry is updated, we need to update free list(s) several times. Currently free list is persistent structure, so every update to it must be logged to be able to recover after crash. This may incur significant overhead, especially for small entries. E.g. this is how WAL for a single update looks like. "D" - updates with real data, "F" - free-list management: {code} 1. [D] DataRecord [writeEntries=[UnwrapDataEntry[k = key, v = [ BinaryObject [idHash=2053299190, hash=1986931360, typeId=-1580729813]], super = [DataEntry [cacheId=94416770, op=UPDATE, writeVer=GridCacheVersion [topVer=122147562, order=1510667560607, nodeOrder=1], partId=0, partCnt=4]]]], super=WALRecord [size=0, chainSize=0, pos=null, type=DATA_RECORD]] 2. [F] PagesListRemovePageRecord [rmvdPageId=0001000000000005, pageId=0001000000000006, grpId=94416770, super=PageDeltaRecord [grpId=94416770, pageId=0001000000000006, super=WALRecord [size=37, chainSize=0, pos=null, type=PAGES_LIST_REMOVE_PAGE]]] 3. [D] DataPageInsertRecord [super=PageDeltaRecord [grpId=94416770, pageId=0001000000000005, super=WALRecord [size=129, chainSize=0, pos=null, type=DATA_PAGE_INSERT_RECORD]]] 4. [F] PagesListAddPageRecord [dataPageId=0001000000000005, super=PageDeltaRecord [grpId=94416770, pageId=0001000000000008, super=WALRecord [size=37, chainSize=0, pos=null, type=PAGES_LIST_ADD_PAGE]]] 5. [F] DataPageSetFreeListPageRecord [freeListPage=281474976710664, super=PageDeltaRecord [grpId=94416770, pageId=0001000000000005, super=WALRecord [size=37, chainSize=0, pos=null, type=DATA_PAGE_SET_FREE_LIST_PAGE]]] 6. [D] ReplaceRecord [io=DataLeafIO[ver=1], idx=0, super=PageDeltaRecord [grpId=94416770, pageId=0001000000000004, super=WALRecord [size=47, chainSize=0, pos=null, type=BTREE_PAGE_REPLACE]]] 7. [F] DataPageRemoveRecord [itemId=0, super=PageDeltaRecord [grpId=94416770, pageId=0001000000000005, super=WALRecord [size=30, chainSize=0, pos=null, type=DATA_PAGE_REMOVE_RECORD]]] 8. [F] PagesListRemovePageRecord [rmvdPageId=0001000000000005, pageId=0001000000000008, grpId=94416770, super=PageDeltaRecord [grpId=94416770, pageId=0001000000000008, super=WALRecord [size=37, chainSize=0, pos=null, type=PAGES_LIST_REMOVE_PAGE]]] 9. [F] DataPageSetFreeListPageRecord [freeListPage=0, super=PageDeltaRecord [grpId=94416770, pageId=0001000000000005, super=WALRecord [size=37, chainSize=0, pos=null, type=DATA_PAGE_SET_FREE_LIST_PAGE]]] 10. [F] PagesListAddPageRecord [dataPageId=0001000000000005, super=PageDeltaRecord [grpId=94416770, pageId=0001000000000006, super=WALRecord [size=37, chainSize=0, pos=null, type=PAGES_LIST_ADD_PAGE]]] 11. [F] DataPageSetFreeListPageRecord [freeListPage=281474976710662, super=PageDeltaRecord [grpId=94416770, pageId=0001000000000005, super=WALRecord [size=37, chainSize=0, pos=null, type=DATA_PAGE_SET_FREE_LIST_PAGE]]] {code} -- This message was sent by Atlassian JIRA (v6.4.14#64029)