mirror of
https://github.com/MariaDB/server.git
synced 2025-01-16 20:12:31 +01:00
Applied innodb-5.0-ss677 snapshot.
Fixes: - bug #19834: Using cursors when running in READ-COMMITTED can cause InnoDB to crash - bug #21112: InnoDB slow with > 100,000 .ibd files - bug #21113: Duplicate printout in SHOW INNODB STATUS innobase/fil/fil0fil.c: Applied innodb-5.0-ss677 snapshot. Make the tablespace cache hash size 100 or 1000 times bigger. Fixes bug #21112. innobase/ibuf/ibuf0ibuf.c: Applied innodb-5.0-ss677 snapshot. ibuf_print(): Don't print redundant information. Fixes bug #21113. sql/ha_innodb.cc: Applied innodb-5.0-ss677 snapshot. ha_innobase::start_stmt(): patch from Heikki: Do not call read_view_close_for_mysql(). (Bug #19834)
This commit is contained in:
parent
edeea349b9
commit
75e40b161b
3 changed files with 20 additions and 37 deletions
|
@ -251,9 +251,6 @@ struct fil_system_struct {
|
||||||
initialized. */
|
initialized. */
|
||||||
fil_system_t* fil_system = NULL;
|
fil_system_t* fil_system = NULL;
|
||||||
|
|
||||||
/* The tablespace memory cache hash table size */
|
|
||||||
#define FIL_SYSTEM_HASH_SIZE 50 /* TODO: make bigger! */
|
|
||||||
|
|
||||||
|
|
||||||
/************************************************************************
|
/************************************************************************
|
||||||
NOTE: you must call fil_mutex_enter_and_prepare_for_io() first!
|
NOTE: you must call fil_mutex_enter_and_prepare_for_io() first!
|
||||||
|
@ -1324,11 +1321,17 @@ fil_init(
|
||||||
/*=====*/
|
/*=====*/
|
||||||
ulint max_n_open) /* in: max number of open files */
|
ulint max_n_open) /* in: max number of open files */
|
||||||
{
|
{
|
||||||
|
ulint hash_size;
|
||||||
|
|
||||||
ut_a(fil_system == NULL);
|
ut_a(fil_system == NULL);
|
||||||
|
|
||||||
/*printf("Initializing the tablespace cache with max %lu open files\n",
|
if (srv_file_per_table) {
|
||||||
max_n_open); */
|
hash_size = 50000;
|
||||||
fil_system = fil_system_create(FIL_SYSTEM_HASH_SIZE, max_n_open);
|
} else {
|
||||||
|
hash_size = 5000;
|
||||||
|
}
|
||||||
|
|
||||||
|
fil_system = fil_system_create(hash_size, max_n_open);
|
||||||
}
|
}
|
||||||
|
|
||||||
/***********************************************************************
|
/***********************************************************************
|
||||||
|
|
|
@ -3499,21 +3499,9 @@ ibuf_print(
|
||||||
data = UT_LIST_GET_FIRST(ibuf->data_list);
|
data = UT_LIST_GET_FIRST(ibuf->data_list);
|
||||||
|
|
||||||
while (data) {
|
while (data) {
|
||||||
fprintf(file,
|
|
||||||
"Ibuf for space %lu: size %lu, free list len %lu, seg size %lu,",
|
|
||||||
(ulong) data->space, (ulong) data->size,
|
|
||||||
(ulong) data->free_list_len,
|
|
||||||
(ulong) data->seg_size);
|
|
||||||
|
|
||||||
if (data->empty) {
|
|
||||||
fputs(" is empty\n", file);
|
|
||||||
} else {
|
|
||||||
fputs(" is not empty\n", file);
|
|
||||||
}
|
|
||||||
fprintf(file,
|
fprintf(file,
|
||||||
"Ibuf for space %lu: size %lu, free list len %lu, seg size %lu,\n"
|
"Ibuf: size %lu, free list len %lu, seg size %lu,\n"
|
||||||
"%lu inserts, %lu merged recs, %lu merges\n",
|
"%lu inserts, %lu merged recs, %lu merges\n",
|
||||||
(ulong) data->space,
|
|
||||||
(ulong) data->size,
|
(ulong) data->size,
|
||||||
(ulong) data->free_list_len,
|
(ulong) data->free_list_len,
|
||||||
(ulong) data->seg_size,
|
(ulong) data->seg_size,
|
||||||
|
|
|
@ -5943,14 +5943,6 @@ ha_innobase::start_stmt(
|
||||||
|
|
||||||
innobase_release_stat_resources(trx);
|
innobase_release_stat_resources(trx);
|
||||||
|
|
||||||
if (trx->isolation_level <= TRX_ISO_READ_COMMITTED
|
|
||||||
&& trx->global_read_view) {
|
|
||||||
/* At low transaction isolation levels we let
|
|
||||||
each consistent read set its own snapshot */
|
|
||||||
|
|
||||||
read_view_close_for_mysql(trx);
|
|
||||||
}
|
|
||||||
|
|
||||||
prebuilt->sql_stat_start = TRUE;
|
prebuilt->sql_stat_start = TRUE;
|
||||||
prebuilt->hint_need_to_fetch_extra_cols = 0;
|
prebuilt->hint_need_to_fetch_extra_cols = 0;
|
||||||
prebuilt->read_just_key = 0;
|
prebuilt->read_just_key = 0;
|
||||||
|
@ -6684,17 +6676,17 @@ ha_innobase::store_lock(
|
||||||
&& !thd->tablespace_op
|
&& !thd->tablespace_op
|
||||||
&& thd->lex->sql_command != SQLCOM_TRUNCATE
|
&& thd->lex->sql_command != SQLCOM_TRUNCATE
|
||||||
&& thd->lex->sql_command != SQLCOM_OPTIMIZE
|
&& thd->lex->sql_command != SQLCOM_OPTIMIZE
|
||||||
|
|
||||||
#ifdef __WIN__
|
#ifdef __WIN__
|
||||||
/*
|
/* For alter table on win32 for succesful operation
|
||||||
for alter table on win32 for succesfull operation
|
completion it is used TL_WRITE(=10) lock instead of
|
||||||
completion it is used TL_WRITE(=10) lock instead of
|
TL_WRITE_ALLOW_READ(=6), however here in innodb handler
|
||||||
TL_WRITE_ALLOW_READ(=6), however here in innodb handler
|
TL_WRITE is lifted to TL_WRITE_ALLOW_WRITE, which causes
|
||||||
TL_WRITE is lifted to TL_WRITE_ALLOW_WRITE, which causes
|
race condition when several clients do alter table
|
||||||
race condition when several clients do alter table
|
simultaneously (bug #17264). This fix avoids the problem. */
|
||||||
simultaneously (bug #17264). This fix avoids the problem.
|
&& thd->lex->sql_command != SQLCOM_ALTER_TABLE
|
||||||
*/
|
|
||||||
&& thd->lex->sql_command != SQLCOM_ALTER_TABLE
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
&& thd->lex->sql_command != SQLCOM_CREATE_TABLE) {
|
&& thd->lex->sql_command != SQLCOM_CREATE_TABLE) {
|
||||||
|
|
||||||
lock_type = TL_WRITE_ALLOW_WRITE;
|
lock_type = TL_WRITE_ALLOW_WRITE;
|
||||||
|
|
Loading…
Reference in a new issue