ignite-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Vladimir Ozerov (JIRA)" <j...@apache.org>
Subject [jira] [Created] (IGNITE-6930) Non-persistent free lists
Date Thu, 16 Nov 2017 11:22:00 GMT
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)

Mime
View raw message