Lines Matching defs:lookaside

2290 ** the default size of lookaside memory on each [database connection].
2292 ** size of each lookaside buffer slot and the second is the number of
2294 ** sets the <i>default</i> lookaside size. The [SQLITE_DBCONFIG_LOOKASIDE]
2295 ** option to [sqlite3_db_config()] can be used to change the lookaside
2525 ** [lookaside memory allocator] configuration for the [database connection].
2527 ** pointer to a memory buffer to use for lookaside memory.
2530 ** lookaside buffer itself using [sqlite3_malloc()]. ^The second argument is the
2531 ** size of each lookaside buffer slot. ^The third argument is the number of
2536 ** rounded down to the next smaller multiple of 8. ^(The lookaside memory
2538 ** connection is not currently using lookaside memory, or in other words
2541 ** Any attempt to change the lookaside memory configuration when lookaside
4485 ** on this hint by avoiding the use of [lookaside memory] so as not to
4486 ** deplete the limited store of lookaside memory. Future versions of
9004 ** <dd>This parameter returns the number of lookaside memory slots currently
9009 ** satisfied using lookaside memory. Only the high-water value is meaningful;
9015 ** been satisfied using lookaside memory but failed due to the amount of
9016 ** memory requested being larger than the lookaside slot size.
9023 ** been satisfied using lookaside memory but failed due to all lookaside
9056 ** and lookaside memory used by all prepared statements associated with
17486 ** lookaside malloc provides a significant performance enhancement
17491 ** lookaside malloc subsystem. Each available memory allocation in
17492 ** the lookaside subsystem is stored on a linked list of LookasideSlot
17497 ** be stored in lookaside because in shared cache mode the schema information
17500 ** lookaside allocations are not used to construct the schema objects.
17502 ** New lookaside allocations are only allowed if bDisable==0. When
17504 ** disables lookaside without adding a new test for the bDisable flag
17515 ** Enhancement on 2019-12-12: Two-size-lookaside
17516 ** The default lookaside configuration is 100 slots of 1200 bytes each.
17518 ** a lot of space, as most lookaside allocations are less than 128 bytes.
17519 ** The two-size-lookaside enhancement breaks up the lookaside allocation
17523 ** lookaside slots are available while also using less memory.
17528 u32 bDisable; /* Only operate the lookaside when zero */
17532 u32 nSlot; /* Number of lookaside slots allocated */
17550 #define DisableLookaside db->lookaside.bDisable++;db->lookaside.sz=0
17551 #define EnableLookaside db->lookaside.bDisable--;\
17552 db->lookaside.sz=db->lookaside.bDisable?0:db->lookaside.szTrue
17554 /* Size of the smaller allocations in two-size lookaside */
17729 Lookaside lookaside; /* Lookaside malloc configuration */
19799 u8 disableLookaside; /* Number of times lookaside has been disabled */
20102 sqlite3 *db; /* Optional database for lookaside. Can be NULL */
20196 int szLookaside; /* Default lookaside buffer size */
20197 int nLookaside; /* Default lookaside buffer count */
21710 ** it might have been allocated by lookaside, except the allocation was
21711 ** too large or lookaside was already full. It is important to verify
21712 ** that allocations that might have been satisfied by lookaside are not
21713 ** passed back to non-lookaside free() routines. Asserts such as the
21714 ** example above are placed on the non-lookaside free() routines to verify
21730 #define MEMTYPE_LOOKASIDE 0x02 /* Heap that might have been lookaside */
22884 ** The default lookaside-configuration, the format "SZ,N". SZ is the
22885 ** number of bytes in each lookaside slot (should be a multiple of 8)
22886 ** and N is the number of slots. The lookaside-configuration can be
22891 ** With the two-size-lookaside enhancement, less lookaside is required.
22893 ** and 93 128-byte slots, which is more lookaside than is available
22894 ** using the older 1200,100 configuration without two-size-lookaside.
24004 ** Count the number of slots of lookaside memory that are outstanding
24007 u32 nInit = countLookasideSlots(db->lookaside.pInit);
24008 u32 nFree = countLookasideSlots(db->lookaside.pFree);
24010 nInit += countLookasideSlots(db->lookaside.pSmallInit);
24011 nFree += countLookasideSlots(db->lookaside.pSmallFree);
24013 if( pHighwater ) *pHighwater = db->lookaside.nSlot - nInit;
24014 return db->lookaside.nSlot - (nInit+nFree);
24038 LookasideSlot *p = db->lookaside.pFree;
24041 p->pNext = db->lookaside.pInit;
24042 db->lookaside.pInit = db->lookaside.pFree;
24043 db->lookaside.pFree = 0;
24046 p = db->lookaside.pSmallFree;
24049 p->pNext = db->lookaside.pSmallInit;
24050 db->lookaside.pSmallInit = db->lookaside.pSmallFree;
24051 db->lookaside.pSmallFree = 0;
24067 *pHighwater = db->lookaside.anStat[op - SQLITE_DBSTATUS_LOOKASIDE_HIT];
24069 db->lookaside.anStat[op - SQLITE_DBSTATUS_LOOKASIDE_HIT] = 0;
24112 assert( db->lookaside.pEnd==db->lookaside.pTrueEnd );
24113 db->lookaside.pEnd = db->lookaside.pStart;
24139 db->lookaside.pEnd = db->lookaside.pTrueEnd;
24157 assert( db->lookaside.pEnd==db->lookaside.pTrueEnd );
24158 db->lookaside.pEnd = db->lookaside.pStart;
24162 db->lookaside.pEnd = db->lookaside.pTrueEnd;
30566 ** TRUE if p is a lookaside memory allocation from db
30570 return SQLITE_WITHIN(p, db->lookaside.pStart, db->lookaside.pTrueEnd);
30586 return p<db->lookaside.pMiddle ? db->lookaside.szTrue : LOOKASIDE_SMALL;
30588 return db->lookaside.szTrue;
30603 if( ((uptr)p)<(uptr)(db->lookaside.pTrueEnd) ){
30605 if( ((uptr)p)>=(uptr)(db->lookaside.pMiddle) ){
30610 if( ((uptr)p)>=(uptr)(db->lookaside.pStart) ){
30612 return db->lookaside.szTrue;
30659 if( ((uptr)p)<(uptr)(db->lookaside.pEnd) ){
30661 if( ((uptr)p)>=(uptr)(db->lookaside.pMiddle) ){
30667 pBuf->pNext = db->lookaside.pSmallFree;
30668 db->lookaside.pSmallFree = pBuf;
30672 if( ((uptr)p)>=(uptr)(db->lookaside.pStart) ){
30676 memset(p, 0xaa, db->lookaside.szTrue); /* Trash freed content */
30678 pBuf->pNext = db->lookaside.pFree;
30679 db->lookaside.pFree = pBuf;
30698 if( ((uptr)p)<(uptr)(db->lookaside.pEnd) ){
30700 if( ((uptr)p)>=(uptr)(db->lookaside.pMiddle) ){
30706 pBuf->pNext = db->lookaside.pSmallFree;
30707 db->lookaside.pSmallFree = pBuf;
30711 if( ((uptr)p)>=(uptr)(db->lookaside.pStart) ){
30715 memset(p, 0xaa, db->lookaside.szTrue); /* Trash freed content */
30717 pBuf->pNext = db->lookaside.pFree;
30718 db->lookaside.pFree = pBuf;
30839 ** slower case when the allocation cannot be fulfilled using lookaside.
30847 (db->lookaside.bDisable==0) ? MEMTYPE_LOOKASIDE : MEMTYPE_HEAP);
30852 ** Allocate memory, either lookaside (if possible) or heap.
30886 if( n>db->lookaside.sz ){
30887 if( !db->lookaside.bDisable ){
30888 db->lookaside.anStat[1]++;
30896 if( (pBuf = db->lookaside.pSmallFree)!=0 ){
30897 db->lookaside.pSmallFree = pBuf->pNext;
30898 db->lookaside.anStat[0]++;
30900 }else if( (pBuf = db->lookaside.pSmallInit)!=0 ){
30901 db->lookaside.pSmallInit = pBuf->pNext;
30902 db->lookaside.anStat[0]++;
30907 if( (pBuf = db->lookaside.pFree)!=0 ){
30908 db->lookaside.pFree = pBuf->pNext;
30909 db->lookaside.anStat[0]++;
30911 }else if( (pBuf = db->lookaside.pInit)!=0 ){
30912 db->lookaside.pInit = pBuf->pNext;
30913 db->lookaside.anStat[0]++;
30916 db->lookaside.anStat[2]++;
30940 if( ((uptr)p)<(uptr)db->lookaside.pEnd ){
30942 if( ((uptr)p)>=(uptr)db->lookaside.pMiddle ){
30946 if( ((uptr)p)>=(uptr)db->lookaside.pStart ){
30947 if( n<=db->lookaside.szTrue ) return p;
30972 (db->lookaside.bDisable==0 ? MEMTYPE_LOOKASIDE : MEMTYPE_HEAP));
31054 ** temporarily disable the lookaside memory allocator and interrupt
31095 assert( db->lookaside.bDisable>0 );
92447 assert( db->lookaside.pEnd==db->lookaside.pTrueEnd );
92448 db->lookaside.pEnd = db->lookaside.pStart;
92451 db->lookaside.pEnd = db->lookaside.pTrueEnd;
120244 assert( db->lookaside.bDisable );
120368 assert( db->lookaside.bDisable );
122173 ** contains lookaside memory. (Table objects in the schema do not use
122174 ** lookaside memory, but some ephemeral Table objects do.) Or the
122182 /* Record the number of outstanding lookaside allocations in schema Tables
122184 ** lookaside, this number should not change.
122188 ** that no lookaside memory is used in this case either. */
122233 /* Verify that no lookaside memory was used by schema tables */
124121 ** tree that have been allocated from lookaside memory, which is
132094 ** the lookaside buffer belonging to database handle dbMem.
132758 /* Disable lookaside memory allocation */
132780 /* Re-enable the lookaside buffer, if it was disabled earlier. */
142399 assert( db->lookaside.bDisable >= pParse->disableLookaside );
142400 db->lookaside.bDisable -= pParse->disableLookaside;
142401 db->lookaside.sz = db->lookaside.bDisable ? 0 : db->lookaside.szTrue;
142525 ** lookaside memory.
172529 ** Disable lookaside memory allocation for objects that might be
180545 ** Set up the lookaside buffers for a database connection.
180547 ** If lookaside is already active, return SQLITE_BUSY.
180549 ** The sz parameter is the number of bytes in each lookaside slot.
180551 ** space for the lookaside memory is obtained from sqlite3_malloc().
180553 ** the lookaside memory.
180565 /* Free any existing lookaside buffer for this handle before
180569 if( db->lookaside.bMalloced ){
180570 sqlite3_free(db->lookaside.pStart);
180572 /* The size of a lookaside slot after ROUNDDOWN8 needs to be larger
180604 db->lookaside.pStart = pStart;
180605 db->lookaside.pInit = 0;
180606 db->lookaside.pFree = 0;
180607 db->lookaside.sz = (u16)sz;
180608 db->lookaside.szTrue = (u16)sz;
180615 p->pNext = db->lookaside.pInit;
180616 db->lookaside.pInit = p;
180620 db->lookaside.pSmallInit = 0;
180621 db->lookaside.pSmallFree = 0;
180622 db->lookaside.pMiddle = p;
180624 p->pNext = db->lookaside.pSmallInit;
180625 db->lookaside.pSmallInit = p;
180630 db->lookaside.pEnd = p;
180631 db->lookaside.bDisable = 0;
180632 db->lookaside.bMalloced = pBuf==0 ?1:0;
180633 db->lookaside.nSlot = nBig+nSm;
180635 db->lookaside.pStart = 0;
180637 db->lookaside.pSmallInit = 0;
180638 db->lookaside.pSmallFree = 0;
180639 db->lookaside.pMiddle = 0;
180641 db->lookaside.pEnd = 0;
180642 db->lookaside.bDisable = 1;
180643 db->lookaside.sz = 0;
180644 db->lookaside.bMalloced = 0;
180645 db->lookaside.nSlot = 0;
180647 db->lookaside.pTrueEnd = db->lookaside.pEnd;
181235 if( db->lookaside.bMalloced ){
181236 sqlite3_free(db->lookaside.pStart);
183092 db->lookaside.bDisable = 1;
183093 db->lookaside.sz = 0;
183329 /* Enable the lookaside-malloc subsystem */
237430 ** buffer and buffer size to the lookaside-reader init function, zero