1
0
mirror of https://github.com/MariaDB/server.git synced 2025-11-09 11:41:36 +03:00
Commit Graph

4 Commits

Author SHA1 Message Date
Marko Mäkelä
5c46751f23 MDEV-27734 Set innodb_change_buffering=none by default
The aim of the InnoDB change buffer is to avoid delays when a leaf page
of a secondary index is not present in the buffer pool, and a record needs
to be inserted, delete-marked, or purged. Instead of reading the page into
the buffer pool for making such a modification, we may insert a record to
the change buffer (a special index tree in the InnoDB system tablespace).
The buffered changes are guaranteed to be merged if the index page
actually needs to be read later.

The change buffer could be useful when the database is stored on a
rotational medium (hard disk) where random seeks are slower than
sequential reads or writes.

Obviously, the change buffer will cause write amplification, due to
potentially large amount of metadata that is being written to the
change buffer. We will have to write redo log records for modifying
the change buffer tree as well as the user tablespace. Furthermore,
in the user tablespace, we must maintain a change buffer bitmap page
that uses 2 bits for estimating the amount of free space in pages,
and 1 bit to specify whether buffered changes exist. This bitmap needs
to be updated on every operation, which could reduce performance.

Even if the change buffer were free of bugs such as MDEV-24449
(potentially causing the corruption of any page in the system tablespace)
or MDEV-26977 (corruption of secondary indexes due to a currently
unknown reason), it will make diagnosis of other data corruption harder.

Because of all this, it is best to disable the change buffer by default.
2022-02-09 08:36:41 +02:00
Marko Mäkelä
715e4f4320 MDEV-12218 Clean up InnoDB parameter validation
Bind more InnoDB parameters directly to MYSQL_SYSVAR and
remove "shadow variables".

innodb_change_buffering: Declare as ENUM, not STRING.

innodb_flush_method: Declare as ENUM, not STRING.

innodb_log_buffer_size: Bind directly to srv_log_buffer_size,
without rounding it to a multiple of innodb_page_size.

LOG_BUFFER_SIZE: Remove.

SysTablespace::normalize_size(): Renamed from normalize().

innodb_init_params(): A new function to initialize and validate
InnoDB startup parameters.

innodb_init(): Renamed from innobase_init(). Invoke innodb_init_params()
before actually trying to start up InnoDB.

srv_start(bool): Renamed from innobase_start_or_create_for_mysql().
Added the input parameter create_new_db.

SRV_ALL_O_DIRECT_FSYNC: Define only for _WIN32.

xb_normalize_init_values(): Merge to innodb_init_param().
2018-04-29 09:41:42 +03:00
Vasil Dimov
b35e0918e1 Update the sys_vars.innodb_change_buffering_basic mysql-test since the
imported InnoDB provides more values for "innodb_change_buffering".
2010-04-14 15:05:56 +03:00
Omer BarNir
013dcdbd67 Modified and added tests following review of WL#4738.
- Added tests for innodb and semisync plugin
 - Modified existing tests to include variable values in I_S tables
 - Updated the all_vars test to include optional checkes for INNODB and semisync plugin 
   if loaded

mysql-test/suite/sys_vars/r/innodb_adaptive_flushing_basic.result:
  New result file
mysql-test/suite/sys_vars/r/innodb_adaptive_hash_index_basic.result:
  New result file
mysql-test/suite/sys_vars/r/innodb_change_buffering_basic.result:
  New result file
mysql-test/suite/sys_vars/r/innodb_file_format_basic.result:
  New result file
mysql-test/suite/sys_vars/r/innodb_file_format_check_basic.result:
  New result file
mysql-test/suite/sys_vars/r/innodb_io_capacity_basic.result:
  New result file
mysql-test/suite/sys_vars/r/innodb_old_blocks_pct_basic.result:
  New result file
mysql-test/suite/sys_vars/r/innodb_old_blocks_time_basic.result:
  New result file
mysql-test/suite/sys_vars/r/innodb_read_ahead_threshold_basic.result:
  New result file
mysql-test/suite/sys_vars/r/innodb_read_io_threads_basic.result:
  New result file
mysql-test/suite/sys_vars/r/innodb_replication_delay_basic.result:
  New result file
mysql-test/suite/sys_vars/r/innodb_spin_wait_delay_basic.result:
  New result file
mysql-test/suite/sys_vars/r/innodb_stats_on_metadata_basic.result:
  New result file
mysql-test/suite/sys_vars/r/innodb_stats_sample_pages_basic.result:
  New result file
mysql-test/suite/sys_vars/r/innodb_strict_mode_basic.result:
  New result file
mysql-test/suite/sys_vars/r/innodb_thread_sleep_delay_basic.result:
  Updated result file
mysql-test/suite/sys_vars/r/innodb_use_sys_malloc_basic.result:
  New result file
mysql-test/suite/sys_vars/r/innodb_version_basic.result:
  New result file
mysql-test/suite/sys_vars/r/innodb_write_io_threads_basic.result:
  New result file
mysql-test/suite/sys_vars/r/last_insert_id_basic.result:
  Updated result file
mysql-test/suite/sys_vars/r/lc_messages_basic.result:
  Updated result file
mysql-test/suite/sys_vars/r/log_slow_queries_basic.result:
  Updated result file
mysql-test/suite/sys_vars/r/lower_case_file_system_basic.result:
  Updated result file
mysql-test/suite/sys_vars/r/lower_case_table_names_basic.result:
  Updated result file
mysql-test/suite/sys_vars/r/max_join_size_basic.result:
  Updated result file
mysql-test/suite/sys_vars/r/old_alter_table_basic.result:
  Updated result file
mysql-test/suite/sys_vars/r/optimizer_switch_basic.result:
  Updated result file
mysql-test/suite/sys_vars/r/profiling_basic.result:
  Updated result file
mysql-test/suite/sys_vars/r/profiling_history_size_basic.result:
  Updated result file
mysql-test/suite/sys_vars/r/pseudo_thread_id_basic.result:
  Updated result file
mysql-test/suite/sys_vars/r/rand_seed1_basic.result:
  Updated result file
mysql-test/suite/sys_vars/r/rand_seed2_basic.result:
  Updated result file
mysql-test/suite/sys_vars/r/relay_log_recovery_basic.result:
  Updated result file
mysql-test/suite/sys_vars/r/rpl_semi_sync_master_enabled_basic.result:
  New result file
mysql-test/suite/sys_vars/r/rpl_semi_sync_master_timeout_basic.result:
  New result file
mysql-test/suite/sys_vars/r/rpl_semi_sync_master_trace_level_basic.result:
  New result file
mysql-test/suite/sys_vars/r/rpl_semi_sync_master_wait_no_slave_basic.result:
  New result file
mysql-test/suite/sys_vars/r/rpl_semi_sync_slave_enabled_basic.result:
  New result file
mysql-test/suite/sys_vars/r/rpl_semi_sync_slave_trace_level_basic.result:
  New result file
mysql-test/suite/sys_vars/r/sql_log_update_basic.result:
  Added check for variable values in I_S tables
mysql-test/suite/sys_vars/r/sql_max_join_size_basic.result:
  Added check for variable values in I_S tables
mysql-test/suite/sys_vars/r/sql_select_limit_basic.result:
  Added check for variable values in I_S tables
mysql-test/suite/sys_vars/r/thread_cache_size_basic.result:
  Added check for variable values in I_S tables
mysql-test/suite/sys_vars/t/all_vars-master.opt:
  Added opt file for all_vars.test
mysql-test/suite/sys_vars/t/all_vars.test:
  Modified test to check for semisync plugin and innodb
mysql-test/suite/sys_vars/t/innodb_adaptive_flushing_basic.test:
  Added test for innodb variable
mysql-test/suite/sys_vars/t/innodb_adaptive_hash_index_basic.test:
  Added test for innodb variable
mysql-test/suite/sys_vars/t/innodb_change_buffering_basic.test:
  Added test for innodb variable
mysql-test/suite/sys_vars/t/innodb_file_format_basic.test:
  Added test for innodb variable
mysql-test/suite/sys_vars/t/innodb_file_format_check_basic.test:
  Added test for innodb variable
mysql-test/suite/sys_vars/t/innodb_io_capacity_basic.test:
  Added test for innodb variable
mysql-test/suite/sys_vars/t/innodb_old_blocks_pct_basic.test:
  Added test for innodb variable
mysql-test/suite/sys_vars/t/innodb_old_blocks_time_basic.test:
  Added test for innodb variable
mysql-test/suite/sys_vars/t/innodb_read_ahead_threshold_basic.test:
  Added test for innodb variable
mysql-test/suite/sys_vars/t/innodb_read_io_threads_basic.test:
  Added test for innodb variable
mysql-test/suite/sys_vars/t/innodb_replication_delay_basic.test:
  Added test for innodb variable
mysql-test/suite/sys_vars/t/innodb_spin_wait_delay_basic.test:
  Added test for innodb variable
mysql-test/suite/sys_vars/t/innodb_stats_on_metadata_basic.test:
  Added test for innodb variable
mysql-test/suite/sys_vars/t/innodb_stats_sample_pages_basic.test:
  Added test for innodb variable
mysql-test/suite/sys_vars/t/innodb_strict_mode_basic.test:
  Added test for innodb variable
mysql-test/suite/sys_vars/t/innodb_thread_sleep_delay_basic.test:
  Added test for innodb variable
mysql-test/suite/sys_vars/t/innodb_use_sys_malloc_basic.test:
  Added test for innodb variable
mysql-test/suite/sys_vars/t/innodb_version_basic.test:
  Added test for innodb variable
mysql-test/suite/sys_vars/t/innodb_write_io_threads_basic.test:
  Added test for innodb variable
mysql-test/suite/sys_vars/t/last_insert_id_basic.test:
  Added check for variable values in I_S tables
mysql-test/suite/sys_vars/t/lc_messages_basic.test:
  Added check for variable values in I_S tables
mysql-test/suite/sys_vars/t/log_slow_queries_basic.test:
  Added check for variable values in I_S tables
mysql-test/suite/sys_vars/t/lower_case_file_system_basic.test:
  Added check for variable values in I_S tables
mysql-test/suite/sys_vars/t/lower_case_table_names_basic.test:
  Added check for variable values in I_S tables
mysql-test/suite/sys_vars/t/max_join_size_basic.test:
  Added check for variable values in I_S tables
mysql-test/suite/sys_vars/t/old_alter_table_basic.test:
  Added check for variable values in I_S tables
mysql-test/suite/sys_vars/t/optimizer_switch_basic.test:
  Added check for variable values in I_S tables
mysql-test/suite/sys_vars/t/profiling_basic.test:
  Added check for variable values in I_S tables
mysql-test/suite/sys_vars/t/profiling_history_size_basic.test:
  Added check for variable values in I_S tables
mysql-test/suite/sys_vars/t/pseudo_thread_id_basic.test:
  Added check for variable values in I_S tables and check for session variable 
  being numeric
mysql-test/suite/sys_vars/t/rand_seed1_basic.test:
  Added check for variable values in I_S tables
mysql-test/suite/sys_vars/t/rand_seed2_basic.test:
  Added check for variable values in I_S tables
mysql-test/suite/sys_vars/t/relay_log_recovery_basic.test:
  Added check for variable values in I_S tables
mysql-test/suite/sys_vars/t/rpl_semi_sync_master_enabled_basic-master.opt:
  Added option file for semisync variable test
mysql-test/suite/sys_vars/t/rpl_semi_sync_master_enabled_basic.test:
  Added test file for semisync variable
mysql-test/suite/sys_vars/t/rpl_semi_sync_master_timeout_basic-master.opt:
  Added option file for semisync variable test
mysql-test/suite/sys_vars/t/rpl_semi_sync_master_timeout_basic.test:
  Added test file for semisync variable
mysql-test/suite/sys_vars/t/rpl_semi_sync_master_trace_level_basic-master.opt:
  Added option file for semisync variable test
mysql-test/suite/sys_vars/t/rpl_semi_sync_master_trace_level_basic.test:
  Added test file for semisync variable
mysql-test/suite/sys_vars/t/rpl_semi_sync_master_wait_no_slave_basic-master.opt:
  Added option file for semisync variable test
mysql-test/suite/sys_vars/t/rpl_semi_sync_master_wait_no_slave_basic.test:
  Added test file for semisync variable
mysql-test/suite/sys_vars/t/rpl_semi_sync_slave_enabled_basic-master.opt:
  Added option file for semisync variable test
mysql-test/suite/sys_vars/t/rpl_semi_sync_slave_enabled_basic.test:
  Added test file for semisync variable
mysql-test/suite/sys_vars/t/rpl_semi_sync_slave_trace_level_basic-master.opt:
  Added option file for semisync variable test
mysql-test/suite/sys_vars/t/rpl_semi_sync_slave_trace_level_basic.test:
  Added test file for semisync variable
mysql-test/suite/sys_vars/t/sql_log_update_basic.test:
  Added check for variable values in I_S tables and check for ON/OFF value changes
mysql-test/suite/sys_vars/t/sql_max_join_size_basic.test:
  Added check for variable values in I_S tables
mysql-test/suite/sys_vars/t/sql_select_limit_basic.test:
  Added check for variable values in I_S tables
mysql-test/suite/sys_vars/t/thread_cache_size_basic.test:
  Added check for variable values in I_S tables
2010-01-28 22:33:00 -08:00