mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
Merge mysql-5.1 to mysql-5.5.
This commit is contained in:
@ -0,0 +1,7 @@
|
|||||||
|
SELECT @@global.innodb_buffer_pool_evict;
|
||||||
|
@@global.innodb_buffer_pool_evict
|
||||||
|
|
||||||
|
SET GLOBAL innodb_buffer_pool_evict = 'uncompressed';
|
||||||
|
SELECT @@global.innodb_buffer_pool_evict;
|
||||||
|
@@global.innodb_buffer_pool_evict
|
||||||
|
|
@ -0,0 +1,10 @@
|
|||||||
|
-- source include/have_innodb.inc
|
||||||
|
# This is a debug variable for now
|
||||||
|
-- source include/have_debug.inc
|
||||||
|
|
||||||
|
SELECT @@global.innodb_buffer_pool_evict;
|
||||||
|
|
||||||
|
SET GLOBAL innodb_buffer_pool_evict = 'uncompressed';
|
||||||
|
|
||||||
|
# Should always be empty.
|
||||||
|
SELECT @@global.innodb_buffer_pool_evict;
|
@ -1,6 +1,6 @@
|
|||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
|
|
||||||
Copyright (c) 1995, 2012, Oracle and/or its affiliates. All Rights Reserved.
|
Copyright (c) 1995, 2013, Oracle and/or its affiliates. All Rights Reserved.
|
||||||
Copyright (c) 2008, Google Inc.
|
Copyright (c) 2008, Google Inc.
|
||||||
|
|
||||||
Portions of this file contain modifications contributed and copyrighted by
|
Portions of this file contain modifications contributed and copyrighted by
|
||||||
@ -2359,6 +2359,7 @@ got_block:
|
|||||||
/* The page is being read to buffer pool,
|
/* The page is being read to buffer pool,
|
||||||
but we cannot wait around for the read to
|
but we cannot wait around for the read to
|
||||||
complete. */
|
complete. */
|
||||||
|
null_exit:
|
||||||
buf_pool_mutex_exit(buf_pool);
|
buf_pool_mutex_exit(buf_pool);
|
||||||
|
|
||||||
return(NULL);
|
return(NULL);
|
||||||
@ -2373,6 +2374,14 @@ got_block:
|
|||||||
|
|
||||||
case BUF_BLOCK_ZIP_PAGE:
|
case BUF_BLOCK_ZIP_PAGE:
|
||||||
case BUF_BLOCK_ZIP_DIRTY:
|
case BUF_BLOCK_ZIP_DIRTY:
|
||||||
|
if (mode == BUF_PEEK_IF_IN_POOL) {
|
||||||
|
/* This mode is only used for dropping an
|
||||||
|
adaptive hash index. There cannot be an
|
||||||
|
adaptive hash index for a compressed-only
|
||||||
|
page, so do not bother decompressing the page. */
|
||||||
|
goto null_exit;
|
||||||
|
}
|
||||||
|
|
||||||
bpage = &block->page;
|
bpage = &block->page;
|
||||||
/* Protect bpage->buf_fix_count. */
|
/* Protect bpage->buf_fix_count. */
|
||||||
mutex_enter(&buf_pool->zip_mutex);
|
mutex_enter(&buf_pool->zip_mutex);
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
|
|
||||||
Copyright (c) 2000, 2012, Oracle and/or its affiliates. All Rights Reserved.
|
Copyright (c) 2000, 2013, Oracle and/or its affiliates. All Rights Reserved.
|
||||||
Copyright (c) 2008, 2009 Google Inc.
|
Copyright (c) 2008, 2009 Google Inc.
|
||||||
Copyright (c) 2009, Percona Inc.
|
Copyright (c) 2009, Percona Inc.
|
||||||
|
|
||||||
@ -11201,6 +11201,61 @@ innodb_change_buffering_update(
|
|||||||
*static_cast<const char*const*>(save);
|
*static_cast<const char*const*>(save);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifndef DBUG_OFF
|
||||||
|
static char* srv_buffer_pool_evict;
|
||||||
|
|
||||||
|
/****************************************************************//**
|
||||||
|
Called on SET GLOBAL innodb_buffer_pool_evict=...
|
||||||
|
Handles some values specially, to evict pages from the buffer pool.
|
||||||
|
SET GLOBAL innodb_buffer_pool_evict='uncompressed'
|
||||||
|
evicts all uncompressed page frames of compressed tablespaces. */
|
||||||
|
static
|
||||||
|
void
|
||||||
|
innodb_buffer_pool_evict_update(
|
||||||
|
/*============================*/
|
||||||
|
THD* thd, /*!< in: thread handle */
|
||||||
|
struct st_mysql_sys_var*var, /*!< in: pointer to system variable */
|
||||||
|
void* var_ptr,/*!< out: ignored */
|
||||||
|
const void* save) /*!< in: immediate result
|
||||||
|
from check function */
|
||||||
|
{
|
||||||
|
if (const char* op = *static_cast<const char*const*>(save)) {
|
||||||
|
if (!strcmp(op, "uncompressed")) {
|
||||||
|
/* Evict all uncompressed pages of compressed
|
||||||
|
tables from the buffer pool. Keep the compressed
|
||||||
|
pages in the buffer pool. */
|
||||||
|
|
||||||
|
for (ulint i = 0; i < srv_buf_pool_instances; i++) {
|
||||||
|
buf_pool_t* buf_pool = &buf_pool_ptr[i];
|
||||||
|
|
||||||
|
buf_pool_mutex_enter(buf_pool);
|
||||||
|
|
||||||
|
for (buf_block_t* block = UT_LIST_GET_LAST(
|
||||||
|
buf_pool->unzip_LRU);
|
||||||
|
block != NULL; ) {
|
||||||
|
|
||||||
|
buf_block_t* prev_block
|
||||||
|
= UT_LIST_GET_PREV(unzip_LRU,
|
||||||
|
block);
|
||||||
|
ut_ad(buf_block_get_state(block)
|
||||||
|
== BUF_BLOCK_FILE_PAGE);
|
||||||
|
ut_ad(block->in_unzip_LRU_list);
|
||||||
|
ut_ad(block->page.in_LRU_list);
|
||||||
|
|
||||||
|
mutex_enter(&block->mutex);
|
||||||
|
buf_LRU_free_block(&block->page,
|
||||||
|
FALSE);
|
||||||
|
mutex_exit(&block->mutex);
|
||||||
|
block = prev_block;
|
||||||
|
}
|
||||||
|
|
||||||
|
buf_pool_mutex_exit(buf_pool);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif /* !DBUG_OFF */
|
||||||
|
|
||||||
static int show_innodb_vars(THD *thd, SHOW_VAR *var, char *buff)
|
static int show_innodb_vars(THD *thd, SHOW_VAR *var, char *buff)
|
||||||
{
|
{
|
||||||
innodb_export_status();
|
innodb_export_status();
|
||||||
@ -11442,6 +11497,13 @@ static MYSQL_SYSVAR_ULONG(autoextend_increment, srv_auto_extend_increment,
|
|||||||
"Data file autoextend increment in megabytes",
|
"Data file autoextend increment in megabytes",
|
||||||
NULL, NULL, 8L, 1L, 1000L, 0);
|
NULL, NULL, 8L, 1L, 1000L, 0);
|
||||||
|
|
||||||
|
#ifndef DBUG_OFF
|
||||||
|
static MYSQL_SYSVAR_STR(buffer_pool_evict, srv_buffer_pool_evict,
|
||||||
|
PLUGIN_VAR_RQCMDARG,
|
||||||
|
"Evict pages from the InnoDB buffer pool.",
|
||||||
|
NULL, innodb_buffer_pool_evict_update, "");
|
||||||
|
#endif /* !DBUG_OFF */
|
||||||
|
|
||||||
static MYSQL_SYSVAR_LONGLONG(buffer_pool_size, innobase_buffer_pool_size,
|
static MYSQL_SYSVAR_LONGLONG(buffer_pool_size, innobase_buffer_pool_size,
|
||||||
PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_READONLY,
|
PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_READONLY,
|
||||||
"The size of the memory buffer InnoDB uses to cache data and indexes of its tables.",
|
"The size of the memory buffer InnoDB uses to cache data and indexes of its tables.",
|
||||||
@ -11629,6 +11691,9 @@ static MYSQL_SYSVAR_BOOL(print_all_deadlocks, srv_print_all_deadlocks,
|
|||||||
static struct st_mysql_sys_var* innobase_system_variables[]= {
|
static struct st_mysql_sys_var* innobase_system_variables[]= {
|
||||||
MYSQL_SYSVAR(additional_mem_pool_size),
|
MYSQL_SYSVAR(additional_mem_pool_size),
|
||||||
MYSQL_SYSVAR(autoextend_increment),
|
MYSQL_SYSVAR(autoextend_increment),
|
||||||
|
#ifndef DBUG_OFF
|
||||||
|
MYSQL_SYSVAR(buffer_pool_evict),
|
||||||
|
#endif /* !DBUG_OFF */
|
||||||
MYSQL_SYSVAR(buffer_pool_size),
|
MYSQL_SYSVAR(buffer_pool_size),
|
||||||
MYSQL_SYSVAR(buffer_pool_instances),
|
MYSQL_SYSVAR(buffer_pool_instances),
|
||||||
MYSQL_SYSVAR(checksums),
|
MYSQL_SYSVAR(checksums),
|
||||||
|
Reference in New Issue
Block a user