MySQL 5.6所有系统变量(系统参数)

MySQL 5.6所有系统变量




地址:https://dev.mysql.com/doc/refman/5.6/en/server-system-variables.html





5.1.5 Server System Variables

The MySQL server maintains many system variables that indicate how it is configured. Each system variable has a default value. System variables can be set at server startup using options on the command line or in an option file. Most of them can be changed dynamically at runtime using the SET statement, which enables you to modify operation of the server without having to stop and restart it. Setting the global value of a system variable requires the SUPER privilege. For some system variables, setting the session value also requires the SUPER privilege; if so, it is indicated in the variable description. You can also use system variable values in expressions.

There are several ways to see the names and values of system variables:

  • To see the values that a server will use based on its compiled-in defaults and any option files that it reads, use this command:

    mysqld --verbose --help
    
  • To see the values that a server will use based on its compiled-in defaults, ignoring the settings in any option files, use this command:

    mysqld --no-defaults --verbose --help
    
  • To see the current values used by a running server, use the SHOW VARIABLES statement.

This section includes a table that lists all system variables and following the table provides a description of each one. Variables with no version indicated are present in all MySQL 5.6 releases. For more information about manipulation of system variables, seeSection 5.1.6, “Using System Variables”.

Table 5.3 System Variable Summary

Name Cmd-Line Option File System Var Var Scope Dynamic
audit_log_buffer_size Yes Yes Yes Global No
audit_log_connection_policy Yes Yes Yes Global Yes
audit_log_current_session     Yes Both No
audit_log_exclude_accounts Yes Yes Yes Global Yes
audit_log_file Yes Yes Yes Global No
audit_log_flush     Yes Global Yes
audit_log_format Yes Yes Yes Global No
audit_log_include_accounts Yes Yes Yes Global Yes
audit_log_policy Yes Yes Yes Global Varies
audit_log_rotate_on_size Yes Yes Yes Global Yes
audit_log_statement_policy Yes Yes Yes Global Yes
audit_log_strategy Yes Yes Yes Global No
auto_increment_increment     Yes Both Yes
auto_increment_offset     Yes Both Yes
autocommit Yes Yes Yes Both Yes
automatic_sp_privileges     Yes Global Yes
avoid_temporal_upgrade Yes Yes Yes Global Yes
back_log     Yes Global No
basedir Yes Yes Yes Global No
big-tables Yes Yes     Yes
Variablebig_tables     Yes Both Yes
bind-address Yes Yes     No
Variablebind_address     Yes Global No
binlog_cache_size Yes Yes Yes Global Yes
binlog_checksum     Yes Global Yes
binlog_direct_non_transactional_updates Yes Yes Yes Both Yes
binlog_error_action Yes Yes Yes Both Yes
binlog-format Yes Yes     Yes
Variablebinlog_format     Yes Both Yes
binlog_gtid_simple_recovery Yes Yes Yes Global No
binlog_max_flush_queue_time     Yes Global Yes
binlog_order_commits     Yes Global Yes
binlog_row_image Yes Yes Yes Both Yes
binlog_rows_query_log_events     Yes Both Yes
binlog_stmt_cache_size Yes Yes Yes Global Yes
binlogging_impossible_mode Yes Yes Yes Both Yes
block_encryption_mode Yes Yes Yes Both Yes
bulk_insert_buffer_size Yes Yes Yes Both Yes
character_set_client     Yes Both Yes
character_set_connection     Yes Both Yes
character_set_database[a]     Yes Both Yes
character-set-filesystem Yes Yes     Yes
Variablecharacter_set_filesystem     Yes Both Yes
character_set_results     Yes Both Yes
character-set-server Yes Yes     Yes
Variablecharacter_set_server     Yes Both Yes
character_set_system     Yes Global No
character-sets-dir Yes Yes     No
Variablecharacter_sets_dir     Yes Global No
collation_connection     Yes Both Yes
collation_database[b]     Yes Both Yes
collation-server Yes Yes     Yes
Variablecollation_server     Yes Both Yes
completion_type Yes Yes Yes Both Yes
concurrent_insert Yes Yes Yes Global Yes
connect_timeout Yes Yes Yes Global Yes
connection_control_failed_connections_threshold Yes Yes Yes Global Yes
connection_control_max_connection_delay Yes Yes Yes Global Yes
connection_control_min_connection_delay Yes Yes Yes Global Yes
core_file     Yes Global No
create_old_temporals Yes Yes Yes Global No
daemon_memcached_enable_binlog Yes Yes Yes Global No
daemon_memcached_engine_lib_name Yes Yes Yes Global No
daemon_memcached_engine_lib_path Yes Yes Yes Global No
daemon_memcached_option Yes Yes Yes Global No
daemon_memcached_r_batch_size Yes Yes Yes Global No
daemon_memcached_w_batch_size Yes Yes Yes Global No
datadir Yes Yes Yes Global No
date_format     Yes Global No
datetime_format     Yes Global No
debug Yes Yes Yes Both Yes
debug_sync     Yes Session Yes
default-storage-engine Yes Yes     Yes
Variabledefault_storage_engine     Yes Both Yes
default_tmp_storage_engine Yes Yes Yes Both Yes
default_week_format Yes Yes Yes Both Yes
delay-key-write Yes Yes     Yes
Variabledelay_key_write     Yes Global Yes
delayed_insert_limit Yes Yes Yes Global Yes
delayed_insert_timeout Yes Yes Yes Global Yes
delayed_queue_size Yes Yes Yes Global Yes
disable-gtid-unsafe-statements Yes Yes Yes Global No
disable_gtid_unsafe_statements Yes Yes Yes Global No
disconnect_on_expired_password Yes Yes Yes Session No
div_precision_increment Yes Yes Yes Both Yes
end_markers_in_json     Yes Both Yes
enforce-gtid-consistency Yes Yes Yes Global No
enforce_gtid_consistency Yes Yes Yes Global No
engine-condition-pushdown Yes Yes     Yes
Variableengine_condition_pushdown     Yes Both Yes
eq_range_index_dive_limit     Yes Both Yes
error_count     Yes Session No
event-scheduler Yes Yes     Yes
Variableevent_scheduler     Yes Global Yes
expire_logs_days Yes Yes Yes Global Yes
explicit_defaults_for_timestamp Yes Yes Yes Both Yes
external_user     Yes Session No
flush Yes Yes Yes Global Yes
flush_time Yes Yes Yes Global Yes
foreign_key_checks     Yes Both Yes
ft_boolean_syntax Yes Yes Yes Global Yes
ft_max_word_len Yes Yes Yes Global No
ft_min_word_len Yes Yes Yes Global No
ft_query_expansion_limit Yes Yes Yes Global No
ft_stopword_file Yes Yes Yes Global No
general-log Yes Yes     Yes
Variablegeneral_log     Yes Global Yes
general_log_file Yes Yes Yes Global Yes
group_concat_max_len Yes Yes Yes Both Yes
gtid_done     Yes Both No
gtid_executed     Yes Both No
gtid_lost     Yes Global No
gtid-mode Yes Yes     No
Variablegtid_mode     Yes Global No
gtid_mode     Yes Global No
gtid_next     Yes Session Yes
gtid_owned     Yes Both No
gtid_purged     Yes Global Yes
have_compress     Yes Global No
have_crypt     Yes Global No
have_csv     Yes Global No
have_dynamic_loading     Yes Global No
have_geometry     Yes Global No
have_innodb     Yes Global No
have_ndbcluster     Yes Global No
have_openssl     Yes Global No
have_partitioning     Yes Global No
have_profiling     Yes Global No
have_query_cache     Yes Global No
have_rtree_keys     Yes Global No
have_ssl     Yes Global No
have_symlink     Yes Global No
host_cache_size     Yes Global Yes
hostname     Yes Global No
identity     Yes Session Yes
ignore-builtin-innodb Yes Yes     No
Variableignore_builtin_innodb     Yes Global No
ignore_db_dirs     Yes Global No
init_connect Yes Yes Yes Global Yes
init-file Yes Yes     No
Variableinit_file     Yes Global No
init_slave Yes Yes Yes Global Yes
innodb_adaptive_flushing Yes Yes Yes Global Yes
innodb_adaptive_flushing_lwm Yes Yes Yes Global Yes
innodb_adaptive_hash_index Yes Yes Yes Global Yes
innodb_adaptive_max_sleep_delay Yes Yes Yes Global Yes
innodb_additional_mem_pool_size Yes Yes Yes Global No
innodb_api_bk_commit_interval Yes Yes Yes Global Yes
innodb_api_disable_rowlock Yes Yes Yes Global No
innodb_api_enable_binlog Yes Yes Yes Global No
innodb_api_enable_mdl Yes Yes Yes Global No
innodb_api_trx_level Yes Yes Yes Global Yes
innodb_autoextend_increment Yes Yes Yes Global Yes
innodb_autoinc_lock_mode Yes Yes Yes Global No
innodb_buffer_pool_dump_at_shutdown Yes Yes Yes Global Yes
innodb_buffer_pool_dump_now Yes Yes Yes Global Yes
innodb_buffer_pool_filename Yes Yes Yes Global Yes
innodb_buffer_pool_instances Yes Yes Yes Global No
innodb_buffer_pool_load_abort Yes Yes Yes Global Yes
innodb_buffer_pool_load_at_startup Yes Yes Yes Global No
innodb_buffer_pool_load_now Yes Yes Yes Global Yes
innodb_buffer_pool_size Yes Yes Yes Global No
innodb_change_buffer_max_size Yes Yes Yes Global Yes
innodb_change_buffering Yes Yes Yes Global Yes
innodb_change_buffering_debug Yes Yes Yes Global Yes
innodb_checksum_algorithm Yes Yes Yes Global Yes
innodb_checksums Yes Yes Yes Global No
innodb_cmp_per_index_enabled Yes Yes Yes Global Yes
innodb_commit_concurrency Yes Yes Yes Global Yes
innodb_compression_failure_threshold_pct Yes Yes Yes Global Yes
innodb_compression_level Yes Yes Yes Global Yes
innodb_compression_pad_pct_max Yes Yes Yes Global Yes
innodb_concurrency_tickets Yes Yes Yes Global Yes
innodb_data_file_path Yes Yes Yes Global No
innodb_data_home_dir Yes Yes Yes Global No
innodb_disable_sort_file_cache Yes Yes Yes Global Yes
innodb_doublewrite Yes Yes Yes Global No
innodb_fast_shutdown Yes Yes Yes Global Yes
innodb_fil_make_page_dirty_debug Yes Yes Yes Global Yes
innodb_file_format Yes Yes Yes Global Yes
innodb_file_format_check Yes Yes Yes Global No
innodb_file_format_max Yes Yes Yes Global Yes
innodb_file_per_table Yes Yes Yes Global Yes
innodb_flush_log_at_timeout     Yes Global Yes
innodb_flush_log_at_trx_commit Yes Yes Yes Global Yes
innodb_flush_method Yes Yes Yes Global No
innodb_flush_neighbors Yes Yes Yes Global Yes
innodb_flushing_avg_loops Yes Yes Yes Global Yes
innodb_force_load_corrupted Yes Yes Yes Global No
innodb_force_recovery Yes Yes Yes Global No
innodb_ft_aux_table     Yes Global Yes
innodb_ft_cache_size Yes Yes Yes Global No
innodb_ft_enable_diag_print Yes Yes Yes Global Yes
innodb_ft_enable_stopword Yes Yes Yes Global Yes
innodb_ft_max_token_size Yes Yes Yes Global No
innodb_ft_min_token_size Yes Yes Yes Global No
innodb_ft_num_word_optimize Yes Yes Yes Global Yes
innodb_ft_result_cache_limit Yes Yes Yes Global Yes
innodb_ft_server_stopword_table Yes Yes Yes Global Yes
innodb_ft_sort_pll_degree Yes Yes Yes Global No
innodb_ft_total_cache_size Yes Yes Yes Global No
innodb_ft_user_stopword_table Yes Yes Yes Both Yes
innodb_io_capacity Yes Yes Yes Global Yes
innodb_io_capacity_max Yes Yes Yes Global Yes
innodb_large_prefix Yes Yes Yes Global Yes
innodb_limit_optimistic_insert_debug Yes Yes Yes Global Yes
innodb_lock_wait_timeout Yes Yes Yes Both Yes
innodb_locks_unsafe_for_binlog Yes Yes Yes Global No
innodb_log_buffer_size Yes Yes Yes Global No
innodb_log_compressed_pages Yes Yes Yes Global Yes
innodb_log_file_size Yes Yes Yes Global No
innodb_log_files_in_group Yes Yes Yes Global No
innodb_log_group_home_dir Yes Yes Yes Global No
innodb_lru_scan_depth Yes Yes Yes Global Yes
innodb_max_dirty_pages_pct Yes Yes Yes Global Yes
innodb_max_dirty_pages_pct_lwm Yes Yes Yes Global Yes
innodb_max_purge_lag Yes Yes Yes Global Yes
innodb_max_purge_lag_delay Yes Yes Yes Global Yes
innodb_mirrored_log_groups Yes Yes Yes Global No
innodb_monitor_disable Yes Yes Yes Global Yes
innodb_monitor_enable Yes Yes Yes Global Yes
innodb_monitor_reset Yes Yes Yes Global Yes
innodb_monitor_reset_all Yes Yes Yes Global Yes
innodb_numa_interleave Yes Yes Yes Global No
innodb_old_blocks_pct Yes Yes Yes Global Yes
innodb_old_blocks_time Yes Yes Yes Global Yes
innodb_online_alter_log_max_size Yes Yes Yes Global Yes
innodb_open_files Yes Yes Yes Global No
innodb_optimize_fulltext_only Yes Yes Yes Global Yes
innodb_page_size Yes Yes Yes Global No
innodb_print_all_deadlocks Yes Yes Yes Global Yes
innodb_purge_batch_size Yes Yes Yes Global Yes
innodb_purge_threads Yes Yes Yes Global No
innodb_random_read_ahead Yes Yes Yes Global Yes
innodb_read_ahead_threshold Yes Yes Yes Global Yes
innodb_read_io_threads Yes Yes Yes Global No
innodb_read_only Yes Yes Yes Global No
innodb_replication_delay Yes Yes Yes Global Yes
innodb_rollback_on_timeout Yes Yes Yes Global No
innodb_rollback_segments Yes Yes Yes Global Yes
innodb_saved_page_number_debug Yes Yes Yes Global Yes
innodb_sort_buffer_size Yes Yes Yes Global No
innodb_spin_wait_delay Yes Yes Yes Global Yes
innodb_stats_auto_recalc Yes Yes Yes Global Yes
innodb_stats_include_delete_marked Yes Yes Yes Global Yes
innodb_stats_method Yes Yes Yes Global Yes
innodb_stats_on_metadata Yes Yes Yes Global Yes
innodb_stats_persistent Yes Yes Yes Global Yes
innodb_stats_persistent_sample_pages Yes Yes Yes Global Yes
innodb_stats_sample_pages Yes Yes Yes Global Yes
innodb_stats_transient_sample_pages Yes Yes Yes Global Yes
innodb_status_output Yes Yes Yes Global Yes
innodb_status_output_locks Yes Yes Yes Global Yes
innodb_strict_mode Yes Yes Yes Both Yes
innodb_support_xa Yes Yes Yes Both Yes
innodb_sync_array_size Yes Yes Yes Global No
innodb_sync_spin_loops Yes Yes Yes Global Yes
innodb_table_locks Yes Yes Yes Both Yes
innodb_thread_concurrency Yes Yes Yes Global Yes
innodb_thread_sleep_delay Yes Yes Yes Global Yes
innodb_tmpdir Yes Yes Yes Both Yes
innodb_trx_purge_view_update_only_debug Yes Yes Yes Global Yes
innodb_trx_rseg_n_slots_debug Yes Yes Yes Global Yes
innodb_undo_directory Yes Yes Yes Global No
innodb_undo_logs Yes Yes Yes Global Yes
innodb_undo_tablespaces Yes Yes Yes Global No
innodb_use_native_aio Yes Yes Yes Global No
innodb_use_sys_malloc Yes Yes Yes Global No
innodb_version     Yes Global No
innodb_write_io_threads Yes Yes Yes Global No
insert_id     Yes Session Yes
interactive_timeout Yes Yes Yes Both Yes
join_buffer_size Yes Yes Yes Both Yes
keep_files_on_create Yes Yes Yes Both Yes
key_buffer_size Yes Yes Yes Global Yes
key_cache_age_threshold Yes Yes Yes Global Yes
key_cache_block_size Yes Yes Yes Global Yes
key_cache_division_limit Yes Yes Yes Global Yes
language Yes Yes Yes Global No
large_files_support     Yes Global No
large_page_size     Yes Global No
large-pages Yes Yes     No
Variablelarge_pages     Yes Global No
last_insert_id     Yes Session Yes
lc-messages Yes Yes     Yes
Variablelc_messages     Yes Both Yes
lc-messages-dir Yes Yes     No
Variablelc_messages_dir     Yes Global No
lc_time_names     Yes Both Yes
license     Yes Global No
local_infile     Yes Global Yes
lock_wait_timeout Yes Yes Yes Both Yes
locked_in_memory     Yes Global No
log Yes Yes Yes Global Yes
log-bin Yes Yes Yes Global No
log_bin     Yes Global No
log_bin_basename     Yes Global No
log_bin_index     Yes Global No
log-bin-trust-function-creators Yes Yes     Yes
Variablelog_bin_trust_function_creators     Yes Global Yes
log-bin-use-v1-row-events Yes Yes     No
Variablelog_bin_use_v1_row_events     Yes Global No
log_bin_use_v1_row_events Yes Yes Yes Global No
log-error Yes Yes     No
Variablelog_error     Yes Global No
log-output Yes Yes     Yes
Variablelog_output     Yes Global Yes
log-queries-not-using-indexes Yes Yes     Yes
Variablelog_queries_not_using_indexes     Yes Global Yes
log-slave-updates Yes Yes     No
Variablelog_slave_updates     Yes Global No
log_slave_updates Yes Yes Yes Global No
log_slow_admin_statements     Yes Global Yes
log-slow-queries Yes Yes     Yes
Variablelog_slow_queries     Yes Global Yes
log_slow_slave_statements     Yes Global Yes
log_throttle_queries_not_using_indexes     Yes Global Yes
log-warnings Yes Yes     Yes
Variablelog_warnings     Yes Varies Yes
long_query_time Yes Yes Yes Both Yes
low-priority-updates Yes Yes     Yes
Variablelow_priority_updates     Yes Both Yes
lower_case_file_system     Yes Global No
lower_case_table_names Yes Yes Yes Global No
master_info_repository Yes Yes Yes Global Yes
master_verify_checksum     Yes Global Yes
max_allowed_packet Yes Yes Yes Both Yes
max_binlog_cache_size Yes Yes Yes Global Yes
max_binlog_size Yes Yes Yes Global Yes
max_binlog_stmt_cache_size Yes Yes Yes Global Yes
max_connect_errors Yes Yes Yes Global Yes
max_connections Yes Yes Yes Global Yes
max_delayed_threads Yes Yes Yes Both Yes
max_digest_length Yes Yes Yes Global No
max_error_count Yes Yes Yes Both Yes
max_heap_table_size Yes Yes Yes Both Yes
max_insert_delayed_threads     Yes Both Yes
max_join_size Yes Yes Yes Both Yes
max_length_for_sort_data Yes Yes Yes Both Yes
max_prepared_stmt_count Yes Yes Yes Global Yes
max_relay_log_size Yes Yes Yes Global Yes
max_seeks_for_key Yes Yes Yes Both Yes
max_sort_length Yes Yes Yes Both Yes
max_sp_recursion_depth Yes Yes Yes Both Yes
max_tmp_tables     Yes Both Yes
max_user_connections Yes Yes Yes Both Yes
max_write_lock_count Yes Yes Yes Global Yes
metadata_locks_cache_size     Yes Global No
metadata_locks_hash_instances     Yes Global No
min-examined-row-limit Yes Yes Yes Both Yes
multi_range_count Yes Yes Yes Both Yes
myisam_data_pointer_size Yes Yes Yes Global Yes
myisam_max_sort_file_size Yes Yes Yes Global Yes
myisam_mmap_size Yes Yes Yes Global No
myisam_recover_options     Yes Global No
myisam_repair_threads Yes Yes Yes Both Yes
myisam_sort_buffer_size Yes Yes Yes Both Yes
myisam_stats_method Yes Yes Yes Both Yes
myisam_use_mmap Yes Yes Yes Global Yes
mysql_firewall_max_query_size Yes Yes Yes Global No
mysql_firewall_mode Yes Yes Yes Global Yes
mysql_firewall_trace Yes Yes Yes Global Yes
named_pipe     Yes Global No
ndb_autoincrement_prefetch_sz Yes Yes Yes Both Yes
ndb-batch-size Yes Yes Yes Global No
ndb-blob-read-batch-bytes Yes Yes Yes Both Yes
ndb-blob-write-batch-bytes Yes Yes Yes Both Yes
ndb_cache_check_time Yes Yes Yes Global Yes
ndb_clear_apply_status Yes   Yes Global Yes
ndb-cluster-connection-pool Yes Yes Yes Global No
Ndb_conflict_last_conflict_epoch     Yes Global No
ndb-deferred-constraints Yes Yes     Yes
Variablendb_deferred_constraints     Yes Both Yes
ndb_deferred_constraints Yes Yes Yes Both Yes
ndb-distribution Yes Yes     Yes
Variablendb_distribution     Yes Global Yes
ndb_distribution Yes Yes Yes Global Yes
ndb_eventbuffer_free_percent Yes Yes Yes Global Yes
ndb_eventbuffer_max_alloc Yes Yes Yes Global Yes
ndb_extra_logging Yes Yes Yes Global Yes
ndb_force_send Yes Yes Yes Both Yes
ndb_index_stat_cache_entries Yes Yes Yes Both Yes
ndb_index_stat_enable Yes Yes Yes Both Yes
ndb_index_stat_option Yes Yes Yes Both Yes
ndb_index_stat_update_freq Yes Yes Yes Both Yes
ndb_join_pushdown     Yes Both Yes
ndb-log-apply-status Yes Yes     No
Variablendb_log_apply_status     Yes Global No
ndb_log_apply_status Yes Yes Yes Global No
ndb_log_bin Yes   Yes Both Yes
ndb_log_binlog_index Yes   Yes Global Yes
ndb-log-empty-epochs Yes Yes Yes Global Yes
ndb_log_empty_epochs Yes Yes Yes Global Yes
ndb-log-empty-update Yes Yes Yes Global Yes
ndb_log_empty_update Yes Yes Yes Global Yes
ndb-log-exclusive-reads Yes Yes     Yes
Variablendb_log_exclusive_reads     Yes Both Yes
ndb_log_exclusive_reads Yes Yes Yes Both Yes
ndb-log-orig Yes Yes     No
Variablendb_log_orig     Yes Global No
ndb_log_orig Yes Yes Yes Global No
ndb-log-transaction-id Yes Yes     No
Variablendb_log_transaction_id     Yes Global No
ndb_log_transaction_id     Yes Global No
ndb-log-update-as-write Yes Yes Yes Global Yes
ndb_log_updated_only Yes Yes Yes Global Yes
ndb_optimization_delay     Yes Global Yes
ndb_optimized_node_selection Yes Yes Yes Global No
ndb_recv_thread_cpu_mask     Yes Global Yes
ndb_report_thresh_binlog_epoch_slip Yes Yes Yes Global Yes
ndb_report_thresh_binlog_mem_usage Yes Yes Yes Global Yes
ndb_show_foreign_key_mock_tables Yes Yes Yes Global Yes
ndb_slave_conflict_role Yes Yes Yes Global Yes
Ndb_slave_max_replicated_epoch     Yes Global No
ndb_table_no_logging     Yes Session Yes
ndb_table_temporary     Yes Session Yes
ndb_use_copying_alter_table     Yes Both No
ndb_use_exact_count     Yes Both Yes
ndb_use_transactions Yes Yes Yes Both Yes
ndb_version     Yes Global No
ndb_version_string     Yes Global No
ndb-wait-connected Yes Yes Yes Global No
ndb-wait-setup Yes Yes Yes Global No
ndbinfo_database     Yes Global No
ndbinfo_max_bytes Yes   Yes Both Yes
ndbinfo_max_rows Yes   Yes Both Yes
ndbinfo_offline     Yes Global Yes
ndbinfo_show_hidden Yes   Yes Both Yes
ndbinfo_table_prefix Yes   Yes Both Yes
ndbinfo_version     Yes Global No
net_buffer_length Yes Yes Yes Both Yes
net_read_timeout Yes Yes Yes Both Yes
net_retry_count Yes Yes Yes Both Yes
net_write_timeout Yes Yes Yes Both Yes
new Yes Yes Yes Both Yes
old Yes Yes Yes Global No
old-alter-table Yes Yes     Yes
Variableold_alter_table     Yes Both Yes
old_passwords     Yes Both Yes
open-files-limit Yes Yes     No
Variableopen_files_limit     Yes Global No
optimizer_join_cache_level Yes Yes Yes Both Yes
optimizer_prune_level Yes Yes Yes Both Yes
optimizer_search_depth Yes Yes Yes Both Yes
optimizer_switch Yes Yes Yes Both Yes
optimizer_trace     Yes Both Yes
optimizer_trace_features     Yes Both Yes
optimizer_trace_limit     Yes Both Yes
optimizer_trace_max_mem_size     Yes Both Yes
optimizer_trace_offset     Yes Both Yes
performance_schema Yes Yes Yes Global No
performance_schema_accounts_size Yes Yes Yes Global No
performance_schema_digests_size Yes Yes Yes Global No
performance_schema_events_stages_history_long_size Yes Yes Yes Global No
performance_schema_events_stages_history_size Yes Yes Yes Global No
performance_schema_events_statements_history_long_size Yes Yes Yes Global No
performance_schema_events_statements_history_size Yes Yes Yes Global No
performance_schema_events_waits_history_long_size Yes Yes Yes Global No
performance_schema_events_waits_history_size Yes Yes Yes Global No
performance_schema_hosts_size Yes Yes Yes Global No
performance_schema_max_cond_classes Yes Yes Yes Global No
performance_schema_max_cond_instances Yes Yes Yes Global No
performance_schema_max_digest_length Yes Yes Yes Global No
performance_schema_max_file_classes Yes Yes Yes Global No
performance_schema_max_file_handles Yes Yes Yes Global No
performance_schema_max_file_instances Yes Yes Yes Global No
performance_schema_max_mutex_classes Yes Yes Yes Global No
performance_schema_max_mutex_instances Yes Yes Yes Global No
performance_schema_max_rwlock_classes Yes Yes Yes Global No
performance_schema_max_rwlock_instances Yes Yes Yes Global No
performance_schema_max_socket_classes Yes Yes Yes Global No
performance_schema_max_socket_instances Yes Yes Yes Global No
performance_schema_max_stage_classes Yes Yes Yes Global No
performance_schema_max_statement_classes Yes Yes Yes Global No
performance_schema_max_table_handles Yes Yes Yes Global No
performance_schema_max_table_instances Yes Yes Yes Global No
performance_schema_max_thread_classes Yes Yes Yes Global No
performance_schema_max_thread_instances Yes Yes Yes Global No
performance_schema_session_connect_attrs_size Yes Yes Yes Global No
performance_schema_setup_actors_size Yes Yes Yes Global No
performance_schema_setup_objects_size Yes Yes Yes Global No
performance_schema_users_size Yes Yes Yes Global No
pid-file Yes Yes     No
Variablepid_file     Yes Global No
plugin_dir Yes Yes Yes Global No
port Yes Yes Yes Global No
preload_buffer_size Yes Yes Yes Both Yes
profiling     Yes Both Yes
profiling_history_size Yes Yes Yes Both Yes
protocol_version     Yes Global No
proxy_user     Yes Session No
pseudo_slave_mode     Yes Session Yes
pseudo_thread_id     Yes Session Yes
query_alloc_block_size Yes Yes Yes Both Yes
query_cache_limit Yes Yes Yes Global Yes
query_cache_min_res_unit Yes Yes Yes Global Yes
query_cache_size Yes Yes Yes Global Yes
query_cache_type Yes Yes Yes Both Yes
query_cache_wlock_invalidate Yes Yes Yes Both Yes
query_prealloc_size Yes Yes Yes Both Yes
rand_seed1     Yes Session Yes
rand_seed2     Yes Session Yes
range_alloc_block_size Yes Yes Yes Both Yes
read_buffer_size Yes Yes Yes Both Yes
read_only Yes Yes Yes Global Yes
read_rnd_buffer_size Yes Yes Yes Both Yes
relay-log Yes Yes     No
Variablerelay_log     Yes Global No
relay_log_basename     Yes Global No
relay-log-index Yes Yes     No
Variablerelay_log_index     Yes Global No
relay_log_index Yes Yes Yes Global No
relay_log_info_file Yes Yes Yes Global No
relay_log_info_repository     Yes Global Yes
relay_log_purge Yes Yes Yes Global Yes
relay_log_recovery Yes Yes Yes Global Varies
relay_log_space_limit Yes Yes Yes Global No
report-host Yes Yes     No
Variablereport_host     Yes Global No
report-password Yes Yes     No
Variablereport_password     Yes Global No
report-port Yes Yes     No
Variablereport_port     Yes Global No
report-user Yes Yes     No
Variablereport_user     Yes Global No
rpl_semi_sync_master_enabled     Yes Global Yes
rpl_semi_sync_master_timeout     Yes Global Yes
rpl_semi_sync_master_trace_level     Yes Global Yes
rpl_semi_sync_master_wait_no_slave     Yes Global Yes
rpl_semi_sync_slave_enabled     Yes Global Yes
rpl_semi_sync_slave_trace_level     Yes Global Yes
rpl_stop_slave_timeout Yes Yes Yes Global Yes
secure-auth Yes Yes     Yes
Variablesecure_auth     Yes Global Yes
secure-file-priv Yes Yes     No
Variablesecure_file_priv     Yes Global No
server-id Yes Yes     Yes
Variableserver_id     Yes Global Yes
server-id-bits Yes Yes     No
Variableserver_id_bits     Yes Global No
server_id_bits Yes Yes Yes Global No
server_uuid     Yes Global No
sha256_password_private_key_path     Yes Global No
sha256_password_public_key_path     Yes Global No
shared_memory Yes Yes Yes Global No
shared_memory_base_name Yes Yes Yes Global No
show_old_temporals Yes Yes Yes Both Yes
simplified_binlog_gtid_recovery Yes Yes Yes Global No
skip_external_locking Yes Yes Yes Global No
skip-name-resolve Yes Yes     No
Variableskip_name_resolve     Yes Global No
skip-networking Yes Yes     No
Variableskip_networking     Yes Global No
skip-show-database Yes Yes     No
Variableskip_show_database     Yes Global No
slave_allow_batching Yes Yes Yes Global Yes
slave_checkpoint_group Yes Yes Yes Global Yes
slave_checkpoint_period Yes Yes Yes Global Yes
slave_compressed_protocol Yes Yes Yes Global Yes
slave_exec_mode Yes Yes Yes Global Yes
slave-load-tmpdir Yes Yes     No
Variableslave_load_tmpdir     Yes Global No
slave_max_allowed_packet     Yes Global Yes
slave-net-timeout Yes Yes     Yes
Variableslave_net_timeout     Yes Global Yes
slave_parallel_workers Yes   Yes Global Yes
slave_pending_jobs_size_max     Yes Global Yes
slave_rows_search_algorithms     Yes Global Yes
slave-skip-errors Yes Yes     No
Variableslave_skip_errors     Yes Global No
slave_sql_verify_checksum     Yes Global Yes
slave_transaction_retries Yes Yes Yes Global Yes
slave_type_conversions Yes Yes Yes Global No
slow_launch_time Yes Yes Yes Global Yes
slow-query-log Yes Yes     Yes
Variableslow_query_log     Yes Global Yes
slow_query_log_file Yes Yes Yes Global Yes
socket Yes Yes Yes Global No
sort_buffer_size Yes Yes Yes Both Yes
sql_auto_is_null     Yes Both Yes
sql_big_selects     Yes Both Yes
sql_big_tables     Yes Both Yes
sql_buffer_result     Yes Both Yes
sql_log_bin     Yes Session Yes
sql_log_off     Yes Both Yes
sql_low_priority_updates     Yes Both Yes
sql_max_join_size     Yes Both Yes
sql-mode Yes Yes     Yes
Variablesql_mode     Yes Both Yes
sql_notes     Yes Both Yes
sql_quote_show_create     Yes Both Yes
sql_safe_updates     Yes Both Yes
sql_select_limit     Yes Both Yes
sql_slave_skip_counter     Yes Global Yes
sql_warnings     Yes Both Yes
ssl-ca Yes Yes     No
Variablessl_ca     Yes Global No
ssl-capath Yes Yes     No
Variablessl_capath     Yes Global No
ssl-cert Yes Yes     No
Variablessl_cert     Yes Global No
ssl-cipher Yes Yes     No
Variablessl_cipher     Yes Global No
ssl-crl Yes Yes     No
Variablessl_crl     Yes Global No
ssl-crlpath Yes Yes     No
Variablessl_crlpath     Yes Global No
ssl-key Yes Yes     No
Variablessl_key     Yes Global No
storage_engine     Yes Both Yes
stored_program_cache Yes Yes Yes Global Yes
sync_binlog Yes Yes Yes Global Yes
sync_frm Yes Yes Yes Global Yes
sync_master_info Yes Yes Yes Global Yes
sync_relay_log Yes Yes Yes Global Yes
sync_relay_log_info Yes Yes Yes Global Yes
system_time_zone     Yes Global No
table_definition_cache     Yes Global Yes
table_open_cache     Yes Global Yes
table_open_cache_instances     Yes Global No
thread_cache_size Yes Yes Yes Global Yes
thread_concurrency Yes Yes Yes Global No
thread_handling Yes Yes Yes Global No
thread_pool_algorithm Yes Yes Yes Global No
thread_pool_high_priority_connection Yes Yes Yes Both Yes
thread_pool_max_unused_threads Yes Yes Yes Global Yes
thread_pool_prio_kickup_timer Yes Yes Yes Both Yes
thread_pool_size Yes Yes Yes Global No
thread_pool_stall_limit Yes Yes Yes Global Yes
thread_stack Yes Yes Yes Global No
time_format     Yes Global No
time_zone     Yes Both Yes
timed_mutexes Yes Yes Yes Global Yes
timestamp     Yes Session Yes
tmp_table_size Yes Yes Yes Both Yes
tmpdir Yes Yes Yes Global No
transaction_alloc_block_size Yes Yes Yes Both Yes
transaction_allow_batching     Yes Session Yes
transaction_prealloc_size Yes Yes Yes Both Yes
tx_isolation     Yes Both Yes
tx_read_only     Yes Both Yes
unique_checks     Yes Both Yes
updatable_views_with_limit Yes Yes Yes Both Yes
validate_password_dictionary_file     Yes Global Varies
validate_password_length     Yes Global Yes
validate_password_mixed_case_count     Yes Global Yes
validate_password_number_count     Yes Global Yes
validate_password_policy     Yes Global Yes
validate_password_special_char_count     Yes Global Yes
validate_user_plugins     Yes Global No
version     Yes Global No
version_comment     Yes Global No
version_compile_machine     Yes Global No
version_compile_os     Yes Global No
wait_timeout Yes Yes Yes Both Yes
warning_count     Yes Session No

[a] This option is dynamic, but only the server should set this information. You should not set the value of this variable manually.

[b] This option is dynamic, but only the server should set this information. You should not set the value of this variable manually.



For additional system variable information, see these sections:

Note

Some of the following variable descriptions refer to enabling or disabling a variable. These variables can be enabled with the SET statement by setting them to ON or 1, or disabled by setting them to OFF or 0. However, before MySQL 5.6.2, to set such a variable on the command line or in an option file, you must set it to 1 or 0; setting it to ON or OFF will not work. For example, on the command line, --delay_key_write=1 works but --delay_key_write=ON does not. As of MySQL 5.6.2, boolean variables can be set at startup to the values ONTRUEOFF, and FALSE (not case sensitive). See Section 4.2.5, “Program Option Modifiers”.




MySQL变量(参数)的查看和设置



[MySQL] 变量(参数)的查看和设置

 

类似于Oracle的参数文件,MySQL的选项文件(如my.cnf)用于配置MySQL服务器,但和Oracle叫法不一样,在MySQL里, 官方叫变量(Varialbes),但其实叫参数也是可以的,只要明白这俩是同一个东西就可以了。

MySQL的变量分为以下两种:

1)系统变量:配置MySQL服务器的运行环境,可以用show variables查看

2)状态变量:监控MySQL服务器的运行状态,可以用show status查看

 

系统变量

系统变量按其作用域的不同可以分为以下两种:

1)分为全局(GLOBAL)级:对整个MySQL服务器有效

2)会话(SESSION或LOCAL)级:只影响当前会话

有些变量同时拥有以上两个级别,MySQL将在建立连接时用全局级变量初始化会话级变量,但一旦连接建立之后,全局级变量的改变不会影响到会话级变量。

查看系统变量的值

可以通过show vairables语句查看系统变量的值:

[sql] 

mysql> show variables like 'log%';  

mysql> show variables where Variable_name like 'log%' and value='ON';  

注意:show variables优先显示会话级变量的值,如果这个值不存在,则显示全局级变量的值,当然你也可以加上GLOBAL或SESSION关键字区别:

[sql] 

show global variables;  

show session/local variables;  

在写一些存储过程时,可能需要引用系统变量的值,可以使用如下方法:

[sql] 

@@GLOBAL.var_name  

@@SESSION.var_name 或  

@@LOCAL.var_name  

如果在变量名前没有级别限定符,将优先显示会话级的值。

最后一种查看变量值的方法是从INFORMATION_SCHEMA数据库里的GLOBAL_VARIABLES和SESSION_VARIABLES表获得。

设置和修改系统变量的值

在MySQL服务器启动时,有以下两种方法设置系统变量的值:

1)命令行参数,如:mysqld --max_connections=200

2)选项文件(my.cnf)

在MySQL服务器启动后,如果需要修改系统变量的值,可以通过SET语句:

[plain] 

SET GLOBAL var_name = value;  

SET @@GLOBAL.var_name = value;  

SET SESSION var_name = value;  

SET @@SESSION.var_name = value;  

如果在变量名前没有级别限定符,表示修改会话级变量。

注意:和启动时不一样的是,在运行时设置的变量不允许使用后缀字母'K'、‘M'等,但可以用表达式来达到相同的效果,如:

[sql] 

SET GLOBAL read_buffer_size = 2*1024*1024  

 

状态变量

状态变量可以使我们及时了解MySQL服务器的运行状况,可以使用show status语句查看。

状态变量和相同变量类似,也分为全局级和会话级,show status也支持like匹配查询,比较大的不同是状态变量只能由MySQL服务器本身设置和修改,对于用户来说是只读的,不可以通过SET语句设置和修改它们。



当启动实例时,MySQL数据库会去读取配置文件,根据配置文件的参数来启动数据库实例。这与Oracle的参数文件(spfile)相似,不同的是,Oracle中如果没有参数文件,在启动实例时会提示找不到该参数文件,数据库启动失败。而在MySQL数据库中,可以没有配置文件,在这种情况下,MySQL会按照编译时的默认参数设置启动实例。用以下命令可以查看当MySQL数据库实例启动时,会在哪些位置查找配置文件。

  1. [root@xen-server bin]# mysql --help | grep my.cnf  
  2. order of preference, my.cnf, $MYSQL_TCP_PORT,  
  3. /etc/my.cnf /etc/mysql/my.cnf /usr/local/mysql/etc/my.cnf ~/.my.cnf 

可以看到,MySQL数据库是按/etc/my.cnf→/etc/mysql/my.cnf→/usr/local/mysql/etc/my.cnf→~/.my.cnf的顺序读取配置文件的。可能有读者会问:“如果几个配置文件中都有同一个参数,MySQL数据库以哪个配置文件为准?”答案很简单,MySQL数据库会以读取到的最后一个配置文件中的参数为准。在Linux环境下,配置文件一般放在/etc/my.cnf下。在Windows平台下,配置文件的后缀名可能是.cnf,也可能是.ini。例如在Windows操作系统下运行mysql--help,可以找到如下类似内容:

  1. Default options are read from the following files in the given order:  
  2. C:\Windows\my.ini C:\Windows\my.cnf C:\my.ini C:\my.cnf C:\Program Files\MySQL\M  
  3. \MySQL Server 5.1\my.cnf 



ERROR 3167 (HY000): The 'INFORMATION_SCHEMA.GLOBAL_STATUS' feature is disabled; see the documentation for 'show_compatibility_56'

  1. --从mysql5.7.6开始information_schema.global_status已经开始被舍弃,为了兼容性,此时需要打开 show_compatibility_56  
  2. mysql> select * from information_schema.global_status limit 3;  
  3. ERROR 3167 (HY000): The 'INFORMATION_SCHEMA.GLOBAL_STATUS' feature is disabled; see the documentation for 'show_compatibility_56'  
  4.   
  5. --查看show_compatibility_56其值  
  6. mysql> show variables like '%show_compatibility_56%';  
  7. +-----------------------+-------+  
  8. | Variable_name         | Value |  
  9. +-----------------------+-------+  
  10. | show_compatibility_56 | OFF   |  
  11. +-----------------------+-------+  
  12. 1 row in set (0.01 sec)  
  13.   
  14. --把show_compatibility_56打开  
  15. mysql> set global show_compatibility_56=on;  
  16. Query OK, 0 rows affected (0.00 sec)  
  17.   
  18. mysql> show variables like '%show_compatibility_56%';  
  19. +-----------------------+-------+  
  20. | Variable_name         | Value |  
  21. +-----------------------+-------+  
  22. | show_compatibility_56 | ON    |  
  23. +-----------------------+-------+  
  24. 1 row in set (0.00 sec)  
  25.   
  26. mysql> select * from information_schema.global_status limit 3;  
  27. +-----------------------+----------------+  
  28. | VARIABLE_NAME         | VARIABLE_VALUE |  
  29. +-----------------------+----------------+  
  30. | ABORTED_CLIENTS       | 0              |  
  31. | ABORTED_CONNECTS      | 0              |  
  32. | BINLOG_CACHE_DISK_USE | 0              |  
  33. +-----------------------+----------------+  
  34. 3 rows in set, 1 warning (0.00 sec)  
  35.   
  36. In MySQL 5.6, system and status variable information is available from these SHOW statements:  
  37.   
  38. SHOW VARIABLES  
  39. SHOW STATUS  
  40. And from these INFORMATION_SCHEMA tables:  
  41. INFORMATION_SCHEMA.GLOBAL_VARIABLES  
  42. INFORMATION_SCHEMA.SESSION_VARIABLES  
  43. INFORMATION_SCHEMA.GLOBAL_STATUS  
  44. INFORMATION_SCHEMA.SESSION_STATUS  
  45.   
  46. MySQL 5.7  
  47. As of MySQL 5.7.6, the Performance Schema includes these tables as new sources of system and status  
  48. variable information:  
  49. performance_schema.global_variables  
  50. performance_schema.session_variables  
  51. performance_schema.variables_by_thread  
  52. performance_schema.global_status  
  53. performance_schema.session_status  
  54. performance_schema.status_by_thread  
  55. performance_schema.status_by_account  
  56. performance_schema.status_by_host  
  57. performance_schema.status_by_user  



MySQL 5.7数据库参数优化



连接相关参数

max_connections:允许客户端并发连接的最大数量,默认值是151,一般将该参数设置为500-2000


max_connect_errors:如果客户端尝试连接的错误数量超过这个参数设置的值,则服务器不再接受新的客户端连接。可以通过清空主机的缓存来解除服务器的这种阻止新连接的状态,通过FLUSH HOSTS或mysqladmin flush-hosts命令来清空缓存。这个参数的默认值是100,一般将该参数设置为100000。

interactive_timeout:Mysql关闭交互连接前的等待时间,单位是秒,默认是8小时,建议不要将该参数设置超过24小时,即86400

wait_timeout:Mysql关闭非交互连接前的等待时间,单位是秒,默认是8小时,建议不要将该参数设置超过24小时,即86400

skip_name_resolve:如果这个参数设为OFF,则MySQL服务在检查客户端连接的时候会解析主机名;如果这个参数设为ON,则MySQL服务只会使用IP,在这种情况下,授权表中的Host字段必须是IP地址或localhost。
这个参数默认是关闭的

back_log:MySQL服务器连接请求队列所能处理的最大连接请求数,如果队列放满了,后续的连接才会拒绝。当主要的MySQL线程在很短时间内获取大量连接请求时,这个参数会生效。接下来,MySQL主线程会花费很短的时间去检查连接,然后开启新的线程。这个参数指定了MySQL的TCP/IP监听队列的大小。如果MySQL服务器在短时间内有大量的连接,可以增加这个参数。


文件相关参数

sync_binlog:控制二进制日志被同步到磁盘前二进制日志提交组的数量。当这个参数为0的时候,二进制日志不会被同步到磁盘;当这个参数设为0以上的数值时,就会有设置该数值的二进制提交组定期同步日志到磁盘。当这个参数设为1的时候,所有事务在提交前会被同步到二进制日志中,因而即使MySQL服务器发生意外重启,任何二进制日志中没有的事务只会处于准备状态,这会导致MySQL服务器自动恢复以回滚这些事务。这样就会保证二进制日志不会丢失事务,是最安全的选项;同时由于增加了磁盘写,这对性能有一定降低。将这个参数设为1以上的数值会提高数据库的性能,但同时会伴随数据丢失的风险。建议将该参数设为2、4、6、8、16。

expire_logs_days:二进制日志自动删掉的时间间隔。默认值为0,代表不会自动删除二进制日志。想手动删除二进制日志,可以执行 PURGE BINARY LOGS。

max_binlog_size:二进制日志文件的最大容量,当写入的二进制日志超过这个值的时候,会完成当前二进制的写入,向新的二进制日志写入日志。这个参数最小值时4096字节;最大值和默认值时1GB。相同事务中的语句都会写入同一个二进制日志,当一个事务很大时,二进制日志实际的大小会超过max_binlog_size参数设置的值。如果max_relay_log_size参数设为0,则max_relay_log_size参数会使用和max_binlog_size参数同样的大小。建议将此参数设为512M。

local_infile:是否允许客户端使用LOAD DATA INFILE语句。如果这个参数没有开启,客户端不能在LOAD DATA语句中使用LOCAL参数。

open_files_limit:操作系统允许MySQL服务打开的文件数量。这个参数实际的值以系统启动时设定的值、max_connections和table_open_cache为基础,使用下列的规则:

  1. 10 + max_connections + (table_open_cache * 2)

  2.  max_connections * 5

  3. MySQL启动时指定open_files_limit的值


缓存控制参数

binlog_cache_size:在事务中二进制日志使用的缓存大小。如果MySQL服务器支持所有的存储引擎且启用二进制日志,每个客户端都会被分配一个二进制日志缓存。如果数据库中有很多大的事务,增大这个缓存可以获得更好的性能。


Binlog_cache_use和Binlog_cache_disk_use这两个参数对于binlog_cache_size参数的优化很有用。binlog_cache_size参数只设置事务所使用的缓存,非事务SQL语句所使用的缓存由binlog_stmt_cache_size系统参数控制。建议不要将这个参数设为超过64MB,以防止客户端连接多而影响MySQL服务的性能。

max_binlog_cache_size:如果一个事务需要的内存超过这个参数,服务器会报错"Multi-statement transaction required more than 'max_binlog_cache_size' bytes"。这个参数最大的推荐值是4GB,这是因为MySQL不能在二进制日志设为超过4GB的情况下正常的工作。建议将该参数设为binlog_cache_size*2。

binlog_stmt_cache_size:这个参数决定二进制日志处理非事务性语句的缓存。如果MySQL服务支持任何事务性的存储引擎且开启了二进制日志,每个客户端连接都会被分配二进制日志事务和语句缓存。如果数据库中经常运行大的事务,增加这个缓存可以获得更好的性能。

table_open_cache:所有线程能打开的表的数量。

thread_cache_size:MySQL服务缓存以重用的线程数。当客户端断开连接的时候,如果线程缓存没有使用满,则客户端的线程被放入缓存中。如果有客户端断开连接后再次连接到MySQL服务且线程在缓存中,则MySQL服务会优先使用缓存中的线程;如果线程缓存没有这些线程,则MySQL服务器会创建新的线程。如果数据库有很多的新连接,可以增加这个参数来提升性能。如果MySQL服务器每秒有上百个连接,可以增大thread_cache_size参数来使MySQL服务器使用缓存的线程。通过检查Connections和Threads_created状态参数,可以判断线程缓存是否足够。这个参数默认的值是由下面的公式来决定的:

8 + (max_connections / 100)

建议将此参数设置为300~500。线程缓存的命中率计算公式为(1-thread_created/connections)*100%,可以通过这个公式来优化和调整thread_cache_size参数。


query_cache_size:为查询结果所分配的缓存。默认这个参数是没有开启的。这个参数的值应设为整数的1024倍,如果设为其他值则会被自动调整为接近此数值的1024倍。这个参数最小需要40KB。建议不要将此参数设为大于256MB,以免占用太多的系统内存。

query_cache_min_res_unit:查询缓存所分配的最小块的大小。默认值是4096(4KB)。

query_cache_type:设置查询缓存的类型。当这个参数为0或OFF时,则MySQL服务器不会启用查询缓存;当这个参数为1或ON时,则MySQL服务器会缓存所有查询结果(除了带有SELECT SQL_NO_CACHE的语句);当这个参数为2或DEMAND时,则MySQL服务器只会缓存带有SELECT SQL_CACHE的语句。

sort_buffer_size:每个会话执行排序操作所分配的内存大小。想要增大max_sort_length参数,需要增大sort_buffer_size参数。如果在SHOW GLOBAL STATUS输出结果中看到每秒输出的Sort_merge_passes状态参数很大,可以考虑增大sort_buffer_size这个值来提高ORDER BY 和 GROUP BY的处理速度。建议设置为1~4MB。当个别会话需要执行大的排序操作时,在会话级别增大这个参数。

read_buffer_size:为每个线程对MyISAm表执行顺序读所分配的内存。如果数据库有很多顺序读,可以增加这个参数,默认值是131072字节。这个参数的值需要是4KB的整数倍。这个参数也用在下面场景中:

  • 当执行ORDER BY操作时,缓存索引到临时文件(不是临时表)中;

  • 执行批量插入到分区表中;

  • 缓存嵌套查询的执行结果。


read_rnd_buffer_size:这个参数用在MyISAM表和任何存储引擎表随机读所使用的内存。当从MyISAM表中以键排序读取数据的时候,扫描的行将使用这个缓存以避免磁盘的扫描。将这个值设到一个较大的值可以显著提升ORDER BY的性能。然后,这个参数会应用到所有的客户端连接,所有不应该将这个参数在全局级别设为一个较大的值;在运行大查询的会话中,在会话级别增大这个参数即可。

join_buffer_size:MySQL服务器用来作普通索引扫描、范围索引扫描和不使用索引而执行全表扫描这些操作所用的缓存大小。通常,获取最快连接的方法是增加索引。当不能增加索引的时候,使全连接变快的方法是增大join_buffer_size参数。对于执行全连接的两张表,每张表都被分配一块连接内存。对于没有使用索引的多表复杂连接,需要多块连接内存。通常来说,可以将此参数在全局上设置一个较小的值,而在需要执行大连接的会话中在会话级别进行设置。默认值是256KB。

net_buffer_length:每个客户端线程和连接缓存和结果缓存交互,每个缓存最初都被分配大小为net_buffer_length的容量,并动态增长,直至达到max_allowed_packet参数的大小。当每条SQL语句执行完毕后,结果缓存会缩小到net_buffer_length大小。不建议更改这个参数,除非你的系统有很少的内存,可以调整这个参数。如果语句需要的内存超过了这个参数的大小,则连接缓存会自动增大。net_buffer_length参数最大可以设置到1MB。不能在会话级别设置这个参数。

max_allowed_packet:网络传输时单个数据包的大小。默认值是4MB。包信息缓存的初始值是由net_buffer_length指定的,但是包可能会增长到max_allowed_packet参数设置的值。如果要使用BLOB字段或长字符串,需要增加这个参数的值。这个参数的值需要设置成和最大的BLOB字段一样的大小。max_allowed_packet参数的协议限制是1GB。这个参数应该是1024整数倍。

bulk_insert_buffer_size:MyISAM表使用一种特殊的树状缓存来提高批量插入的速度,如INSERT ... SELECT,INSERT ... VALUES (...),(...), ...,对空表执行执行LOAD DATA INFILE。这个参数每个线程的树状缓存大小。将这个参数设为0会关闭这个参数。这个参数的默认值是8MB。


max_heap_table_size:这个参数设置用户创建的MEMORY表允许增长的最大容量,这个参数用来MEMORY表的MAX_ROWS值。设置这个参数对已有的MEMORY表没有影响,除非表重建或执行ALTER TABLE、TRUNCATE TABLE语句。

这个参数也和tmp_table_size参数一起来现在内部in-memory表的大小。如果内存表使用频繁,可以增大这个参数的值。

tmp_table_size:内部内存临时表的最大内存。这个参数不会应用到用户创建的MEMORY表。如果内存临时表的大小超过了这个参数的值,则MySQL会自动将超出的部分转化为磁盘上的临时表。在MySQL 5.7.5版本,internal_tmp_disk_storage_engine存储引擎将作为磁盘临时表的默认引擎。在MySQL 5.7.5之前的版本,会使用MyISAM存储引擎。如果有很多的GROUP BY查询且系统内存充裕,可以考虑增大这个参数。

innodb_buffer_pool_dump_at_shutdown:指定在MySQL服务关闭时,是否记录InnoDB缓存池中的缓存页,以缩短下次重启时的预热过程。通常和innodb_buffer_pool_load_at_startup参数搭配使用。innodb_buffer_pool_dump_pct参数定义了保留的最近使用缓存页的百分比。

innodb_buffer_pool_dump_now:立刻记录InnoDB缓冲池中的缓存页。通常和innodb_buffer_pool_load_now搭配使用。

innodb_buffer_pool_load_at_startup:指定MySQL服务在启动时,InnoDB缓冲池通过加载之前的缓存页数据来自动预热。通常和innodb_buffer_pool_dump_at_shutdown参数搭配使用。

innodb_buffer_pool_load_now:立刻通过加载数据页来预热InnoDB缓冲池,无需重启数据库服务。可以用来在性能测试时,将缓存改成到一个已知的状态;或在数据库运行报表查询或维护后,将数据库改成到一个正常的状态。


MyISAM参数

key_buffer_size:所有线程所共有的MyISAM表索引缓存,这块缓存被索引块使用。增大这个参数可以增加索引的读写性能,在主要使用MyISAM存储引擎的系统中,可设置这个参数为机器总内存的25%。如果将这个参数设置很大,比如设为机器总内存的50%以上,机器会开始page且变得异常缓慢。可以通过SHOW STATUS 语句查看 Key_read_requests,Key_reads,Key_write_requests, and Key_writes这些状态值。正常情况下Key_reads/Key_read_requests 比率应该小于0.01。数据库更新和删除操作频繁的时候,Key_writes/Key_write_requests 比率应该接近1。

key_cache_block_size:key缓存的块大小,默认值是1024字节。

myisam_sort_buffer_size:在REPAIR TABLE、CREATE INDEX 或 ALTER TABLE操作中,MyISAM索引排序使用的缓存大小。

myisam_max_sort_file_size:当重建MyISAM索引的时候,例如执行REPAIR TABLE、 ALTER TABLE、 或 LOAD DATA INFILE命令,MySQL允许使用的临时文件的最大容量。如果MyISAM索引文件超过了这个值且磁盘还有充裕的空间,增大这个参数有助于提高性能。

myisam_repair_threads:如果这个参数的值大于1,则MyISAM表在执行Repair操作的排序过程中,在创建索引的时候会启用并行,默认值为1。


InnoDB参数

innodb_buffer_pool_size:InnDB存储引擎缓存表和索引数据所使用的内存大小。默认值是128MB。在以InnDB存储引擎为主的系统中,可以将这个参数设为机器物理内存的80%。同时需要注意:

  • 设置较大物理内存时是否会引擎页的交换而导致性能下降;

  • InnoDB存储引擎会为缓存和控制表结构信息使用部分内存,因而实际花费的内存会比设置的值大于10%;

  • 这个参数设置的越大,初始化内存池的时间越长。在MySQL 5.7.5版本,可以以chunk为单位增加或减少内存池的大小。chunk的大小可以通过innodb_buffer_pool_chunk_size参数设定,默认值是128MB。内存池的大小可以等于或是innodb_buffer_pool_chunk_size * innodb_buffer_pool_instances的整数倍。


innodb_buffer_pool_instances:InnoDB缓存池被分成的区域数。对于1GB以上大的InnoDB缓存,将缓存分成多个部分可以提高MySQL服务的并发性,减少不同线程读缓存页的读写竞争。每个缓存池有它单独的空闲列表、刷新列表、LRU列表和其他连接到内存池的数据结构,它们被mutex锁保护。这个参数只有将innodb_buffer_pool_size参数设为1GB或以上时才生效。建议将每个分成的内存区域设为1GB大小。

innodb_max_dirty_pages_pct:当Innodb缓存池中脏页所占的百分比达到这个参数的值时,InnoDB会从缓存中向磁盘写入数据。默认值是75。


innodb_thread_concurrency:InnoDB存储引擎可以并发使用的最大线程数。当InnoDB使用的线程超过这参数的值时,后面的线程会进入等待状态,以先进先出的算法来处理。等待锁的线程不计入这个参数的值。这个参数的范围是0~1000。默认值是0。当这个参数为0时,代表InnoDB线程的并发数没有限制,这样会导致MySQL创建它所需要的尽可能多的线程。设置这个参数可以参考下面规则:

  • 如果用户线程的并发数小于64,可以将这个参数设为0;

  • 如果系统并发很严重,可以先将这个参数设为128,然后再逐渐将这个参数减小到96, 80, 64或其他数值,直到找到性能较好的一个数值。


innodb_flush_method:指定刷新数据到InnoDB数据文件和日志文件的方法,刷新方法会对I/O有影响。如果这个参数的值为空,在类Unix系统上,这个参数的默认值为fsync;在Windows系统上,这个参数的默认值为async_unbuffered。在类Unix系统上,这个参数可设置的值如下:

  • fsync:InnoDB使用fsync()系统函数来刷新数据和日志文件,fsync是默认参数。

  • O_DSYNC:InnoDB使用O_SYNC函数来打开和刷新日志文件,使用fsync()函数刷新数据文件

  • littlesync:这个选项用在内部性能的测试,目前MySQL尚不支持,使用这个参数又一定的风险

  • nosync:这个选项用在内部性能的测试,目前MySQL尚不支持,使用这个参数又一定的风险

  • O_DIRECT:InnoDB使用O_DIRECT(或者directio()在Solaris)函数打开数据文件,使用fsync()刷新数据文件和日志文件

  • O_DIRECT_NO_FSYNC:在刷新I/O时,InnoDB使用O_DIRECT方式。


在有RAID卡和写缓存的系统中,O_DIRECT有助于避免InnoDB缓存池和操作系统缓存之间的双重缓存。在InnoDB数据和日志文件放在SAN存储上面的系统,默认值或O_DSYNC方法会对以读为主的数据库起到加速作用。


innodb_data_home_dir:InnoDB系统表空间所使用的数据文件的物理路径,默认路径是MySQL数据文件路径。如果这个参数的值为空,可以在innodb_data_file_path参数里使用绝对路径

innodb_data_file_path:InnoDB数据文件的路径和大小。

innodb_file_per_table:当这个参数启用的时候,InnoDB会将新建表的数据和索引单独存放在.ibd格式的文件中,而不是存放在系统表空间中。当这张表被删除或TRUNCATE时,InnoDB表所占用的存储会被释放。这个设定会开启InnoDB的一些其他特性,比如表的压缩。当这个参数关闭的时候,InnoDB会将表和索引的数据存放到系统表空间的ibdata文件中,这会有一个问题,因为系统表空间不会缩小,这样设置会导致空间无法回放。

innodb_undo_directory:InnoDB undo日志所在表空间的物理路径。和innodb_undo_logs、innodb_undo_tablespaces参数配合,来设置undo日志的路径,默认路径是数据文件路径。

innodb_undo_logs:指定InnoDB使用的undo日志的个数。在MySQL 5.7.2版本,32个undo日志被临时表预留使用,并且这些日志存放在临时表表空间(ibtmp1)中。如果undo日志只存放在系统表空间中,想要额外分配供数据修改事务用的undo日志,innodb_undo_logs参数必须设置为32以上的整数。如果你配置了单独的undo表空间,要将innodb_undo_logs参数设为33以上来分配额外供数据修改事务使用的undo日志。每个undo日志最多可以支持1024个事务。如果这个参数没有设置,则它会设为默认值128。

innodb_undo_tablespaces:undo日志的表空间文件数量。默认,所有的undo日志都是系统表空间的一部分。因为在运行大的事务时,undo日志会增大,将undo日志设置在多个表空间中可以减少一个表空间的大小。undo表空间文件创建在innodb_undo_directory参数指定的路径下,以undoN格式命名,N是以0开头的一系列整数。undo表空间的默认大小为10M。需要在初始化InnoDB前设置innodb_undo_tablespaces这个参数。在MySQL 5.7.2版本,在128个undo日志中,有32个undo日志是为临时表所预留的,有95个undo日志供undo表空间使用。

innodb_log_files_in_group:InnoDB日志组包含的日志个数。InnoDB以循环的方式写入日志。这个参数的默认值和推荐值均是2。日志的路径由innodb_log_group_home_dir参数设定。

innodb_log_group_home_dir:InnoDB重做日志文件的物理路径,重做日志的数量由innodb_log_files_in_group参数指定。如果不指定任何InnoDB日志参数,MySQL默认会在MySQL数据文件路径下面创建两个名为ib_logfile0、ib_logfile1的两个重做日志文件,它们的大小由innodb_log_file_size参数设定。

innodb_log_file_size:日志组中每个日志文件的字节大小。所有日志文件的大小(innodb_log_file_size * innodb_log_files_in_group)不能超过512GB。

innodb_log_buffer_size:InnoDB写入磁盘日志文件所使用的缓存字节大小。如果innodb_page_size参数为32K,则默认值是8MB;如果innodb_page_size参数为64K,则默认值是16MB。如果日志的缓存设置较大,则MySQL在处理大事务时,在提交事务前无需向磁盘写入日志文件。建议设置此参数为4~8MB。

innodb_flush_log_at_trx_commit:当提交相关的I/O操作被批量重新排列时,这个参数控制提交操作的ACID一致性和高性能之间的平衡。可以改变这个参数的默认值来提升数据库的性能,但是在数据库宕机的时候会丢失少量的事务。这个参数的默认值为1,代表数据库遵照完整的ACID模型,每当事务提交时,InnoDB日志缓存中的内容均会被刷新到日志文件,并写入到磁盘。当这个参数为0时,InnDB日志缓存大概每秒刷新一次日志文件到磁盘。当事务提交时,日志缓存不会立刻写入日志文件,这样的机制不会100%保证每秒都向日志文件刷新日志,当mysqld进程宕掉的时候可能会丢失持续时间为1秒左右的事务数据。当这个参数为2时,当事务提交后,InnoDB日志缓存中的内容会写入到日志文件且日志文件,日志文件以大概每秒一次的频率刷新到磁盘。在MySQL 5.6.6版本,InnoDB日志刷新频率由innodb_flush_log_at_timeout参数决定。通常将个参数设为1。

innodb_flush_log_at_timeout:写入或刷新日志的时间间隔。这个参数是在MySQL 5.6.6版本引入的。在MySQL 5.6.6版本之前,刷新的频率是每秒刷新一次。innodb_flush_log_at_timeout参数的默认值也是1秒刷新一次。

innodb_lock_wait_timeout:InnDB事务等待行锁的时间长度。默认值是50秒。当一个事务锁定了一行,这时另外一个事务想访问并修改这一行,当等待时间达到innodb_lock_wait_timeout参数设置的值时,MySQL会报错"ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction",同时会回滚语句(不是回滚整个事务)。如果想回滚整个事务,需要使用--innodb_rollback_on_timeout参数启动MySQL。在高交互性的应用系统或OLTP系统上,可以减小这个参数来快速显示用户的反馈或把更新放入队列稍后处理。在数据仓库中,为了更好的处理运行时间长的操作,可以增大这个参数。这个参数只应用在InnoDB行锁上,这个参数对表级锁无效。这个参数不适用于死锁,因为发生死锁时,InnoDB会立刻检测到死锁并将发生死锁的一个事务回退。

innodb_fast_shutdown:InnoDB关库模式。如果这个参数为0,InnoDB会做一个缓慢关机,在关机前会做完整的刷新操作,这个级别的关库操作会持续数分钟,当缓存中的数据量很大时,甚至会持续几个小时;如果数据库要执行版本升级或降级,需要执行这个级别的关库操作,以保证所有的数据变更都写入到数据文件。如果这个参数的值是1(默认值),为了节省关库时间,InnoDB会跳过新操作,而是在下一次开机的时候通过crash recovery方式执行刷新操作。如果这个参数的值是2,InnoDB会刷新日志并以冷方式关库,就像MySQL宕机一样,没有提交的事务会丢失,在下一次开启数据库时,crash recovery所需要的时间更长;在紧急或排错情形下,需要立刻关闭数据库时,会使用这种方式停库。







About Me

.............................................................................................................................................

● 本文转载自MySQL官方文档:https://dev.mysql.com/doc/refman/5.6/en/server-system-variables.html

● 本文在itpub(http://blog.itpub.net/26736162/abstract/1/)、博客园(http://www.cnblogs.com/lhrbest)和个人微信公众号(xiaomaimiaolhr)上有同步更新

● 本文itpub地址:http://blog.itpub.net/26736162/abstract/1/

● 本文博客园地址:http://www.cnblogs.com/lhrbest

● 本文pdf版、个人简介及小麦苗云盘地址:http://blog.itpub.net/26736162/viewspace-1624453/

● 数据库笔试面试题库及解答:http://blog.itpub.net/26736162/viewspace-2134706/

● DBA宝典今日头条号地址:http://www.toutiao.com/c/user/6401772890/#mid=1564638659405826

.............................................................................................................................................

● QQ群:230161599     微信群:私聊

● 联系我请加QQ好友(646634621),注明添加缘由

● 于 2017-03-01 09:00 ~ 2017-03-31 22:00 在魔都完成

● 文章内容来源于小麦苗的学习笔记,部分整理自网络,若有侵权或不当之处还请谅解

● 版权所有,欢迎分享本文,转载请保留出处

.............................................................................................................................................

小麦苗的微店https://weidian.com/s/793741433?wfr=c&ifr=shopdetail

小麦苗出版的数据库类丛书http://blog.itpub.net/26736162/viewspace-2142121/

.............................................................................................................................................

使用微信客户端扫描下面的二维码来关注小麦苗的微信公众号(xiaomaimiaolhr)及QQ群(DBA宝典),学习最实用的数据库技术。

   小麦苗的微信公众号          小麦苗的QQ群             小麦苗的微店

.............................................................................................................................................


DBA笔试面试讲解
欢迎与我联系



请使用浏览器的分享功能分享到微信等