mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
Added Innobase to source distribution
Docs/manual.texi: Added Innobase documentation configure.in: Incremented version include/my_base.h: Added option for Innobase myisam/mi_check.c: cleanup mysql-test/t/bdb.test: cleanup mysql-test/t/innobase.test: Extended with new tests from bdb.test mysql-test/t/merge.test: Added test of SHOW create mysys/my_init.c: Fix for UNIXWARE 7 scripts/mysql_install_db.sh: Always write how to start mysqld scripts/safe_mysqld.sh: Fixed type sql/ha_innobase.cc: Update to new version sql/ha_innobase.h: Update to new version sql/handler.h: Added 'update_table_comment()' and 'append_create_info()' sql/sql_delete.cc: Fixes for Innobase sql/sql_select.cc: Fixes for Innobase sql/sql_show.cc: Append create information (for MERGE tables) sql/sql_update.cc: Fixes for Innobase
This commit is contained in:
110
innobase/include/buf0flu.h
Normal file
110
innobase/include/buf0flu.h
Normal file
@ -0,0 +1,110 @@
|
||||
/******************************************************
|
||||
The database buffer pool flush algorithm
|
||||
|
||||
(c) 1995 Innobase Oy
|
||||
|
||||
Created 11/5/1995 Heikki Tuuri
|
||||
*******************************************************/
|
||||
|
||||
#ifndef buf0flu_h
|
||||
#define buf0flu_h
|
||||
|
||||
#include "univ.i"
|
||||
#include "buf0types.h"
|
||||
#include "ut0byte.h"
|
||||
#include "mtr0types.h"
|
||||
|
||||
/************************************************************************
|
||||
Updates the flush system data structures when a write is completed. */
|
||||
|
||||
void
|
||||
buf_flush_write_complete(
|
||||
/*=====================*/
|
||||
buf_block_t* block); /* in: pointer to the block in question */
|
||||
/*************************************************************************
|
||||
Flushes pages from the end of the LRU list if there is too small
|
||||
a margin of replaceable pages there. */
|
||||
|
||||
void
|
||||
buf_flush_free_margin(void);
|
||||
/*=======================*/
|
||||
/***********************************************************************
|
||||
This utility flushes dirty blocks from the end of the LRU list or flush_list.
|
||||
NOTE 1: in the case of an LRU flush the calling thread may own latches to
|
||||
pages: to avoid deadlocks, this function must be written so that it cannot
|
||||
end up waiting for these latches! NOTE 2: in the case of a flush list flush,
|
||||
the calling thread is not allowed to own any latches on pages! */
|
||||
|
||||
ulint
|
||||
buf_flush_batch(
|
||||
/*============*/
|
||||
/* out: number of blocks for which the write
|
||||
request was queued */
|
||||
ulint flush_type, /* in: BUF_FLUSH_LRU or BUF_FLUSH_LIST; if
|
||||
BUF_FLUSH_LIST, then the caller must not own
|
||||
any latches on pages */
|
||||
ulint min_n, /* in: wished minimum mumber of blocks flushed
|
||||
(it is not guaranteed that the actual number
|
||||
is that big, though) */
|
||||
dulint lsn_limit); /* in the case BUF_FLUSH_LIST all blocks whose
|
||||
oldest_modification is smaller than this
|
||||
should be flushed (if their number does not
|
||||
exceed min_n), otherwise ignored */
|
||||
/**********************************************************************
|
||||
Waits until a flush batch of the given type ends */
|
||||
|
||||
void
|
||||
buf_flush_wait_batch_end(
|
||||
/*=====================*/
|
||||
ulint type); /* in: BUF_FLUSH_LRU or BUF_FLUSH_LIST */
|
||||
/************************************************************************
|
||||
This function should be called at a mini-transaction commit, if a page was
|
||||
modified in it. Puts the block to the list of modified blocks, if it not
|
||||
already in it. */
|
||||
UNIV_INLINE
|
||||
void
|
||||
buf_flush_note_modification(
|
||||
/*========================*/
|
||||
buf_block_t* block, /* in: block which is modified */
|
||||
mtr_t* mtr); /* in: mtr */
|
||||
/************************************************************************
|
||||
This function should be called when recovery has modified a buffer page. */
|
||||
UNIV_INLINE
|
||||
void
|
||||
buf_flush_recv_note_modification(
|
||||
/*=============================*/
|
||||
buf_block_t* block, /* in: block which is modified */
|
||||
dulint start_lsn, /* in: start lsn of the first mtr in a
|
||||
set of mtr's */
|
||||
dulint end_lsn); /* in: end lsn of the last mtr in the
|
||||
set of mtr's */
|
||||
/************************************************************************
|
||||
Returns TRUE if the file page block is immediately suitable for replacement,
|
||||
i.e., transition FILE_PAGE => NOT_USED allowed. */
|
||||
ibool
|
||||
buf_flush_ready_for_replace(
|
||||
/*========================*/
|
||||
/* out: TRUE if can replace immediately */
|
||||
buf_block_t* block); /* in: buffer control block, must be in state
|
||||
BUF_BLOCK_FILE_PAGE and in the LRU list */
|
||||
/**********************************************************************
|
||||
Validates the flush list. */
|
||||
|
||||
ibool
|
||||
buf_flush_validate(void);
|
||||
/*====================*/
|
||||
/* out: TRUE if ok */
|
||||
|
||||
/* When buf_flush_free_margin is called, it tries to make this many blocks
|
||||
available to replacement in the free list and at the end of the LRU list (to
|
||||
make sure that a read-ahead batch can be read efficiently in a single
|
||||
sweep). */
|
||||
|
||||
#define BUF_FLUSH_FREE_BLOCK_MARGIN (5 + BUF_READ_AHEAD_AREA)
|
||||
#define BUF_FLUSH_EXTRA_MARGIN (BUF_FLUSH_FREE_BLOCK_MARGIN / 4)
|
||||
|
||||
#ifndef UNIV_NONINL
|
||||
#include "buf0flu.ic"
|
||||
#endif
|
||||
|
||||
#endif
|
Reference in New Issue
Block a user