5章MySQL服务器管理

目录

5.1 MySQL服务器
5.1.1配置服务器
5.1.2服务器配置的默认值
5.1.3服务器选项,系统变量和状态变量的引用
5.1.4服务器系统变量引用
5.1.5服务器状态变量引用
5.1.6服务器的命令选项
5.1.7服务器系统变量
5.1.8使用系统变量
5.1.9服务器状态变量
5.1.10服务器SQL模式
5.1.11 IPv6支持
5.1.12 MySQL服务器的时区支持
5.1.13服务器端的帮助
5.1.14服务器响应信号
5.1.15服务器关机过程
5.2 MySQL数据目录
5.3 MySQL数据库系统
5.4 MySQL服务器的日志
5.4.1选择通用查询和慢查询日志输出目的地
5.4.2 the error log
5.4.3通用查询日志
5.4.4二进制日志
5.4.5慢查询日志
5.4.6 DDL日志
5.4.7服务器日志维护
5.5 MySQL服务器组件
5.5.1错误日志组件
5.6 MySQL服务器插件
5.6.1安装和卸载插件
5.6.2获取服务器插件信息
5.6.3 MySQL企业线程池
5.6.4的重写查询重写插件
5.6.5版本标记
5.7运行多个MySQL实例在一台机器上
5.7.1设置多个数据目录
5.7.2在Windows上运行多个MySQL实例
5.7.3运行在UNIX多个MySQL实例
5.7.4使用客户端程序在多服务器环境

MySQL服务器(mysqld)是主程序,做大部分的工作在一个MySQL的安装。本章提供的MySQL服务器的概述和涵盖一般服务器管理:

在行政主题的更多信息,参见:

5.1 MySQL服务器

mysqld是MySQL服务器。下面讨论这些MySQL服务器的配置问题:

  • 启动选项,服务器支持。你可以在命令行中指定这些选项,通过配置文件,或。

  • 服务器系统变量。这些变量反映的启动选项的当前状态和价值观,其中一些可以在服务器运行的是修改。

  • 服务器状态变量。这些变量包含有关运行计数器统计。

  • 如何设置服务器的SQL模式。这个设置修改SQL的语法和语义的某些方面,例如与其他数据库系统代码的兼容性,或控制误差为特殊情况的处理。

  • 配置和使用IPv6支持。

  • 配置和使用的时区支持。

  • 服务器端的服务能力

  • 服务器停机过程。有性能和可靠性的考虑,这取决于表的类型(事务性或非事务性)以及是否使用复制。

上市的MySQL服务器变量和选项已被添加或删除,使用MySQL 8,看5节,“服务器状态变量和选项,使用MySQL 5.0或删除”

笔记

不是所有的存储引擎的所有MySQL服务器的二进制文件和配置支持。如何确定哪些存储引擎你的MySQL服务器的安装支架,看第13.7.6.16,“显示引擎语法”

5.1.1配置服务器

MySQL服务器,mysqld,有许多命令和系统变量可以设置在启动配置操作。确定服务器所使用的命令和系统变量的值,执行此命令:

shell> mysqld --verbose --help

该命令产生一个列表中的所有mysqld选择和配置系统变量。它的输出包含默认选项和变量值和看起来像这样:

abort-slave-event-count           0
allow-suspicious-udfs             FALSE
archive                           ON
auto-increment-increment          1
auto-increment-offset             1
autocommit                        TRUE
automatic-sp-privileges           TRUE
avoid-temporal-upgrade            FALSE
back-log                          80
basedir                           /home/jon/bin/mysql-8.0/
...
tmpdir                            /tmp
transaction-alloc-block-size      8192
transaction-isolation             REPEATABLE-READ
transaction-prealloc-size         4096
transaction-read-only             FALSE
transaction-write-set-extraction  OFF
updatable-views-with-limit        YES
validate-user-plugins             TRUE
verbose                           TRUE
wait-timeout                      28800

看到使用的服务器运行当前系统变量的值,连接到它,并执行这个语句:

mysql> SHOW VARIABLES;

看到一些统计和状态运行的服务指标,执行该语句:

mysql> SHOW STATUS;

系统变量和状态信息,也可使用mysqladmin命令:

shell> mysqladmin variables
shell> mysqladmin extended-status

一个完整的描述所有的命令选项,系统变量和状态变量,看到这些部分:

更详细的监控信息可以从绩效模式;看第25章,MySQL性能模式

如果你在命令行中指定的选项mysqld_ mysqld safe,它仍然有效,只对服务器的调用。每次服务器运行使用选项,把它放在一个选项文件。看到第4.2.6、“使用选项文件”

5.1.2服务器配置的默认值

MySQL服务器有许多操作参数,您可以更改在服务器启动命令行选项或配置文件(选择文件)。也可以在运行时改变许多参数。在参数设置在启动或运行时总的说明,见第5.1.6、“服务器选项”,和第5.1.7,服务器“系统变量”

在Windows中,MySQL的安装程序与用户交互并创建一个文件名为my.ini在底座的安装目录作为默认选项文件。

笔记

在Windows中,该.iniCNF选择文件扩展名可能不显示。

在安装完成后,您可以编辑默认的选项文件随时修改服务器所使用的参数。例如,使用一个参数,是评价与文件设置#开头的一行字符,删除#如果必要,修改参数值。禁用设置,添加一个#以开头的行或删除它

对于非Windows平台,没有默认选项文件是服务器安装或初始化过程中创建的数据目录。通过以下指令创建选项文件第4.2.6、“使用选项文件”。没有一个选项文件,服务器就开始它的默认设置,看第5.1.2,“服务器配置默认值”如何检查这些设置

关于选择文件格式和语法的更多信息,参见第4.2.6、“使用选项文件”

5.1.3服务器选项,系统变量和状态变量的引用

下表列出所有的命令行选项,系统变量和状态变量的适用范围内mysqld

表中列出的命令行选项(命令行),选择有效的配置文件(选择文件),服务器系统变量(系统变量),变量和状态(状态变量)在一个统一的清单,通知每个选项/变量是有效的。如果一个服务器选项设置在命令行或在一个选项文件不同于相应服务器的系统的名称,变量名是立即注意到相应的选项。为系统的状态变量,该变量的范围是(Var Scope)作为全球会议,或两者。请参阅设置和使用的选项和变量对应的部分细节。在适当的情况下,直接链接到该项目的进一步的信息可。

表5.1命令行选项,系统变量,并statusvariable总结

姓名命令行选项文件系统无功状态变量变量范围动态
终止奴隶事件计数
aborted_clients全球
aborted_connects全球
ACL _隐藏_ _ count items全球
activate_all_roles_on_login全球
允许可疑的UDF
ANSI
审计
audit_log_buffer_size全球
审计全球
审计范围全球
audit_log_current_session
audit_log_current_size全球
_加密_日志审计全球
audit_log_event_max_drop_size全球
审计_ _事件日志全球
audit_log_events_filtered全球
audit_log_events_lost全球
audit_log_events_written全球
audit_log_exclude_accounts全球
audit_log_file全球
audit_log_filter_id
audit_log_flush全球
audit_log_format全球
audit_log_include_accounts全球
audit_log_policy全球
audit_log_read_buffer_size变化变化
一次审计全球
audit_log_statement_policy全球
audit_log_strategy全球
audit_log_total_size全球
audit_log_write_waits全球
_ SASL认证LDAP auth方法_ _ _ _名称全球
_ _ SASL认证LDAP库_ _ _绑定DN全球
_ _ SASL认证LDAP绑定根_ _ _ DN全球
_ _ SASL认证LDAP绑定根_ _ _ PWD全球
_ _ SASL认证LDAP路径_ _ CA全球
LDAP SASL authentication _ _ _集团_ _属性搜索全球
authentication_ldap_sasl_group_search_filter全球
authentication_ldap_sasl_init_pool_size全球
_ _ SASL认证LDAP _ _日志状态全球
LDAP认证_ _ SASL _最大池大小_ _全球
认证全球
SASL认证_ LDAP服务器端口_ _ _全球
认证全球
认证全球
事实上的认证全球
【中文解释】真实性全球
事实上的认证全球
简单的_ LDAP认证_ _绑定_根_ PWD全球
【中文解释】真实性全球
LDAP认证_ _简单_集团_ _属性搜索全球
authentication_ldap_simple_group_search_filter全球
authentication_ldap_simple_init_pool_size全球
authentication_ldap_simple_log_status全球
LDAP认证_ _简单_最大池大小_ _全球
【中文解释】:认证全球
LDAP服务器认证_ _简单_ _港全球
_ _简单_ TLS的LDAP认证全球
【中文解释】:真实性全球
authentication_windows_log_level
使用Windows认证_ _ _委托_ name
_ _自生成证书全球
【解释】:自我维持
auto_increment_offset
自动提交
自动_ SP _特权全球
avoid_temporal_upgrade全球
back_log全球
basedir全球
大塔
变量_大桌子
绑定地址全球
变量bind_address全球
使用磁盘缓存binlog _ _ _全球
Binlog Caphe Control I size全球
binlog_cache_use全球
binlog -校验
Binlogónón Checksum全球
binlog_direct_non_transactional_updates
你binlog分贝
binlog_error_action全球
binlog_expire_logs_seconds全球
binlog格式
变量binlog_format
binlog_group_commit_sync_delay全球
binlog_group_commit_sync_no_delay_count全球
binlog_gtid_simple_recovery全球
binlog-ignore-db
binlog_max_flush_queue_time全球
binlog_order_commits全球
binlog行事件的最大尺寸
binlog_row_image
binlog _ _元数据。全球
binlog_row_value_options
binlog行查询日志事件
变量binlog_rows_query_log_events
binlog_rows_query_log_events
Binlogósónónón stmtónónónónónónón disk form全球
Binlogón stmtónónónónón?size全球
binlog_stmt_cache_use全球
binlog_transaction_dependency_history_size全球
binlog_transaction_dependency_tracking全球
阻尼模式
bulk_insert_buffer_size
bytes_received
bytes_sent
caching_sha2_password_auto_generate_rsa_keys全球
caching_sha2_password_private_key_path全球
caching_sha2_password_public_key_path全球
caching_sha2_password_rsa_public_key全球
character_set_client
字符集的客户端的握手
character_set_connection
character_set_database(注1)
字符集的文件系统
变量character_set_filesystem
character_set_results
服务器的默认字符集
变量character_set_server
character_set_system全球
Character-Sets - dir全球
变量_ _字符集.全球
check_proxy_users全球
改变根目录
粘贴连接
collation _数据库(注1)
collation server
变量_整理服务器
COM _ _行政命令
com_alter_db
com_alter_event
com_alter_function
com_alter_procedure
com_alter_resource_group全球
com_alter_server
com_alter_table
【中文名称】
com_alter_user
com_alter_user_default_role全球
com_analyze
COM _ assign _ keycache _ to
com_begin
com_binlog
com_call_procedure
com_change_db
com_change_master
com_change_repl_filter
com_check
com_checksum
com_commit
com_create_db
com_create_event
com_create_function
com_create_index
com_create_procedure
com_create_resource_group全球
com_create_role全球
com_create_server
com_create_table
com_create_trigger
com_create_udf
com_create_user
com_create_view
代购价格
com_delete
com_delete_multi
com_do
com_drop_db
com_drop_event
com_drop_function
com_drop_index
com_drop_procedure
com_drop_resource_group全球
com_drop_role全球
com_drop_server
com_drop_table
com_drop_trigger
com_drop_user
com_drop_view
有空的_ _查询
com_execute_sql
COM _ _其他解释
com_flush
com_get_diagnostics
com_grant
格兰特格兰特全球
集团公司全球
COM _集团_复制_停止全球
com_ha_close
com_ha_open
com_ha_read
com_help
com_insert
com_insert_select
安装的设备全球
com_install_plugin
com_kill
com_load
com_lock_tables
com_optimize
com_preload_keys
com_prepare_sql
com_purge
com_purge_before_date
com_release_savepoint
com_rename_table
com_rename_user
com_repair
com_replace
com_replace_select
com_reset
com_resignal
com_revoke
com_revoke_all
com_revoke_roles全球
com_rollback
com_rollback_to_savepoint
com_savepoint
com_select
com_set_option
com_set_resource_group全球
com_set_role全球
com_show_authors
com_show_binlog_events
com_show_binlogs
com_show_charsets
展览会
演示文件夹
com_show_create_db
com_show_create_event
com_show_create_func
最重要的是
com_show_create_table
com_show_create_trigger
com_show_create_user
com_show_databases
com_show_engine_logs
com_show_engine_mutex
com_show_engine_status
与_ _显示错误
com_show_events
com_show_fields
com_show_function_code
com_show_function_status
_ _资助与表演
com_show_keys
com_show_master_status
com_show_ndb_status
com_show_new_master
com_show_open_tables
com_show_plugins
COM _节目_ privileges
com_show_procedure_code
com_show_procedure_status
com_show_processlist
com_show_profile
com_show_profiles
com_show_relaylog_events
com_show_slave_hosts
com_show_slave_status
com_show_slave_status_nonblocking
com_show_status
com_show_storage_engines
com_show_table_status
com_show_tables
com_show_triggers
com_show_variables
com_show_warnings
与_关机
信号信号
com_slave_start
com_slave_stop
com_stmt_close
com_stmt_execute
com_stmt_fetch
为准备_ _ COM
com_stmt_reprepare
com_stmt_reset
com_stmt_send_long_data
COM _ truncate
不安装的设备全球
com_uninstall_plugin
com_unlock_tables
com_update
com_update_multi
com_xa_commit
com_xa_end
第二阶段
com_xa_recover
com_xa_rollback
com_xa_start
完成_类型
压缩会话
concurrent_insert全球
connect_timeout全球
connection_control_delay_generated全球
connection_control_failed_connections_threshold全球
连接控制全球
连接_控制_分钟_连接_延迟全球
connection_errors_accept全球
connection_errors_internal全球
连接_ _最大_登录错误全球
connection_errors_peer_address全球
connection_errors_select全球
connection_errors_tcpwrap全球
联系全球
控制台
核心文件
core_file全球
created_tmp_disk_tables
created_tmp_files全球
created_tmp_tables
最新的
daemon_memcached_enable_binlog全球
daemon_memcached_engine_lib_name全球
daemon_memcached_engine_lib_path全球
daemon_memcached_option全球
daemon_memcached_r_batch_size全球
daemon_memcached_w_batch_size全球
守护进程
datadir全球
date_format全球
_ datetime格式全球
调试
debug_sync会话
调试同步超时
default_authentication_plugin全球
【中文解释】:偏差分粘法
default_password_lifetime全球
默认存储引擎
变量default_storage_engine
默认时区
default_tmp_storage_engine
default_week_format
默认的额外文件
缺省文件
默认组后缀
重点写延迟全球
变量delay_key_write全球
delayed_errors全球
delayed_insert_limit全球
delayed_insert_threads全球
delayed_insert_timeout全球
delayed_queue_size全球
delayed_writes全球
DES的密钥文件
disabled_storage_engines全球
disconnect_on_expired_password全球
断开从事件计数
div _精密_增量
dragnet.log_error_filter_rules全球
天罗地网。现状全球
早期的插件加载
启用命名管道
变量named_pipe
【中文解释】:【中文解释】
gtid符驻扎全球
_驻扎gtid _一致性全球
eq_range_index_dive_limit
错误的会话
事件调度全球
变量_调度事件全球
执行gtids压缩期
变量executed_gtids_compression_period
executed_gtids_compression_period全球
退出信息
expire_logs_days全球
explicit_defaults_for_timestamp
外锁
变量skip_external_locking
external_user会话
联邦
firewall_access_denied全球
_ granted _接入防火墙全球
firewall_cached_entries全球
脸红全球
流体的控制全球
_ flush时全球
foreign_key_checks
_ FT _布尔语法全球
英国《金融时报》成为最大_ _ _透镜全球
英国《金融时报》_ min _是_透镜全球
英国《金融时报》_查询_ _极限扩张全球
ft_stopword_file全球
GDB
一般的日志全球
变量一般_日志全球
一般_ _日志文件全球
集团_ concat _最大_ Len
group_replication_allow_local_disjoint_gtids_join全球
群组全球
集团_ _自动复制_增量_增量全球
group_replication_bootstrap_group全球
集团_复制_ _ _通信调试选项全球
集团公司全球
集团_复制_ _压缩阈值全球
集团_复制_ enforce _更新_到处_检查全球
集团公司全球
group_replication_flow_control_applier_threshold全球
group_replication_flow_control_certifier_threshold全球
集团_复制_流_控制_保持_刺穿全球
集团公司全球
变量集团_复制_流_控制_分钟_配额全球
集团_复制_流_控制_ member _配额_刺穿全球
集团_复制_流_控制_分钟_配额全球
集团公司全球
集团的重复复制全球
集团的复制品全球
集团的复制品全球
小组全球
集团全球
集团_复制_集团_种子全球
group_replication_gtid_assignment_block_size全球
group_replication_ip_whitelist全球
group_replication_local_address全球
group_replication_member_weight全球
集团_复制_民意调查_自旋_圈全球
group_replication_primary_member全球
重新复制全球
group_replication_recovery_get_public_key全球
group_replication_recovery_public_key_path全球
group_replication_recovery_reconnect_interval全球
集团_复制_恢复_ _重试计数全球
重新复制全球
group_replication_recovery_ssl_capath全球
group_replication_recovery_ssl_cert全球
重新复制全球
重新复制全球
group_replication_recovery_ssl_crlpath全球
group_replication_recovery_ssl_key全球
group_replication_recovery_ssl_verify_server_cert全球
group_replication_recovery_use_ssl全球
集团公司全球
集团的复制品全球
集团_复制_ _我们_开机启动全球
集团全球
group_replication_unreachable_majority_timeout全球
gtid _ executed变化
gtid执行压缩期
变量gtid _压缩_ _执行周期
gtid _压缩_ _执行周期全球
gtid模式全球
变量gtid _模式全球
gtid _模式全球
gtid _下会话
gtid _国有
gtid _ purged全球
handler_commit
handler_delete
handler_external_lock
handler_mrr_init
handler_prepare
handler_read_first
handler_read_key
handler_read_last
handler_read_next
处理_读_沪指
handler_read_rnd
handler_read_rnd_next
handler_rollback
handler_savepoint
handler_savepoint_rollback
handler_update
handler_write
有_ compress全球
有_ crypt全球
have_dynamic_loading全球
有_几何全球
have_openssl全球
有_剖面全球
有一个站台全球
have_rtree_keys全球
有_ SSL全球
have_statement_timeout全球
have_symlink全球
帮助
histogram_generation_max_mem_size
host_cache_size全球
主机名全球
身份会话
忽略内置InnoDB全球
变量ignore_builtin_innodb全球
信息_ _ stats _发行模式
init_connect全球
初始化文件全球
变量init_file全球
init_slave全球
初始化
初始化不安全
InnoDB
innodb_adaptive_flushing全球
innodb_adaptive_flushing_lwm全球
innodb_adaptive_hash_index全球
innodb_adaptive_hash_index_parts全球
innodb_adaptive_max_sleep_delay全球
innodb_api_bk_commit_interval全球
innodb_api_disable_rowlock全球
innodb_api_enable_binlog全球
innodb_api_enable_mdl全球
innodb_api_trx_level全球
innodb_autoextend_increment全球
innodb_autoinc_lock_mode全球
innodb_available_undo_logs全球
innodb_background_drop_list_empty全球
_ _ InnoDB缓冲池_ _字节数据全球
innodb_buffer_pool_bytes_dirty全球
innodb_buffer_pool_chunk_size全球
innodb_buffer_pool_debug全球
innodb_buffer_pool_dump_at_shutdown全球
innodb_buffer_pool_dump_now全球
innodb_buffer_pool_dump_pct全球
innodb_buffer_pool_dump_status全球
innodb_buffer_pool_filename全球
innodb_buffer_pool_instances全球
innodb_buffer_pool_load_abort全球
innodb_buffer_pool_load_at_startup全球
innodb_buffer_pool_load_now全球
innodb_buffer_pool_load_status全球
innodb_buffer_pool_pages_data全球
innodb_buffer_pool_pages_dirty全球
innodb_buffer_pool_pages_flushed全球
innodb_buffer_pool_pages_free全球
innodb_buffer_pool_pages_latched全球
innodb_buffer_pool_pages_misc全球
innodb_buffer_pool_pages_total全球
innodb_buffer_pool_read_ahead全球
innodb_buffer_pool_read_ahead_evicted全球
innodb_buffer_pool_read_ahead_rnd全球
innodb_buffer_pool_read_requests全球
innodb_buffer_pool_reads全球
innodb_buffer_pool_resize_status全球
innodb_buffer_pool_size全球
innodb_buffer_pool_wait_free全球
innodb_buffer_pool_write_requests全球
innodb_change_buffer_max_size全球
innodb_change_buffering全球
innodb_change_buffering_debug全球
InnoDB _检查站_ disabled全球
_ InnoDB _ checksum algorithm全球
innodb_cmp_per_index_enabled全球
innodb_commit_concurrency全球
压缩_ InnoDB _调试全球
innodb_compression_failure_threshold_pct全球
被压缩的压缩水平全球
_ InnoDB _压垫_ PCT _马克斯全球
innodb_concurrency_tickets全球
innodb_data_file_path全球
innodb_data_fsyncs全球
InnoDB数据_ _ _家目录全球
innodb_data_pending_fsyncs全球
innodb_data_pending_reads全球
innodb_data_pending_writes全球
_ _ InnoDB数据读全球
innodb_data_reads全球
innodb_data_writes全球
innodb_data_written全球
innodb_dblwr_pages_written全球
innodb_dblwr_writes全球
innodb_ddl_log_crash_reset_debug全球
InnoDB _探明_死锁全球
innodb_dedicated_server全球
innodb_default_row_format全球
innodb_directories全球
InnoDB _ disable _ sort _ _缓存文件全球
innodb_doublewrite全球
innodb_fast_shutdown全球
让_ InnoDB _费尔_ _调试_脏页全球
innodb_file_per_table全球
innodb_fill_factor全球
innodb_flush_log_at_timeout全球
innodb_flush_log_at_trx_commit全球
innodb_flush_method全球
innodb_flush_neighbors全球
InnoDB _冲_ sync全球
innodb_flushing_avg_loops全球
innodb_force_load_corrupted全球
innodb_force_recovery全球
innodb_ft_aux_table全球
innodb_ft_cache_size全球
innodb_ft_enable_diag_print全球
innodb_ft_enable_stopword全球
innodb_ft_max_token_size全球
【中文解释】:东京、东京、东京、东京全球
innodb_ft_num_word_optimize全球
innodb_ft_result_cache_limit全球
innodb_ft_server_stopword_table全球
innodb_ft_sort_pll_degree全球
innodb_ft_total_cache_size全球
innodb_ft_user_stopword_table
innodb_have_atomic_builtins全球
innodb_io_capacity全球
innodb_io_capacity_max全球
innodb_limit_optimistic_insert_debug全球
innodb_lock_wait_timeout
innodb_log_buffer_size全球变化
_ _ InnoDB日志校验全球
_ _ pages _ InnoDB日志压缩全球
innodb_log_file_size全球
innodb_log_files_in_group全球
_ _ InnoDB日志组_家_目录全球
_ InnoDB日志_自旋_ CPU _ ABS _ LWM全球
_ InnoDB日志_自旋_ CPU _ PCT _ HWM全球
innodb_log_wait_for_flush_spin_hwm全球
innodb_log_waits全球
innodb_log_write_ahead_size全球
innodb_log_write_requests全球
innodb_log_writes全球
innodb_lru_scan_depth全球
最大_ InnoDB _肮脏的_ pages _ CTP全球
最大_ InnoDB _肮脏的_ pages _ PCT _ LWM全球
_ InnoDB _最大电磁_滞后全球
innodb_max_purge_lag_delay全球
innodb_max_undo_log_size全球
innodb_merge_threshold_set_all_debug全球
innodb_monitor_disable全球
innodb_monitor_enable全球
innodb_monitor_reset全球
innodb_monitor_reset_all全球
innodb_num_open_files全球
innodb_numa_interleave全球
innodb_old_blocks_pct全球
innodb_old_blocks_time全球
innodb_online_alter_log_max_size全球
innodb_open_files全球
innodb_optimize_fulltext_only全球
innodb_os_log_fsyncs全球
innodb_os_log_pending_fsyncs全球
innodb_os_log_pending_writes全球
innodb_os_log_written全球
innodb_page_cleaners全球
innodb_page_size全球
innodb_page_size全球
innodb_pages_created全球
innodb_pages_read全球
innodb_pages_written全球
innodb_print_all_deadlocks全球
_打印DDL _ _ InnoDB日志全球
innodb_purge_batch_size全球
innodb_purge_rseg_truncate_frequency全球
innodb_purge_threads全球
innodb_random_read_ahead全球
innodb_read_ahead_threshold全球
innodb_read_io_threads全球
innodb_read_only全球
innodb_redo_log_encrypt全球
无误的复制品全球
_ _ innodb在线_超时回滚全球
innodb_rollback_segments全球
innodb_row_lock_current_waits全球
innodb_row_lock_time全球
innodb_row_lock_time_avg全球
innodb_row_lock_time_max全球
innodb_row_lock_waits全球
innodb_rows_deleted全球
innodb_rows_inserted全球
innodb_rows_read全球
innodb_rows_updated全球
innodb_saved_page_number_debug全球
innodb_scan_directories全球
innodb_sort_buffer_size全球
innodb_spin_wait_delay全球
innodb_stats_auto_recalc全球
innodb_stats_include_delete_marked全球
innodb_stats_method全球
_ _ innodb在线_元数据属性全球
_ _ InnoDB数据持久性全球
_ InnoDB数据_坚持_ _ pages样品全球
innodb_stats_transient_sample_pages全球
InnoDB状态文件
innodb_status_output全球
innodb_status_output_locks全球
innodb_strict_mode
innodb_sync_array_size全球
_ InnoDB _同步调试全球
_自旋_ InnoDB _同步环全球
innodb_table_locks
日期时间_ InnoDB _ _ _文件路径全球
(Innodb)全球
innodb_thread_concurrency全球
innodb_thread_sleep_delay全球
_ tmpdir InnoDB
innodb_truncated_status_writes全球
innodb_trx_purge_view_update_only_debug全球
innodb_trx_rseg_n_slots_debug全球
innodb_undo_directory全球
innodb_undo_log_encrypt全球
innodb_undo_log_truncate全球
innodb_undo_logs全球
innodb_undo_tablespaces全球变化
innodb_use_native_aio全球
InnoDB _ version全球
innodb_write_io_threads全球
insert_id会话
安装
安装手册
interactive_timeout
internal_tmp_disk_storage_engine全球
internal_tmp_mem_storage_engine
join_buffer_size
keep_files_on_create
key_blocks_not_flushed全球
key_blocks_unused全球
key_blocks_used全球
key_buffer_size全球
key_cache_age_threshold全球
key_cache_block_size全球
密钥藏身处全球
key_read_requests全球
key_reads全球
key_write_requests全球
key_writes全球
keyring_aws_cmk_id全球
keyring_aws_conf_file全球
keyring_aws_data_file全球
keyring_aws_region全球
keyring_encrypted_file_data全球
keyring_encrypted_file_password全球
keyring_file_data全球
钥匙圈迁移的目的地
钥匙圈迁移主机
迁移密码钥匙
钥匙圈迁移端口
钥匙圈移动插座
钥匙圈迁移源
钥匙圈迁移用户
keyring _美国OKV _ _ conf目录全球
keyring_operations全球
语言全球
large_files_support全球
large_page_size全球
大页全球
变量large_pages全球
last_insert_id会话
最后_查询_成本会话
最后一次会话
LC消息
变量信息
LC消息目录全球
变量的信息全球
lc_time_names
许可证全球
local_infile全球
本地服务
lock_wait_timeout
locked_connects全球
_锁在_记忆全球
日志本全球
log_bin全球
本:_ _日志全球
日志本指数
本_日志_指数全球
日志本信托功能的创造者全球
变量log_bin_trust_function_creators全球
log-bin-use-v1-row-events全球
变量我_使用日志_ _ V1 _行_事件全球
我_使用日志_ _ V1 _行_事件全球
log_builtin_as_identified_by_password全球
错误全球
变量的错误全球
log_error_filter_rules全球
log_error_services全球
删除,删除全球
log_error_verbosity全球
日志的
日志输出全球
变量log_output全球
不使用索引的查询日志全球
变量log_queries_not_using_indexes全球
日志原
短格式的日志
从更新日志全球
变量log_slave_updates全球
log_slave_updates全球
日志_慢_行政_ statements全球
log_slow_slave_statements全球
log_statements_unsafe_for_binlog全球
_ syslog日志全球
log_syslog_facility全球
log_syslog_include_pid全球
_ syslog日志_时间全球
TC的日志
日志TC尺寸
log_throttle_queries_not_using_indexes全球
log_timestamps全球
警告日志全球
变量_警告日志全球
long_query_time
低优先级更新
变量low_priority_updates
lower_case_file_system全球
lower_case_table_names全球
mandatory_roles全球
掌握信息文件
掌握信息库
变量_ _硕士信息库
_ _硕士信息库全球
掌握重试次数
掌握验证校验和
变量master_verify_checksum
master_verify_checksum全球
max_allowed_packet
_ binlog最大缓存大小_ _全球
最大binlog转储事件
马克斯·马克斯全球
_ binlog最大缓存大小为_ _ _全球
最大的错误_ _ Connect全球
最大_登录全球
max_delayed_threads
max_digest_length全球
最大的错误
_ _最大执行时间
max_execution_time_exceeded
max_execution_time_set
max_execution_time_set_failed
max_heap_table_size
max_insert_delayed_threads
马克思
max_length_for_sort_data
_ _最大点在_几何
最大计数为_ _ prepared _全球
max_relay_log_size全球
max_seeks_for_key
max_sort_length
最大值
最大_ _ TMP表
最大_ used _登录全球
最大的应用程序全球
最大值的用户
max_write_lock_count全球
mecab_charset全球
mecab _ _ RC文件全球
memlock
变量_锁在_记忆
metadata_locks_cache_size全球
metadata_locks_hash_instances全球
最小检测限行
多_把_计数
MyISAM块大小
Myisam ' s data on poter of the size全球
myisam_max_sort_file_size全球
MyISAM _ mmap _ size全球
Myisam-Recvery-Options
变量近义词
近义词全球
myisam_repair_threads
myisam_sort_buffer_size
_ _ MyISAM数据方法
_使用MyISAM _ mmap全球
mysql_firewall_mode全球
mysql_firewall_trace全球
mysql_native_password_proxy_users全球
mysqlx全球
mysqlx _ _中止客户端全球
mysqlx_address全球
mysqlx绑定地址全球
mysqlx_bind_address全球
mysqlx_bytes_received
mysqlx_bytes_sent
mysqlx连接超时全球
联接电话号码全球
联接电话
联接误差
联结全球
mysqlx_connections_closed全球
联结全球
mysqlx_crud_create_view
mysqlx_crud_delete
mysqlx_crud_drop_view
mysqlx _ crud _ find
mysqlx_crud_insert
mysqlx_crud_modify_view
mysqlx_crud_update
独特的ID文件mysqlx _ _ _ _字头全球
mysqlx_errors_sent
mysqlx_errors_unknown_message_type
mysqlx_expect_close
mysqlx_expect_open
mysqlx空闲线程超时全球
mysqlx_idle_worker_thread_timeout全球
mysqlx _ init _误差
mysqlx交互超时全球
mysqlx_interactive_timeout全球
mysqlx max可包全球
mysqlx _ _ _最大允许分组全球
最大连接全球
mysqlx _最大_登录全球
mysqlx最小工作线程全球
mysqlx_min_worker_threads全球
mysqlx_notice_other_sent
mysqlx_notice_warning_sent
mysqlx_port全球
mysqlx端口全球
mysqlx_port全球
mysqlx端口打开超时全球
mysqlx_port_open_timeout全球
mysqlx读取超时会话
mysqlx_read_timeout会话
mysqlx_rows_sent
会话全球
被接受的全球
mysqlx_sessions_closed全球
mysqlx_sessions_fatal_error全球
mysqlx_sessions_killed全球
mysqlx _会议_拒绝全球
mysqlx _插座全球
mysqlx插座全球
mysqlx _插座全球
mysqlx_ssl_accept_renegotiates全球
mysqlx_ssl_accepts全球
mysqlx_ssl_active
mysqlx SSL CA全球
mysqlx SSL capath全球
mysqlx SSL证书全球
mysqlx _ SSL _密码
mysqlx - SSL密码
mysqlx_ssl_cipher_list
mysqlx SSL证书全球
mysqlx SSL crlpath全球
mysqlx_ssl_ctx_verify_depth
mysqlx_ssl_ctx_verify_mode
mysqlx_ssl_finished_accepts全球
mysqlx SSL密钥全球
mysqlx_ssl_server_not_after全球
mysqlx_ssl_server_not_before全球
mysqlx_ssl_verify_depth全球
mysqlx_ssl_verify_mode全球
mysqlx _ _ SSL版本
我是一个有创意的人
mysqlx _ stmt _创建_ _指标集合
mysqlx_stmt_disable_notices
mysqlx_stmt_drop_collection
我的意思是,这是一个好的。
mysqlx_stmt_enable_notices
mysqlx_stmt_ensure_collection
mysqlx_stmt_execute_mysqlx
mysqlx_stmt_execute_sql
mysqlx_stmt_execute_xplugin
请_ mysqlx _杀死_客户端
mysqlx _ stmt _ _客户端列表
mysqlx_stmt_list_notices
mysqlx_stmt_list_objects
mysqlx _ stmt _平
mysqlx等待超时会话
mysqlx_wait_timeout会话
mysqlx_worker_threads全球
mysqlx_worker_threads_active全球
mysqlx写超时会话
mysqlx_write_timeout会话
named_pipe全球
ndb_api_bytes_received_count全球
ndb_api_bytes_received_count_session会话
ndb_api_bytes_received_count_slave全球
我的意思是,我的意思是。全球
NDB(NDB)全球
(NDB)全球
_ NDB的API _事件计数数据_ _ _喷油器全球
_ NDB _事件API _非数据_ count _注入器全球
这是一个很好的选择全球
NBD _ API _ PK _ OP _计数_会议会话
ndb_api_pk_op_count_slave全球
_ NDB _ API pruned _扫描_ count全球
_ NDB _ API pruned _扫描_ _ session count会话
我的意思是,我的意思是,我的意思是,我的意思是…全球
这是一个很好的选择全球
NBD _ API _读_行_计数_会议会话
_ NDB _ API _批奴隶_ _扫描计数全球
NBD _ API _ _ _计数表扫描全球
这是一个很好的工作会话
ndb_api_trans_abort_count全球
ndb_api_trans_abort_count_session会话
ndb_api_trans_abort_count_slave全球
这是一个很好的选择全球
ndb_api_trans_close_count_session会话
ndb_api_trans_close_count_slave全球
ndb_api_trans_commit_count全球
ndb_api_trans_commit_count_session会话
ndb_api_trans_commit_count_slave全球
ndb_api_trans_local_read_row_count_slave全球
ndb_api_trans_start_count全球
ndb_api_trans_start_count_session会话
ndb_api_trans_start_count_slave全球
NBD _ API _英国_ OP _计数全球
ndb_api_uk_op_count_slave全球
我的意思是,我的意思是,我的意思是。全球
_ NDB等完整的API _ _ exec _ _ _ session count会话
_ _ EXEC API _ NDB等_完成_奴隶_计数全球
_ _元NDB _ API等_ request _ count全球
_ _元NDB _ API等_ request _ _ session count会话
_ NDB _ API等_ _计数。全球
ndb_api_wait_nanos_count_session会话
(NDB)全球
_ NDB _ API等_ _扫描结果_ count全球
_ NDB _ API等_ _扫描结果_ _ session count会话
ndb_api_wait_scan_result_count_slave全球
NDB批量大小全球
NDB BLOB批量写字节
NDB集群连接池全球
NDB集群连接池的nodeIds全球
_ NDB集群的节点ID _ _
从NDB _ _ _主机配置
NBD _ _ from _端口配置
这是一个有争议的问题全球
冲突中的冲突全球
NBD _冲突_ FN _老全球
这是一个有争议的问题,这是一个问题。全球
对冲突的解决办法全球
NDB connectstring
NDB延迟约束
变量ndb_deferred_constraints
ndb_deferred_constraints
NDB分布全球
变量ndb_distribution全球
ndb_distribution全球
ndb_eventbuffer_free_percent全球
_ eventbuffer _最大_ NDB分配全球
NDB _部队_ send
ndb_index_stat_enable
NBD _ _ _选项统计指标
ndb_join_pushdown
最后_ NDB _ _服务器提交_时代全球
最后_ NDB _承诺_时代_ session会话
NDB日志应用现状全球
变量ndb_log_apply_status全球
ndb_log_apply_status全球
_日志NDB _ binlog _指数全球
NDB日志空时代全球
NDB空更新日志全球
NDB日志事务ID全球
变量ndb_log_transaction_id全球
ndb_log_updated_only全球
ndb mgmd主机
ndb_number_of_data_nodes全球
ndb_optimization_delay全球
ndb_optimized_node_selection全球
ndb_pushed_queries_defined全球
ndb_pushed_queries_executed全球
ndb_recv_thread_activation_threshold
ndb_recv_thread_cpu_mask全球
ndb_report_thresh_binlog_epoch_slip全球
ndb_report_thresh_binlog_mem_usage全球
NBD _扫描_计数全球
ndb_show_foreign_key_mock_tables全球
_ NDB的斯拉夫_最大_ replicated _时代全球
ndb_table_no_logging会话
导航电子地图transid MySQL连接
ndb_use_transactions
_版本.全球
NBD _ _版本字符串全球
NDB等设置全球
ndbinfo _数据库全球
ndbinfo_max_rows
ndbinfo_show_hidden
ndbinfo _版本全球
net_buffer_length
net_read_timeout
net_retry_count
net_write_timeout
_型_令牌尺寸全球
没有DD升级
没有默认值
在监视器
not_flushed_delayed_rows全球
offline_mode全球
旧版全球
旧表
变量old_alter_table
old_passwords
老用户限制
ongoing_anonymous_gtid_violating_transaction_count全球
ongoing_anonymous_transaction_count全球
ongoing_automatic_gtid_violating_transaction_count全球
open_files全球
打开文件的限制全球
变量open_files_limit全球
open_streams全球
open_table_definitions全球
open_tables
opened_files全球
opened_table_definitions
_打开表
optimizer_prune_level
optimizer_search_depth
optimizer_switch
optimizer_trace
optimizer_trace_features
optimizer_trace_limit
optimizer_trace_max_mem_size
optimizer_trace_offset
original_commit_timestamp会话
parser_max_mem_size
password_history全球
password_require_current全球
_间隔_重用密码全球
performance_schema全球
performance_schema_accounts_lost全球
performance_schema_accounts_size全球
performance_schema_cond_classes_lost全球
performance_schema_cond_instances_lost全球
性能模式消费者活动阶段电流
性能模式消费者活动阶段的历史
性能模式消费者活动阶段历史悠久
性能模式消费事件的陈述当前
性能模式消费事件的陈述历史
性能模式消费事件的陈述历史悠久
性能模式消费者活动的交易流
性能模式消费者活动的交易历史
性能模式消费者活动的交易历史悠久
性能模式消费者活动等电流
性能模式消费者等历史事件
性能模式消费者事件等历史悠久
性能模式消费全球仪器仪表
性能模式消费报表摘要
消费者线程仪器性能模式
performance_schema_digest_lost全球
performance_schema_digests_size全球
performance_schema_error_size全球
performance_schema_events_stages_history_long_size全球
performance_schema_events_stages_history_size全球
performance_schema_events_statements_history_long_size全球
performance_schema_events_statements_history_size全球
performance_schema_events_transactions_history_long_size全球
performance_schema_events_transactions_history_size全球
performance_schema_events_waits_history_long_size全球
performance_schema_events_waits_history_size全球
performance_schema_file_classes_lost全球
performance_schema_file_handles_lost全球
performance_schema_file_instances_lost全球
performance_schema_hosts_lost全球
performance_schema_hosts_size全球
performance_schema_index_stat_lost全球
仪器性能模式
performance_schema_locker_lost全球
performance_schema_max_cond_classes全球
性能_模式_最大_条件_实例全球
performance_schema_max_digest_length全球
performance_schema_max_digest_sample_age全球
performance_schema_max_file_classes全球
performance_schema_max_file_handles全球
性能测试方法最大值全球
性能测试方法最大值全球
performance_schema_max_memory_classes全球
performance_schema_max_metadata_locks全球
performance_schema_max_mutex_classes全球
performance_schema_max_mutex_instances全球
performance_schema_max_prepared_statements_instances全球
performance_schema_max_program_instances全球
performance_schema_max_rwlock_classes全球
performance_schema_max_rwlock_instances全球
performance_schema_max_socket_classes全球
performance_schema_max_socket_instances全球
performance_schema_max_sql_text_length全球
performance_schema_max_stage_classes全球
performance_schema_max_statement_classes全球
performance_schema_max_statement_stack全球
performance_schema_max_table_handles全球
performance_schema_max_table_instances全球
performance_schema_max_table_lock_stat全球
performance_schema_max_thread_classes全球
performance_schema_max_thread_instances全球
performance_schema_memory_classes_lost全球
performance_schema_metadata_lock_lost全球
performance_schema_mutex_classes_lost全球
performance_schema_mutex_instances_lost全球
performance_schema_nested_statement_lost全球
performance_schema_prepared_statements_lost全球
performance_schema_program_lost全球
performance_schema_rwlock_classes_lost全球
performance_schema_rwlock_instances_lost全球
performance_schema_session_connect_attrs_longest_seen全球
性能全球
_性能会话连接模式_ _ _ attrs _大小全球
performance_schema_setup_actors_size全球
performance_schema_setup_objects_size全球
performance_schema_socket_classes_lost全球
performance_schema_socket_instances_lost全球
performance_schema_stage_classes_lost全球
performance_schema_statement_classes_lost全球
performance_schema_table_handles_lost全球
performance_schema_table_instances_lost全球
performance_schema_table_lock_stat_lost全球
performance_schema_thread_classes_lost全球
performance_schema_thread_instances_lost全球
performance_schema_users_lost全球
performance_schema_users_size全球
persisted_globals_load全球
PID文件全球
变量pid_file全球
插件
_插件目录全球
插件加载
插件加载
港口全球
口岸开放时间
preload_buffer_size
_ _ prepared语句。全球
打印默认值
分析
profiling_history_size
protocol_version全球
proxy_user会话
pseudo_slave_mode会话
pseudo_thread_id会话
qcache_free_blocks全球
qcache_free_memory全球
qcache _安打全球
插入件全球
qcache _ lowmem _李子果酱全球
qcache_not_cached全球
qcache _查询_ in _隐藏全球
全速前进全球
查询
在您的网站上
查询缓存_ _极限全球
站点藏身之处全球
查询_ _缓存大小全球
站点隐藏类型
_ _ wlock _ invalidate查询缓存
准备好的
问题
rand_seed1会话
rand_seed2会话
把_分配_ _块大小
range_optimizer_max_mem_size
应用程序
read_buffer_size
read_only全球
read_rnd_buffer_size
regexp_stack_limit全球
_ regexp _时间限制全球
中继日志全球
变量relay_log全球
relay_log_basename全球
中继日志索引全球
变量relay_log_index全球
relay_log_index全球
中继日志文件
变量relay_log_info_file
relay_log_info_file全球
中继日志信息库
变量relay_log_info_repository
relay_log_info_repository全球
relay_log_purge全球
中继日志恢复
变量relay_log_recovery
relay_log_recovery全球
relay_log_space_limit全球
去除
做数据库复制
复制表
复制的DB -先生
复制忽略表
重写数据库复制
复制相同的服务器ID
复制野生做表
复制野生忽略表
报告主持人全球
变量report_host全球
报告的密码全球
变量report_password全球
报告港口全球
变量report_port全球
报告使用者全球
变量report_user全球
require_secure_transport全球
resultset_metadata会话
rewriter_enabled全球
rewriter_number_loaded_rules全球
rewriter_number_reloads全球
rewriter_number_rewritten_queries全球
rewriter_reload_error全球
rewriter_verbose全球
rpl_read_size全球
rpl _种子_ sync _ _ clients硕士全球
rpl_semi_sync_master_enabled全球
rpl_semi_sync_master_net_avg_wait_time全球
rpl_semi_sync_master_net_wait_time全球
rpl_semi_sync_master_net_waits全球
_ _ RPL在半同步_主_ _时报全球
rpl_semi_sync_master_no_tx全球
rpl_semi_sync_master_status全球
rpl_semi_sync_master_timefunc_failures全球
半同步_ RPL _ _主_超时全球
rpl_semi_sync_master_trace_level全球
rpl_semi_sync_master_tx_avg_wait_time全球
rpl_semi_sync_master_tx_wait_time全球
rpl_semi_sync_master_tx_waits全球
rpl_semi_sync_master_wait_for_slave_count全球
rpl_semi_sync_master_wait_no_slave全球
rpl_semi_sync_master_wait_point全球
rpl_semi_sync_master_wait_pos_backtraverse全球
rpl_semi_sync_master_wait_sessions全球
rpl_semi_sync_master_yes_tx全球
rpl_semi_sync_slave_enabled全球
rpl_semi_sync_slave_status全球
rpl_semi_sync_slave_trace_level全球
奴隶站_ RPL _ _超时全球
_ _ RSA公共密钥全球
安全的用户创建
_ _缓存架构定义全球
第二_发动机_执行_计数
安全认证全球
变量安全_ auth全球
安全的私人文件全球
变量secure_file_priv全球
select_full_join
select_full_range_join
select_range
select_range_check
select_scan
服务器ID全球
变量server_id全球
server_uuid全球
_ _ gtids会话跟踪
session_track_schema
session_track_state_change
session_track_system_variables
sha256_password_auto_generate_rsa_keys全球
sha256_password_private_key_path全球
sha256_password_proxy_users全球
sha256_password_public_key_path全球
shared_memory全球
shared_memory_base_name全球
show_compatibility_56全球
show_create_table_verbosity
show_old_temporals
从认证信息显示
simplified_binlog_gtid_recovery全球
跳过的字符集,客户端的握手
跳过并行插入
变量concurrent_insert
跳过事件调度器
skip_external_locking全球
跳过授权表
跳过主机缓存
跳过名字解析全球
变量skip_name_resolve全球
跳过ndbcluster
跳过网络全球
变量skip_networking全球
跳过新
跳过显示数据库全球
变量skip_show_database全球
跳过奴隶开始
跳过SSL
跳过堆栈跟踪
slave_allow_batching全球
从检查组
变量slave_checkpoint_group
slave_checkpoint_group全球
从检查点的周期
变量slave_checkpoint_period
slave_checkpoint_period全球
slave_compressed_protocol全球
slave_exec_mode全球
slave_heartbeat_period全球
slave_last_heartbeat全球
从载荷tmpdir全球
变量slave_load_tmpdir全球
从max allowed packet
变量slave_max_allowed_packet
slave_max_allowed_packet全球
从网络超时全球
变量slave_net_timeout全球
slave_open_temp_tables全球
从并联型
变量slave_parallel_type
slave_parallel_type全球
从并行的工人
变量slave_parallel_workers
slave_parallel_workers全球
从待就业规模最大
变量slave_pending_jobs_size_max
slave_pending_jobs_size_max全球
slave_preserve_commit_order全球
slave_received_heartbeats全球
slave_retried_transactions全球
slave_rows_last_search_algorithm_used全球
从行搜索算法
变量slave_rows_search_algorithms
slave_rows_search_algorithms全球
slave_running全球
跳过错误/从…全球
变量奴隶_跳过_错误全球
从SQL验证校验和
slave_sql_verify_checksum全球
slave_transaction_retries全球
斯拉夫语全球
slow_launch_threads
_ _慢启动时间全球
slow_queries
慢查询日志全球
变量_ _慢查询日志全球
慢_查询日志文件_ _全球
慢启动超时
插座全球
sort_buffer_size
sort_merge_passes
sort_range
sort_rows
sort_scan
零星的binlog转储失败
SQL是_ _ _汽车零
sql_big_selects
sql_buffer_result
sql_log_bin会话
sql_log_off
SQL模式
变量sql_mode
sql_notes
sql_quote_show_create
_ primary key _ SQL _ require
sql_safe_updates
sql_select_limit
sql_slave_skip_counter全球
SQL - Warning
SSL
ssl_accept_renegotiates全球
_接受SSL全球
SSL作为全球
变量SSL作为_全球
ssl_callback_cache_hits全球
SSL capath全球
变量ssl_capath全球
SSL证书全球
变量_ SSL证书全球
SSL _密码
SSL密码全球
变量SSL _密码全球
SSL _密码_列表
ssl_client_connects全球
ssl_connect_renegotiates全球
SSL证书全球
变量ssl_crl全球
crlpath SSL全球
变量ssl_crlpath全球
ssl_ctx_verify_depth全球
ssl_ctx_verify_mode全球
SSL _违约_暂停。
ssl_finished_accepts全球
ssl_finished_connects全球
SSL _ _ FIPS模式全球
SSL密钥全球
变量_ SSL密钥全球
ssl_server_not_after
ssl_server_not_before
SSL会话缓存_ _ _打全球
第二届会议全球
【中文解释】:会话全球
ssl_session_cache_overflows全球
SSL会话缓存大小_ _ _全球
第二届会议全球
第二届会议
所用的全球
ssl_verify_depth
ssl_verify_mode
_ SSL版本
独立
stored_program_cache全球
程序存储_ _ _缓存定义全球
超级大页
super_read_only全球
符号链接
sync_binlog全球
_信息同步_硕士全球
sync_relay_log全球
sync_relay_log_info全球
现在的日期
syseventlog.facility全球
syseventlog.include_pid全球
syseventlog.tag全球
system_time_zone全球
全球
table_locks_immediate全球
table_locks_waited全球
table_open_cache全球
table_open_cache_hits
桌上全球
table_open_cache_misses
table_open_cache_overflows
电子表格全球
TC启发式恢复
tc_log_max_pages_used全球
tc_log_page_size全球
tc_log_page_waits全球
临时库
temptable_max_ram全球
thread_cache_size全球
thread_handling全球
thread_pool_algorithm全球
thread_pool_high_priority_connection
thread_pool_max_unused_threads全球
thread_pool_prio_kickup_timer
thread_pool_size全球
thread_pool_stall_limit全球
thread_stack全球
threads_cached全球
threads_connected全球
threads_created全球
threads_running全球
time_format全球
time_zone
时间戳会话
_ TLS版本全球
tmp_table_size
TMPDIR全球
交易
_ batching _允许交易会话
事务隔离
变量transaction_isolation
交易日志
只读事务
变量transaction_read_only
transaction_write_set_extraction
德克萨斯州_隔离
tx_read_only
unique_checks
updatable_views_with_limit
正常运行时间全球
时间_ _冲洗_地位。全球
use_secondary_engine会话
用户
密码验证
有效的程序全球
有效的程序全球
有效的程序,复活节全球
验证密码字典文件_ _ _ _ _计数。全球
validate_password_length全球
有效的密码全球
有效的程序全球
validate_password_policy全球
有效的程序复活节特别程序全球
验证_ password.check _ _ user name全球
鉴定程序全球
验证的程序复活节全球
验证文件_ password.dictionary _ _ _计数。全球
validate_password.length全球
validate _ password.mixed _框_计数全球
【中文解释】:验证局全球
validate_password.policy全球
有效的程序复活节特别程序全球
有效的全球
冗长的
版本全球
怎样的版本全球
最新版本全球
最新版本全球
_ _ zlib编译版本全球
version_tokens_session
version_tokens_session_number
wait_timeout
报警电话计数会话
windowing_use_high_precision

笔记

1.。这个选项是动态的,但只有服务器应该设置信息。你不应该设置这个变量的手动。

5.1.4服务器系统变量引用

下表列出所有的系统变量适用于mysqld

表中列出的命令行选项(命令行),选择有效的配置文件(选择文件),服务器系统变量(系统变量),变量和状态(状态变量)在一个统一的清单,通知每个选项/变量是有效的。如果一个服务器选项设置在命令行或在一个选项文件不同于相应服务器的系统的名称,变量名是立即注意到相应的选项。变量的范围是(Var Scope)作为全球会议,或两者。请参阅设置和使用的选项和变量对应的部分细节。在适当的情况下,直接链接到该项目的进一步的信息可。

表5.2总结了系统变量

姓名命令行选项文件系统无功变量范围动态
activate_all_roles_on_login全球
audit_log_buffer_size全球
审计全球
审计范围全球
audit_log_current_session
_加密_日志审计全球
audit_log_exclude_accounts全球
audit_log_file全球
audit_log_filter_id
audit_log_flush全球
audit_log_format全球
audit_log_include_accounts全球
audit_log_policy全球
audit_log_read_buffer_size变化变化
一次审计全球
audit_log_statement_policy全球
audit_log_strategy全球
_ SASL认证LDAP auth方法_ _ _ _名称全球
_ _ SASL认证LDAP库_ _ _绑定DN全球
_ _ SASL认证LDAP绑定根_ _ _ DN全球
_ _ SASL认证LDAP绑定根_ _ _ PWD全球
_ _ SASL认证LDAP路径_ _ CA全球
LDAP SASL authentication _ _ _集团_ _属性搜索全球
authentication_ldap_sasl_group_search_filter全球
authentication_ldap_sasl_init_pool_size全球
_ _ SASL认证LDAP _ _日志状态全球
LDAP认证_ _ SASL _最大池大小_ _全球
认证全球
SASL认证_ LDAP服务器端口_ _ _全球
认证全球
认证全球
事实上的认证全球
【中文解释】真实性全球
事实上的认证全球
简单的_ LDAP认证_ _绑定_根_ PWD全球
【中文解释】真实性全球
LDAP认证_ _简单_集团_ _属性搜索全球
authentication_ldap_simple_group_search_filter全球
authentication_ldap_simple_init_pool_size全球
authentication_ldap_simple_log_status全球
LDAP认证_ _简单_最大池大小_ _全球
【中文解释】:认证全球
LDAP服务器认证_ _简单_ _港全球
_ _简单_ TLS的LDAP认证全球
【中文解释】:真实性全球
_ _自生成证书全球
【解释】:自我维持
auto_increment_offset
自动提交
自动_ SP _特权全球
avoid_temporal_upgrade全球
back_log全球
basedir全球
大塔
变量_大桌子
绑定地址
变量bind_address全球
Binlog Caphe Control I size全球
Binlogónón Checksum全球
binlog_direct_non_transactional_updates
binlog_error_action全球
binlog_expire_logs_seconds全球
binlog格式
变量binlog_format
binlog_group_commit_sync_delay全球
binlog_group_commit_sync_no_delay_count全球
binlog_gtid_simple_recovery全球
binlog_max_flush_queue_time全球
binlog_order_commits全球
binlog_row_image
binlog _ _元数据。全球
binlog_row_value_options
binlog_rows_query_log_events
Binlogón stmtónónónónón?size全球
binlog_transaction_dependency_history_size全球
binlog_transaction_dependency_tracking全球
阻尼模式
bulk_insert_buffer_size
caching_sha2_password_auto_generate_rsa_keys全球
caching_sha2_password_private_key_path全球
caching_sha2_password_public_key_path全球
character_set_client
character_set_connection
character_set_database(注1)
字符集的文件系统
变量character_set_filesystem
character_set_results
服务器的默认字符集
变量character_set_server
character_set_system全球
Character-Sets - dir
变量_ _字符集.全球
check_proxy_users全球
粘贴连接
collation _数据库(注1)
collation server
变量_整理服务器
完成_类型
concurrent_insert全球
connect_timeout全球
connection_control_failed_connections_threshold全球
连接控制全球
连接_控制_分钟_连接_延迟全球
core_file全球
最新的
daemon_memcached_enable_binlog全球
daemon_memcached_engine_lib_name全球
daemon_memcached_engine_lib_path全球
daemon_memcached_option全球
daemon_memcached_r_batch_size全球
daemon_memcached_w_batch_size全球
datadir全球
date_format全球
_ datetime格式全球
调试
debug_sync会话
default_authentication_plugin全球
【中文解释】:偏差分粘法
default_password_lifetime全球
默认存储引擎
变量default_storage_engine
default_tmp_storage_engine
default_week_format
重点写延迟
变量delay_key_write全球
delayed_insert_limit全球
delayed_insert_timeout全球
delayed_queue_size全球
disabled_storage_engines全球
disconnect_on_expired_password全球
div _精密_增量
dragnet.log_error_filter_rules全球
【中文解释】:【中文解释】
gtid符驻扎全球
_驻扎gtid _一致性全球
eq_range_index_dive_limit
错误的会话
事件调度
变量_调度事件全球
executed_gtids_compression_period全球
expire_logs_days全球
explicit_defaults_for_timestamp
external_user会话
脸红全球
_ flush时全球
foreign_key_checks
_ FT _布尔语法全球
英国《金融时报》成为最大_ _ _透镜全球
英国《金融时报》_ min _是_透镜全球
英国《金融时报》_查询_ _极限扩张全球
ft_stopword_file全球
一般的日志
变量一般_日志全球
一般_ _日志文件全球
集团_ concat _最大_ Len
group_replication_allow_local_disjoint_gtids_join全球
群组全球
集团_ _自动复制_增量_增量全球
group_replication_bootstrap_group全球
集团_复制_ _ _通信调试选项全球
集团公司全球
集团_复制_ _压缩阈值全球
集团_复制_ enforce _更新_到处_检查全球
集团公司全球
group_replication_flow_control_applier_threshold全球
group_replication_flow_control_certifier_threshold全球
集团_复制_流_控制_保持_刺穿全球
集团公司
变量集团_复制_流_控制_分钟_配额全球
集团_复制_流_控制_ member _配额_刺穿全球
集团_复制_流_控制_分钟_配额全球
集团公司全球
集团的重复复制全球
集团的复制品全球
集团的复制品全球
小组全球
集团全球
集团_复制_集团_种子全球
group_replication_gtid_assignment_block_size全球
group_replication_ip_whitelist全球
group_replication_local_address全球
group_replication_member_weight全球
集团_复制_民意调查_自旋_圈全球
重新复制全球
group_replication_recovery_get_public_key全球
group_replication_recovery_public_key_path全球
group_replication_recovery_reconnect_interval全球
集团_复制_恢复_ _重试计数全球
重新复制全球
group_replication_recovery_ssl_capath全球
group_replication_recovery_ssl_cert全球
重新复制全球
重新复制全球
group_replication_recovery_ssl_crlpath全球
group_replication_recovery_ssl_key全球
group_replication_recovery_ssl_verify_server_cert全球
group_replication_recovery_use_ssl全球
集团公司全球
集团的复制品全球
集团_复制_ _我们_开机启动全球
集团全球
group_replication_unreachable_majority_timeout全球
gtid _ executed变化
gtid _压缩_ _执行周期全球
gtid模式
变量gtid _模式全球
gtid _模式全球
gtid _下会话
gtid _国有
gtid _ purged全球
有_ compress全球
有_ crypt全球
have_dynamic_loading全球
有_几何全球
have_openssl全球
有_剖面全球
有一个站台全球
have_rtree_keys全球
有_ SSL全球
have_statement_timeout全球
have_symlink全球
histogram_generation_max_mem_size
host_cache_size全球
主机名全球
身份会话
忽略内置InnoDB
变量ignore_builtin_innodb全球
信息_ _ stats _发行模式
init_connect全球
初始化文件
变量init_file全球
init_slave全球
innodb_adaptive_flushing全球
innodb_adaptive_flushing_lwm全球
innodb_adaptive_hash_index全球
innodb_adaptive_hash_index_parts全球
innodb_adaptive_max_sleep_delay全球
innodb_api_bk_commit_interval全球
innodb_api_disable_rowlock全球
innodb_api_enable_binlog全球
innodb_api_enable_mdl全球
innodb_api_trx_level全球
innodb_autoextend_increment全球
innodb_autoinc_lock_mode全球
innodb_background_drop_list_empty全球
innodb_buffer_pool_chunk_size全球
innodb_buffer_pool_debug全球
innodb_buffer_pool_dump_at_shutdown全球
innodb_buffer_pool_dump_now全球
innodb_buffer_pool_dump_pct全球
innodb_buffer_pool_filename全球
innodb_buffer_pool_instances全球
innodb_buffer_pool_load_abort全球
innodb_buffer_pool_load_at_startup全球
innodb_buffer_pool_load_now全球
innodb_buffer_pool_size全球
innodb_change_buffer_max_size全球
innodb_change_buffering全球
innodb_change_buffering_debug全球
InnoDB _检查站_ disabled全球
_ InnoDB _ checksum algorithm全球
innodb_cmp_per_index_enabled全球
innodb_commit_concurrency全球
压缩_ InnoDB _调试全球
innodb_compression_failure_threshold_pct全球
被压缩的压缩水平全球
_ InnoDB _压垫_ PCT _马克斯全球
innodb_concurrency_tickets全球
innodb_data_file_path全球
InnoDB数据_ _ _家目录全球
innodb_ddl_log_crash_reset_debug全球
InnoDB _探明_死锁全球
innodb_dedicated_server全球
innodb_default_row_format全球
innodb_directories全球
InnoDB _ disable _ sort _ _缓存文件全球
innodb_doublewrite全球
innodb_fast_shutdown全球
让_ InnoDB _费尔_ _调试_脏页全球
innodb_file_per_table全球
innodb_fill_factor全球
innodb_flush_log_at_timeout全球
innodb_flush_log_at_trx_commit全球
innodb_flush_method全球
innodb_flush_neighbors全球
InnoDB _冲_ sync全球
innodb_flushing_avg_loops全球
innodb_force_load_corrupted全球
innodb_force_recovery全球
innodb_ft_aux_table全球
innodb_ft_cache_size全球
innodb_ft_enable_diag_print全球
innodb_ft_enable_stopword全球
innodb_ft_max_token_size全球
【中文解释】:东京、东京、东京、东京全球
innodb_ft_num_word_optimize全球
innodb_ft_result_cache_limit全球
innodb_ft_server_stopword_table全球
innodb_ft_sort_pll_degree全球
innodb_ft_total_cache_size全球
innodb_ft_user_stopword_table
innodb_io_capacity全球
innodb_io_capacity_max全球
innodb_limit_optimistic_insert_debug全球
innodb_lock_wait_timeout
innodb_log_buffer_size全球变化
_ _ InnoDB日志校验全球
_ _ pages _ InnoDB日志压缩全球
innodb_log_file_size全球
innodb_log_files_in_group全球
_ _ InnoDB日志组_家_目录全球
_ InnoDB日志_自旋_ CPU _ ABS _ LWM全球
_ InnoDB日志_自旋_ CPU _ PCT _ HWM全球
innodb_log_wait_for_flush_spin_hwm全球
innodb_log_write_ahead_size全球
innodb_lru_scan_depth全球
最大_ InnoDB _肮脏的_ pages _ CTP全球
最大_ InnoDB _肮脏的_ pages _ PCT _ LWM全球
_ InnoDB _最大电磁_滞后全球
innodb_max_purge_lag_delay全球
innodb_max_undo_log_size全球
innodb_merge_threshold_set_all_debug全球
innodb_monitor_disable全球
innodb_monitor_enable全球
innodb_monitor_reset全球
innodb_monitor_reset_all全球
innodb_numa_interleave全球
innodb_old_blocks_pct全球
innodb_old_blocks_time全球
innodb_online_alter_log_max_size全球
innodb_open_files全球
innodb_optimize_fulltext_only全球
innodb_page_cleaners全球
innodb_page_size全球
innodb_print_all_deadlocks全球
_打印DDL _ _ InnoDB日志全球
innodb_purge_batch_size全球
innodb_purge_rseg_truncate_frequency全球
innodb_purge_threads全球
innodb_random_read_ahead全球
innodb_read_ahead_threshold全球
innodb_read_io_threads全球
innodb_read_only全球
innodb_redo_log_encrypt全球
无误的复制品全球
_ _ innodb在线_超时回滚全球
innodb_rollback_segments全球
innodb_saved_page_number_debug全球
innodb_scan_directories全球
innodb_sort_buffer_size全球
innodb_spin_wait_delay全球
innodb_stats_auto_recalc全球
innodb_stats_include_delete_marked全球
innodb_stats_method全球
_ _ innodb在线_元数据属性全球
_ _ InnoDB数据持久性全球
_ InnoDB数据_坚持_ _ pages样品全球
innodb_stats_transient_sample_pages全球
innodb_status_output全球
innodb_status_output_locks全球
innodb_strict_mode
innodb_sync_array_size全球
_ InnoDB _同步调试全球
_自旋_ InnoDB _同步环全球
innodb_table_locks
日期时间_ InnoDB _ _ _文件路径全球
(Innodb)全球
innodb_thread_concurrency全球
innodb_thread_sleep_delay全球
_ tmpdir InnoDB
innodb_trx_purge_view_update_only_debug全球
innodb_trx_rseg_n_slots_debug全球
innodb_undo_directory全球
innodb_undo_log_encrypt全球
innodb_undo_log_truncate全球
innodb_undo_logs全球
innodb_undo_tablespaces全球变化
innodb_use_native_aio全球
InnoDB _ version全球
innodb_write_io_threads全球
insert_id会话
interactive_timeout
internal_tmp_disk_storage_engine全球
internal_tmp_mem_storage_engine
join_buffer_size
keep_files_on_create
key_buffer_size全球
key_cache_age_threshold全球
key_cache_block_size全球
密钥藏身处全球
keyring_aws_cmk_id全球
keyring_aws_conf_file全球
keyring_aws_data_file全球
keyring_aws_region全球
keyring_encrypted_file_data全球
keyring_encrypted_file_password全球
keyring_file_data全球
keyring _美国OKV _ _ conf目录全球
keyring_operations全球
语言全球
large_files_support全球
large_page_size全球
大页
变量large_pages全球
last_insert_id会话
LC消息
变量信息
LC消息目录
变量的信息全球
lc_time_names
许可证全球
local_infile全球
lock_wait_timeout
_锁在_记忆全球
日志本全球
log_bin全球
本:_ _日志全球
本_日志_指数全球
日志本信托功能的创造者
变量log_bin_trust_function_creators全球
log-bin-use-v1-row-events
变量我_使用日志_ _ V1 _行_事件全球
我_使用日志_ _ V1 _行_事件全球
log_builtin_as_identified_by_password全球
错误
变量的错误全球
log_error_filter_rules全球
log_error_services全球
删除,删除全球
log_error_verbosity全球
日志输出
变量log_output全球
不使用索引的查询日志
变量log_queries_not_using_indexes全球
从更新日志
变量log_slave_updates全球
log_slave_updates全球
日志_慢_行政_ statements全球
log_slow_slave_statements全球
log_statements_unsafe_for_binlog全球
_ syslog日志全球
log_syslog_facility全球
log_syslog_include_pid全球
_ syslog日志_时间全球
log_throttle_queries_not_using_indexes全球
log_timestamps全球
警告日志
变量_警告日志全球
long_query_time
低优先级更新
变量low_priority_updates
lower_case_file_system全球
lower_case_table_names全球
mandatory_roles全球
_ _硕士信息库全球
master_verify_checksum全球
max_allowed_packet
_ binlog最大缓存大小_ _全球
马克斯·马克斯全球
_ binlog最大缓存大小为_ _ _全球
最大的错误_ _ Connect全球
最大_登录全球
max_delayed_threads
max_digest_length全球
最大的错误
_ _最大执行时间
max_heap_table_size
max_insert_delayed_threads
马克思
max_length_for_sort_data
_ _最大点在_几何
最大计数为_ _ prepared _全球
max_relay_log_size全球
max_seeks_for_key
max_sort_length
最大值
最大_ _ TMP表
最大值的用户
max_write_lock_count全球
mecab _ _ RC文件全球
metadata_locks_cache_size全球
metadata_locks_hash_instances全球
最小检测限行
多_把_计数
Myisam ' s data on poter of the size全球
myisam_max_sort_file_size全球
MyISAM _ mmap _ size全球
近义词全球
myisam_repair_threads
myisam_sort_buffer_size
_ _ MyISAM数据方法
_使用MyISAM _ mmap全球
mysql_firewall_mode全球
mysql_firewall_trace全球
mysql_native_password_proxy_users全球
mysqlx全球
mysqlx绑定地址全球
mysqlx_bind_address全球
mysqlx连接超时全球
联接电话号码全球
独特的ID文件mysqlx _ _ _ _字头全球
mysqlx空闲线程超时全球
mysqlx_idle_worker_thread_timeout全球
mysqlx交互超时全球
mysqlx_interactive_timeout全球
mysqlx max可包全球
mysqlx _ _ _最大允许分组全球
最大连接全球
mysqlx _最大_登录全球
mysqlx最小工作线程全球
mysqlx_min_worker_threads全球
mysqlx端口全球
mysqlx_port全球
mysqlx端口打开超时全球
mysqlx_port_open_timeout全球
mysqlx读取超时会话
mysqlx_read_timeout会话
mysqlx插座全球
mysqlx _插座全球
mysqlx SSL CA全球
mysqlx SSL capath全球
mysqlx SSL证书全球
mysqlx SSL证书全球
mysqlx SSL crlpath全球
mysqlx SSL密钥全球
mysqlx等待超时会话
mysqlx_wait_timeout会话
mysqlx写超时会话
mysqlx_write_timeout会话
named_pipe全球
NDB批量大小全球
NDB BLOB批量写字节
NDB集群连接池全球
NDB集群连接池的nodeIds全球
NDB延迟约束
变量ndb_deferred_constraints
ndb_deferred_constraints
NDB分布
变量ndb_distribution全球
ndb_distribution全球
ndb_eventbuffer_free_percent全球
_ eventbuffer _最大_ NDB分配全球
NDB _部队_ send
ndb_index_stat_enable
NBD _ _ _选项统计指标
ndb_join_pushdown
NDB日志应用现状
变量ndb_log_apply_status全球
ndb_log_apply_status全球
_日志NDB _ binlog _指数全球
NDB日志空时代全球
NDB空更新日志全球
NDB日志事务ID
变量ndb_log_transaction_id全球
ndb_log_updated_only全球
ndb_optimization_delay全球
ndb_optimized_node_selection全球
ndb_recv_thread_cpu_mask全球
ndb_report_thresh_binlog_epoch_slip全球
ndb_report_thresh_binlog_mem_usage全球
ndb_show_foreign_key_mock_tables全球
_ NDB的斯拉夫_最大_ replicated _时代全球
ndb_table_no_logging会话
ndb_use_transactions
_版本.全球
NBD _ _版本字符串全球
NDB等设置全球
ndbinfo _数据库全球
ndbinfo_max_rows
ndbinfo_show_hidden
ndbinfo _版本全球
net_buffer_length
net_read_timeout
net_retry_count
net_write_timeout
_型_令牌尺寸全球
offline_mode全球
旧版全球
旧表
变量old_alter_table
old_passwords
打开文件的限制
变量open_files_limit全球
optimizer_prune_level
optimizer_search_depth
optimizer_switch
optimizer_trace
optimizer_trace_features
optimizer_trace_limit
optimizer_trace_max_mem_size
optimizer_trace_offset
parser_max_mem_size
password_history全球
password_require_current全球
_间隔_重用密码全球
performance_schema全球
performance_schema_accounts_size全球
performance_schema_digests_size全球
performance_schema_error_size全球
performance_schema_events_stages_history_long_size全球
performance_schema_events_stages_history_size全球
performance_schema_events_statements_history_long_size全球
performance_schema_events_statements_history_size全球
performance_schema_events_transactions_history_long_size全球
performance_schema_events_transactions_history_size全球
performance_schema_events_waits_history_long_size全球
performance_schema_events_waits_history_size全球
performance_schema_hosts_size全球
performance_schema_max_cond_classes全球
性能_模式_最大_条件_实例全球
performance_schema_max_digest_length全球
performance_schema_max_digest_sample_age全球
performance_schema_max_file_classes全球
performance_schema_max_file_handles全球
性能测试方法最大值全球
性能测试方法最大值全球
performance_schema_max_memory_classes全球
performance_schema_max_metadata_locks全球
performance_schema_max_mutex_classes全球
performance_schema_max_mutex_instances全球
performance_schema_max_prepared_statements_instances全球
performance_schema_max_program_instances全球
performance_schema_max_rwlock_classes全球
performance_schema_max_rwlock_instances全球
performance_schema_max_socket_classes全球
performance_schema_max_socket_instances全球
performance_schema_max_sql_text_length全球
performance_schema_max_stage_classes全球
performance_schema_max_statement_classes全球
performance_schema_max_statement_stack全球
performance_schema_max_table_handles全球
performance_schema_max_table_instances全球
performance_schema_max_table_lock_stat全球
performance_schema_max_thread_classes全球
performance_schema_max_thread_instances全球
_性能会话连接模式_ _ _ attrs _大小全球
performance_schema_setup_actors_size全球
performance_schema_setup_objects_size全球
performance_schema_users_size全球
persisted_globals_load全球
PID文件
变量pid_file全球
_插件目录全球
港口全球
preload_buffer_size
分析
profiling_history_size
protocol_version全球
proxy_user会话
pseudo_slave_mode会话
pseudo_thread_id会话
在您的网站上
查询缓存_ _极限全球
站点藏身之处全球
查询_ _缓存大小全球
站点隐藏类型
_ _ wlock _ invalidate查询缓存
准备好的
rand_seed1会话
rand_seed2会话
把_分配_ _块大小
range_optimizer_max_mem_size
应用程序
read_buffer_size
read_only全球
read_rnd_buffer_size
regexp_stack_limit全球
_ regexp _时间限制全球
中继日志
变量relay_log全球
relay_log_basename全球
中继日志索引
变量relay_log_index全球
relay_log_index全球
relay_log_info_file全球
relay_log_info_repository全球
relay_log_purge全球
relay_log_recovery全球
relay_log_space_limit全球
报告主持人
变量report_host全球
报告的密码
变量report_password全球
报告港口
变量report_port全球
报告使用者
变量report_user全球
require_secure_transport全球
resultset_metadata会话
rewriter_enabled全球
rewriter_verbose全球
rpl_read_size全球
rpl_semi_sync_master_enabled全球
半同步_ RPL _ _主_超时全球
rpl_semi_sync_master_trace_level全球
rpl_semi_sync_master_wait_for_slave_count全球
rpl_semi_sync_master_wait_no_slave全球
rpl_semi_sync_master_wait_point全球
rpl_semi_sync_slave_enabled全球
rpl_semi_sync_slave_trace_level全球
奴隶站_ RPL _ _超时全球
_ _缓存架构定义全球
安全认证
变量安全_ auth全球
安全的私人文件
变量secure_file_priv全球
服务器ID
变量server_id全球
server_uuid全球
_ _ gtids会话跟踪
session_track_schema
session_track_state_change
session_track_system_variables
sha256_password_auto_generate_rsa_keys全球
sha256_password_private_key_path全球
sha256_password_proxy_users全球
sha256_password_public_key_path全球
shared_memory全球
shared_memory_base_name全球
show_compatibility_56全球
show_create_table_verbosity
show_old_temporals
simplified_binlog_gtid_recovery全球
skip_external_locking全球
跳过名字解析
变量skip_name_resolve全球
跳过网络
变量skip_networking全球
跳过显示数据库
变量skip_show_database全球
slave_allow_batching全球
slave_checkpoint_group全球
slave_checkpoint_period全球
slave_compressed_protocol全球
slave_exec_mode全球
从载荷tmpdir
变量slave_load_tmpdir全球
slave_max_allowed_packet全球
从网络超时
变量slave_net_timeout全球
slave_parallel_type全球
slave_parallel_workers全球
slave_pending_jobs_size_max全球
slave_preserve_commit_order全球
slave_rows_search_algorithms全球
跳过错误/从…
变量奴隶_跳过_错误全球
slave_sql_verify_checksum全球
slave_transaction_retries全球
斯拉夫语全球
_ _慢启动时间全球
慢查询日志
变量_ _慢查询日志全球
慢_查询日志文件_ _全球
插座全球
sort_buffer_size
SQL是_ _ _汽车零
sql_big_selects
sql_buffer_result
sql_log_bin会话
sql_log_off
SQL模式
变量sql_mode
sql_notes
sql_quote_show_create
_ primary key _ SQL _ require
sql_safe_updates
sql_select_limit
sql_slave_skip_counter全球
SQL - Warning
SSL作为
变量SSL作为_全球
SSL capath
变量ssl_capath全球
SSL证书
变量_ SSL证书全球
SSL密码
变量SSL _密码全球
SSL证书
变量ssl_crl全球
crlpath SSL
变量ssl_crlpath全球
SSL _ _ FIPS模式全球
SSL密钥
变量_ SSL密钥全球
stored_program_cache全球
程序存储_ _ _缓存定义全球
super_read_only全球
sync_binlog全球
_信息同步_硕士全球
sync_relay_log全球
sync_relay_log_info全球
syseventlog.facility全球
syseventlog.include_pid全球
syseventlog.tag全球
system_time_zone全球
全球
table_open_cache全球
桌上全球
电子表格全球
temptable_max_ram全球
thread_cache_size全球
thread_handling全球
thread_pool_algorithm全球
thread_pool_high_priority_connection
thread_pool_max_unused_threads全球
thread_pool_prio_kickup_timer
thread_pool_size全球
thread_pool_stall_limit全球
thread_stack全球
time_format全球
time_zone
时间戳会话
_ TLS版本全球
tmp_table_size
TMPDIR全球
交易
_ batching _允许交易会话
事务隔离
变量transaction_isolation
交易日志
只读事务
变量transaction_read_only
transaction_write_set_extraction
德克萨斯州_隔离
tx_read_only
unique_checks
updatable_views_with_limit
use_secondary_engine会话
有效的程序全球
有效的程序全球
validate_password_length全球
有效的密码全球
有效的程序全球
validate_password_policy全球
有效的程序复活节特别程序全球
验证_ password.check _ _ user name全球
鉴定程序全球
validate_password.length全球
validate _ password.mixed _框_计数全球
【中文解释】:验证局全球
validate_password.policy全球
有效的程序复活节特别程序全球
有效的全球
版本全球
怎样的版本全球
最新版本全球
最新版本全球
_ _ zlib编译版本全球
version_tokens_session
version_tokens_session_number
wait_timeout
报警电话计数会话
windowing_use_high_precision

笔记

1.。这个选项是动态的,但只有服务器应该设置信息。你不应该设置这个变量的手动。

5.1.5服务器状态变量引用

下表提供了一个列表中的所有状态变量适用于mysqld

表中列出的每个变量的数据类型和范围。在适当的情况下,直接链接到该项目的进一步的信息可。

状态变量汇总表

变量名变量类型变量范围
Aborted_clients整数GLOBAL
Aborted_connects整数GLOBAL
Acl_cache_items_countGLOBAL
Audit_log_current_size整数GLOBAL
Audit_log_event_max_drop_size整数GLOBAL
Audit_log_events整数GLOBAL
Audit_log_events_filtered整数GLOBAL
Audit_log_events_lost整数GLOBAL
Audit_log_events_written整数GLOBAL
Audit_log_total_size整数GLOBAL
Audit_log_write_waits整数GLOBAL
Binlog_cache_disk_use整数GLOBAL
Binlog_cache_use整数GLOBAL
Binlog_stmt_cache_disk_use整数GLOBAL
Binlog_stmt_cache_use整数GLOBAL
Bytes_received整数GLOBAL|会话
Bytes_sent整数GLOBAL|会话
Caching_sha2_password_rsa_public_keyGLOBAL
Com_admin_commands整数GLOBAL|会话
Com_alter_db整数GLOBAL|会话
Com_alter_event整数GLOBAL|会话
Com_alter_function整数GLOBAL|会话
Com_alter_procedure整数GLOBAL|会话
Com_alter_resource_groupGLOBAL
Com_alter_server整数GLOBAL|会话
Com_alter_table整数GLOBAL|会话
Com_alter_tablespace整数GLOBAL|会话
Com_alter_user整数GLOBAL|会话
Com_alter_user_default_roleGLOBAL
Com_analyze整数GLOBAL|会话
Com_assign_to_keycache整数GLOBAL|会话
Com_begin整数GLOBAL|会话
Com_binlog整数GLOBAL|会话
Com_call_procedure整数GLOBAL|会话
Com_change_db整数GLOBAL|会话
Com_change_master整数GLOBAL|会话
Com_change_repl_filter整数GLOBAL|会话
Com_check整数GLOBAL|会话
Com_checksum整数GLOBAL|会话
Com_commit整数GLOBAL|会话
Com_create_db整数GLOBAL|会话
Com_create_event整数GLOBAL|会话
Com_create_function整数GLOBAL|会话
Com_create_index整数GLOBAL|会话
Com_create_procedure整数GLOBAL|会话
Com_create_resource_groupGLOBAL
Com_create_roleGLOBAL
Com_create_server整数GLOBAL|会话
Com_create_table整数GLOBAL|会话
Com_create_trigger整数GLOBAL|会话
Com_create_udf整数GLOBAL|会话
Com_create_user整数GLOBAL|会话
Com_create_view整数GLOBAL|会话
Com_dealloc_sql整数GLOBAL|会话
Com_delete整数GLOBAL|会话
Com_delete_multi整数GLOBAL|会话
Com_do整数GLOBAL|会话
Com_drop_db整数GLOBAL|会话
Com_drop_event整数GLOBAL|会话
Com_drop_function整数GLOBAL|会话
Com_drop_index整数GLOBAL|会话
Com_drop_procedure整数GLOBAL|会话
Com_drop_resource_groupGLOBAL
Com_drop_roleGLOBAL
Com_drop_server整数GLOBAL|会话
Com_drop_table整数GLOBAL|会话
Com_drop_trigger整数GLOBAL|会话
Com_drop_user整数GLOBAL|会话
Com_drop_view整数GLOBAL|会话
Com_empty_query整数GLOBAL|会话
Com_execute_sql整数GLOBAL|会话
Com_explain_other整数GLOBAL|会话
Com_flush整数GLOBAL|会话
Com_get_diagnostics整数GLOBAL|会话
Com_grant整数GLOBAL|会话
Com_grant_rolesGLOBAL
Com_group_replication_startGLOBAL
Com_group_replication_stopGLOBAL
Com_ha_close整数GLOBAL|会话
Com_ha_open整数GLOBAL|会话
Com_ha_read整数GLOBAL|会话
Com_help整数GLOBAL|会话
Com_insert整数GLOBAL|会话
Com_insert_select整数GLOBAL|会话
Com_install_componentGLOBAL
Com_install_plugin整数GLOBAL|会话
Com_kill整数GLOBAL|会话
Com_load整数GLOBAL|会话
Com_lock_tables整数GLOBAL|会话
Com_optimize整数GLOBAL|会话
Com_preload_keys整数GLOBAL|会话
Com_prepare_sql整数GLOBAL|会话
Com_purge整数GLOBAL|会话
Com_purge_before_date整数GLOBAL|会话
Com_release_savepoint整数GLOBAL|会话
Com_rename_table整数GLOBAL|会话
Com_rename_user整数GLOBAL|会话
Com_repair整数GLOBAL|会话
Com_replace整数GLOBAL|会话
Com_replace_select整数GLOBAL|会话
Com_reset整数GLOBAL|会话
Com_resignal整数GLOBAL|会话
Com_revoke整数GLOBAL|会话
Com_revoke_all整数GLOBAL|会话
Com_revoke_rolesGLOBAL
Com_rollback整数GLOBAL|会话
Com_rollback_to_savepoint整数GLOBAL|会话
Com_savepoint整数GLOBAL|会话
Com_select整数GLOBAL|会话
Com_set_option整数GLOBAL|会话
Com_set_resource_groupGLOBAL
Com_set_roleGLOBAL
Com_show_authors整数GLOBAL|会话
Com_show_binlog_events整数GLOBAL|会话
Com_show_binlogs整数GLOBAL|会话
Com_show_charsets整数GLOBAL|会话
Com_show_collations整数GLOBAL|会话
Com_show_contributors整数GLOBAL|会话
Com_show_create_db整数GLOBAL|会话
Com_show_create_event整数GLOBAL|会话
Com_show_create_func整数GLOBAL|会话
Com_show_create_proc整数GLOBAL|会话
Com_show_create_table整数GLOBAL|会话
Com_show_create_trigger整数GLOBAL|会话
Com_show_create_user整数GLOBAL|会话
Com_show_databases整数GLOBAL|会话
Com_show_engine_logs整数GLOBAL|会话
Com_show_engine_mutex整数GLOBAL|会话
Com_show_engine_status整数GLOBAL|会话
Com_show_errors整数GLOBAL|会话
Com_show_events整数GLOBAL|会话
Com_show_fields整数GLOBAL|会话
Com_show_function_code整数GLOBAL|会话
Com_show_function_status整数GLOBAL|会话
Com_show_grants整数GLOBAL|会话
Com_show_keys整数GLOBAL|会话
Com_show_master_status整数GLOBAL|会话
Com_show_ndb_status整数GLOBAL|会话
Com_show_new_master整数GLOBAL|会话
Com_show_open_tables整数GLOBAL|会话
Com_show_plugins整数GLOBAL|会话
Com_show_privileges整数GLOBAL|会话
Com_show_procedure_code整数GLOBAL|会话
Com_show_procedure_status整数GLOBAL|会话
Com_show_processlist整数GLOBAL|会话
Com_show_profile整数GLOBAL|会话
Com_show_profiles整数GLOBAL|会话
Com_show_relaylog_events整数GLOBAL|会话
Com_show_slave_hosts整数GLOBAL|会话
Com_show_slave_status整数GLOBAL|会话
Com_show_slave_status_nonblocking整数GLOBAL|会话
Com_show_status整数GLOBAL|会话
Com_show_storage_engines整数GLOBAL|会话
Com_show_table_status整数GLOBAL|会话
Com_show_tables整数GLOBAL|会话
Com_show_triggers整数GLOBAL|会话
Com_show_variables整数GLOBAL|会话
Com_show_warnings整数GLOBAL|会话
Com_shutdown整数GLOBAL|会话
Com_signal整数GLOBAL|会话
Com_slave_start整数GLOBAL|会话
Com_slave_stop整数GLOBAL|会话
Com_stmt_close整数GLOBAL|会话
Com_stmt_execute整数GLOBAL|会话
Com_stmt_fetch整数GLOBAL|会话
Com_stmt_prepare整数GLOBAL|会话
Com_stmt_reprepare整数GLOBAL|会话
Com_stmt_reset整数GLOBAL|会话
Com_stmt_send_long_data整数GLOBAL|会话
Com_truncate整数GLOBAL|会话
Com_uninstall_componentGLOBAL
Com_uninstall_plugin整数GLOBAL|会话
Com_unlock_tables整数GLOBAL|会话
Com_update整数GLOBAL|会话
Com_update_multi整数GLOBAL|会话
Com_xa_commit整数GLOBAL|会话
Com_xa_end整数GLOBAL|会话
Com_xa_prepare整数GLOBAL|会话
Com_xa_recover整数GLOBAL|会话
Com_xa_rollback整数GLOBAL|会话
Com_xa_start整数GLOBAL|会话
Compression整数SESSION
Connection_control_delay_generatedGLOBAL
Connection_errors_accept整数GLOBAL
Connection_errors_internal整数GLOBAL
Connection_errors_max_connections整数GLOBAL
Connection_errors_peer_address整数GLOBAL
Connection_errors_select整数GLOBAL
Connection_errors_tcpwrap整数GLOBAL
Connections整数GLOBAL
Created_tmp_disk_tables整数GLOBAL|会话
Created_tmp_files整数GLOBAL
Created_tmp_tables整数GLOBAL|会话
Delayed_errors整数GLOBAL
Delayed_insert_threads整数GLOBAL
Delayed_writes整数GLOBAL
dragnet.Status字符串GLOBAL
Firewall_access_denied整数GLOBAL
Firewall_access_granted整数GLOBAL
Firewall_cached_entries整数GLOBAL
Flush_commands整数GLOBAL
group_replication_primary_member字符串GLOBAL
Handler_commit整数GLOBAL|会话
Handler_delete整数GLOBAL|会话
Handler_external_lock整数GLOBAL|会话
Handler_mrr_init整数GLOBAL|会话
Handler_prepare整数GLOBAL|会话
Handler_read_first整数GLOBAL|会话
Handler_read_key整数GLOBAL|会话
Handler_read_last整数GLOBAL|会话
Handler_read_next整数GLOBAL|会话
Handler_read_prev整数GLOBAL|会话
Handler_read_rnd整数GLOBAL|会话
Handler_read_rnd_next整数GLOBAL|会话
Handler_rollback整数GLOBAL|会话
Handler_savepoint整数GLOBAL|会话
Handler_savepoint_rollback整数GLOBAL|会话
Handler_update整数GLOBAL|会话
Handler_write整数GLOBAL|会话
Innodb_available_undo_logs整数GLOBAL
Innodb_buffer_pool_bytes_data整数GLOBAL
Innodb_buffer_pool_bytes_dirty整数GLOBAL
Innodb_buffer_pool_dump_status字符串GLOBAL
Innodb_buffer_pool_load_status字符串GLOBAL
Innodb_buffer_pool_pages_data整数GLOBAL
Innodb_buffer_pool_pages_dirty整数GLOBAL
Innodb_buffer_pool_pages_flushed整数GLOBAL
Innodb_buffer_pool_pages_free整数GLOBAL
Innodb_buffer_pool_pages_latched整数GLOBAL
Innodb_buffer_pool_pages_misc整数GLOBAL
Innodb_buffer_pool_pages_total整数GLOBAL
Innodb_buffer_pool_read_ahead整数GLOBAL
Innodb_buffer_pool_read_ahead_evicted整数GLOBAL
Innodb_buffer_pool_read_ahead_rnd整数GLOBAL
Innodb_buffer_pool_read_requests整数GLOBAL
Innodb_buffer_pool_reads整数GLOBAL
Innodb_buffer_pool_resize_status字符串GLOBAL
Innodb_buffer_pool_wait_free整数GLOBAL
Innodb_buffer_pool_write_requests整数GLOBAL
Innodb_data_fsyncs整数GLOBAL
Innodb_data_pending_fsyncs整数GLOBAL
Innodb_data_pending_reads整数GLOBAL
Innodb_data_pending_writes整数GLOBAL
Innodb_data_read整数GLOBAL
Innodb_data_reads整数GLOBAL
Innodb_data_writes整数GLOBAL
Innodb_data_written整数GLOBAL
Innodb_dblwr_pages_written整数GLOBAL
Innodb_dblwr_writes整数GLOBAL
Innodb_have_atomic_builtins整数GLOBAL
Innodb_log_waits整数GLOBAL
Innodb_log_write_requests整数GLOBAL
Innodb_log_writes整数GLOBAL
Innodb_num_open_files整数GLOBAL
Innodb_os_log_fsyncs整数GLOBAL
Innodb_os_log_pending_fsyncs整数GLOBAL
Innodb_os_log_pending_writes整数GLOBAL
Innodb_os_log_written整数GLOBAL
Innodb_page_size整数GLOBAL
Innodb_pages_created整数GLOBAL
Innodb_pages_read整数GLOBAL
Innodb_pages_written整数GLOBAL
Innodb_row_lock_current_waits整数GLOBAL
Innodb_row_lock_time整数GLOBAL
Innodb_row_lock_time_avg整数GLOBAL
Innodb_row_lock_time_max整数GLOBAL
Innodb_row_lock_waits整数GLOBAL
Innodb_rows_deleted整数GLOBAL
Innodb_rows_inserted整数GLOBAL
Innodb_rows_read整数GLOBAL
Innodb_rows_updated整数GLOBAL
Innodb_truncated_status_writes整数GLOBAL
Key_blocks_not_flushed整数GLOBAL
Key_blocks_unused整数GLOBAL
Key_blocks_used整数GLOBAL
Key_read_requests整数GLOBAL
Key_reads整数GLOBAL
Key_write_requests整数GLOBAL
Key_writes整数GLOBAL
Last_query_cost数字SESSION
Last_query_partial_plans整数SESSION
Locked_connects整数GLOBAL
Max_execution_time_exceeded整数GLOBAL|会话
Max_execution_time_set整数GLOBAL|会话
Max_execution_time_set_failed整数GLOBAL|会话
Max_used_connections整数GLOBAL
Max_used_connections_time日期时间GLOBAL
mecab_charset字符串GLOBAL
Mysqlx_aborted_clients整数GLOBAL
Mysqlx_address字符串GLOBAL
Mysqlx_bytes_received整数GLOBAL|会话
Mysqlx_bytes_sent整数GLOBAL|会话
Mysqlx_connection_accept_errors整数GLOBAL|会话
Mysqlx_connection_errors整数GLOBAL|会话
Mysqlx_connections_accepted整数GLOBAL
Mysqlx_connections_closed整数GLOBAL
Mysqlx_connections_rejected整数GLOBAL
Mysqlx_crud_create_view整数GLOBAL|会话
Mysqlx_crud_delete整数GLOBAL|会话
Mysqlx_crud_drop_view整数GLOBAL|会话
Mysqlx_crud_find整数GLOBAL|会话
Mysqlx_crud_insert整数GLOBAL|会话
Mysqlx_crud_modify_view整数GLOBAL|会话
Mysqlx_crud_update整数GLOBAL|会话
Mysqlx_errors_sent整数GLOBAL|会话
Mysqlx_errors_unknown_message_type整数GLOBAL|会话
Mysqlx_expect_close整数GLOBAL|会话
Mysqlx_expect_open整数GLOBAL|会话
Mysqlx_init_error整数GLOBAL|会话
Mysqlx_notice_other_sent整数GLOBAL|会话
Mysqlx_notice_warning_sent整数GLOBAL|会话
Mysqlx_port字符串GLOBAL
Mysqlx_rows_sent整数GLOBAL|会话
Mysqlx_sessions整数GLOBAL
Mysqlx_sessions_accepted整数GLOBAL
Mysqlx_sessions_closed整数GLOBAL
Mysqlx_sessions_fatal_error整数GLOBAL
Mysqlx_sessions_killed整数GLOBAL
Mysqlx_sessions_rejected整数GLOBAL
Mysqlx_socket字符串GLOBAL
Mysqlx_ssl_accept_renegotiates整数GLOBAL
Mysqlx_ssl_accepts整数GLOBAL
Mysqlx_ssl_active整数GLOBAL|会话
Mysqlx_ssl_cipher整数GLOBAL|会话
Mysqlx_ssl_cipher_list整数GLOBAL|会话
Mysqlx_ssl_ctx_verify_depth整数GLOBAL|会话
Mysqlx_ssl_ctx_verify_mode整数GLOBAL|会话
Mysqlx_ssl_finished_accepts整数GLOBAL
Mysqlx_ssl_server_not_after整数GLOBAL
Mysqlx_ssl_server_not_before整数GLOBAL
Mysqlx_ssl_verify_depth整数GLOBAL
Mysqlx_ssl_verify_mode整数GLOBAL
Mysqlx_ssl_version整数GLOBAL|会话
Mysqlx_stmt_create_collection整数GLOBAL|会话
Mysqlx_stmt_create_collection_index整数GLOBAL|会话
Mysqlx_stmt_disable_notices整数GLOBAL|会话
Mysqlx_stmt_drop_collection整数GLOBAL|会话
Mysqlx_stmt_drop_collection_index整数GLOBAL|会话
Mysqlx_stmt_enable_notices整数GLOBAL|会话
Mysqlx_stmt_ensure_collection字符串GLOBAL|会话
Mysqlx_stmt_execute_mysqlx整数GLOBAL|会话
Mysqlx_stmt_execute_sql整数GLOBAL|会话
Mysqlx_stmt_execute_xplugin整数GLOBAL|会话
Mysqlx_stmt_kill_client整数GLOBAL|会话
Mysqlx_stmt_list_clients整数GLOBAL|会话
Mysqlx_stmt_list_notices整数GLOBAL|会话
Mysqlx_stmt_list_objects整数GLOBAL|会话
Mysqlx_stmt_ping整数GLOBAL|会话
Mysqlx_worker_threads整数GLOBAL
Mysqlx_worker_threads_active整数GLOBAL
Ndb_api_bytes_received_count整数GLOBAL
Ndb_api_bytes_received_count_session整数SESSION
Ndb_api_bytes_received_count_slave整数GLOBAL
Ndb_api_bytes_sent_count整数GLOBAL
Ndb_api_bytes_sent_count_slave整数GLOBAL
Ndb_api_event_bytes_count_injector整数GLOBAL
Ndb_api_event_data_count_injector整数GLOBAL
Ndb_api_event_nondata_count_injector整数GLOBAL
Ndb_api_pk_op_count整数GLOBAL
Ndb_api_pk_op_count_session整数SESSION
Ndb_api_pk_op_count_slave整数GLOBAL
Ndb_api_pruned_scan_count整数GLOBAL
Ndb_api_pruned_scan_count_session整数SESSION
Ndb_api_range_scan_count_slave整数GLOBAL
Ndb_api_read_row_count整数GLOBAL
Ndb_api_read_row_count_session整数SESSION
Ndb_api_scan_batch_count_slave整数GLOBAL
Ndb_api_table_scan_count整数GLOBAL
Ndb_api_table_scan_count_session整数SESSION
Ndb_api_trans_abort_count整数GLOBAL
Ndb_api_trans_abort_count_session整数SESSION
Ndb_api_trans_abort_count_slave整数GLOBAL
Ndb_api_trans_close_count整数GLOBAL
Ndb_api_trans_close_count_session整数SESSION
Ndb_api_trans_close_count_slave整数GLOBAL
Ndb_api_trans_commit_count整数GLOBAL
Ndb_api_trans_commit_count_session整数SESSION
Ndb_api_trans_commit_count_slave整数GLOBAL
Ndb_api_trans_local_read_row_count_slave整数GLOBAL
Ndb_api_trans_start_count整数GLOBAL
Ndb_api_trans_start_count_session整数SESSION
Ndb_api_trans_start_count_slave整数GLOBAL
Ndb_api_uk_op_count整数GLOBAL
Ndb_api_uk_op_count_slave整数GLOBAL
Ndb_api_wait_exec_complete_count整数GLOBAL
Ndb_api_wait_exec_complete_count_session整数SESSION
Ndb_api_wait_exec_complete_count_slave整数GLOBAL
Ndb_api_wait_meta_request_count整数GLOBAL
Ndb_api_wait_meta_request_count_session整数SESSION
Ndb_api_wait_nanos_count整数GLOBAL
Ndb_api_wait_nanos_count_session整数SESSION
Ndb_api_wait_nanos_count_slave整数GLOBAL
Ndb_api_wait_scan_result_count整数GLOBAL
Ndb_api_wait_scan_result_count_session整数SESSION
Ndb_api_wait_scan_result_count_slave整数GLOBAL
Ndb_cluster_node_id整数GLOBAL|会话
Ndb_config_from_host整数GLOBAL|会话
Ndb_config_from_port整数GLOBAL|会话
Ndb_conflict_fn_epoch_trans整数GLOBAL
Ndb_conflict_fn_max整数GLOBAL
Ndb_conflict_fn_old整数GLOBAL
Ndb_conflict_trans_detect_iter_count整数GLOBAL
Ndb_conflict_trans_row_reject_count整数GLOBAL
Ndb_last_commit_epoch_server整数GLOBAL
Ndb_last_commit_epoch_session整数SESSION
Ndb_number_of_data_nodes整数GLOBAL
Ndb_pushed_queries_defined整数GLOBAL
Ndb_pushed_queries_executed整数GLOBAL
Ndb_scan_count整数GLOBAL
Not_flushed_delayed_rows整数GLOBAL
Ongoing_anonymous_gtid_violating_transaction_count整数GLOBAL
Ongoing_anonymous_transaction_count整数GLOBAL
Ongoing_automatic_gtid_violating_transaction_count整数GLOBAL
Open_files整数GLOBAL
Open_streams整数GLOBAL
Open_table_definitions整数GLOBAL
Open_tables整数GLOBAL|会话
Opened_files整数GLOBAL
Opened_table_definitions整数GLOBAL|会话
Opened_tables整数GLOBAL|会话
original_commit_timestamp数字SESSION
Performance_schema_accounts_lost整数GLOBAL
Performance_schema_cond_classes_lost整数GLOBAL
Performance_schema_cond_instances_lost整数GLOBAL
Performance_schema_digest_lost整数GLOBAL
Performance_schema_file_classes_lost整数GLOBAL
Performance_schema_file_handles_lost整数GLOBAL
Performance_schema_file_instances_lost整数GLOBAL
Performance_schema_hosts_lost整数GLOBAL
Performance_schema_index_stat_lost整数GLOBAL
Performance_schema_locker_lost整数GLOBAL
Performance_schema_memory_classes_lost整数GLOBAL
Performance_schema_metadata_lock_lost整数GLOBAL
Performance_schema_mutex_classes_lost整数GLOBAL
Performance_schema_mutex_instances_lost整数GLOBAL
Performance_schema_nested_statement_lost整数GLOBAL
Performance_schema_prepared_statements_lost整数GLOBAL
Performance_schema_program_lost整数GLOBAL
Performance_schema_rwlock_classes_lost整数GLOBAL
Performance_schema_rwlock_instances_lost整数GLOBAL
Performance_schema_session_connect_attrs_longest_seenGLOBAL
Performance_schema_session_connect_attrs_lost整数GLOBAL
Performance_schema_socket_classes_lost整数GLOBAL
Performance_schema_socket_instances_lost整数GLOBAL
Performance_schema_stage_classes_lost整数GLOBAL
Performance_schema_statement_classes_lost整数GLOBAL
Performance_schema_table_handles_lost整数GLOBAL
Performance_schema_table_instances_lost整数GLOBAL
Performance_schema_table_lock_stat_lost整数GLOBAL
Performance_schema_thread_classes_lost整数GLOBAL
Performance_schema_thread_instances_lost整数GLOBAL
Performance_schema_users_lost整数GLOBAL
Prepared_stmt_count整数GLOBAL
Qcache_free_blocks整数GLOBAL
Qcache_free_memory整数GLOBAL
Qcache_hits整数GLOBAL
Qcache_inserts整数GLOBAL
Qcache_lowmem_prunes整数GLOBAL
Qcache_not_cached整数GLOBAL
Qcache_queries_in_cache整数GLOBAL
Qcache_total_blocks整数GLOBAL
Queries整数GLOBAL|会话
Questions整数GLOBAL|会话
Rewriter_number_loaded_rules整数GLOBAL
Rewriter_number_reloads整数GLOBAL
Rewriter_number_rewritten_queries整数GLOBAL
Rewriter_reload_error布尔GLOBAL
Rpl_semi_sync_master_clients整数GLOBAL
Rpl_semi_sync_master_net_avg_wait_time整数GLOBAL
Rpl_semi_sync_master_net_wait_time整数GLOBAL
Rpl_semi_sync_master_net_waits整数GLOBAL
Rpl_semi_sync_master_no_times整数GLOBAL
Rpl_semi_sync_master_no_tx整数GLOBAL
Rpl_semi_sync_master_status布尔GLOBAL
Rpl_semi_sync_master_timefunc_failures整数GLOBAL
Rpl_semi_sync_master_tx_avg_wait_time整数GLOBAL
Rpl_semi_sync_master_tx_wait_time整数GLOBAL
Rpl_semi_sync_master_tx_waits整数GLOBAL
Rpl_semi_sync_master_wait_pos_backtraverse整数GLOBAL
Rpl_semi_sync_master_wait_sessions整数GLOBAL
Rpl_semi_sync_master_yes_tx整数GLOBAL
Rpl_semi_sync_slave_status布尔GLOBAL
Rsa_public_key字符串GLOBAL
Secondary_engine_execution_countGLOBAL|会话
Select_full_join整数GLOBAL|会话
Select_full_range_join整数GLOBAL|会话
Select_range整数GLOBAL|会话
Select_range_check整数GLOBAL|会话
Select_scan整数GLOBAL|会话
Slave_heartbeat_period数字GLOBAL
Slave_last_heartbeatGLOBAL
Slave_open_temp_tables整数GLOBAL
Slave_received_heartbeatsGLOBAL
Slave_retried_transactions整数GLOBAL
Slave_rows_last_search_algorithm_used字符串GLOBAL
Slave_runningGLOBAL
Slow_launch_threads整数GLOBAL|会话
Slow_queries整数GLOBAL|会话
Sort_merge_passes整数GLOBAL|会话
Sort_range整数GLOBAL|会话
Sort_rows整数GLOBAL|会话
Sort_scan整数GLOBAL|会话
Ssl_accept_renegotiates整数GLOBAL
Ssl_accepts整数GLOBAL
Ssl_callback_cache_hits整数GLOBAL
Ssl_cipher字符串GLOBAL|会话
Ssl_cipher_list字符串GLOBAL|会话
Ssl_client_connects整数GLOBAL
Ssl_connect_renegotiates整数GLOBAL
Ssl_ctx_verify_depth整数GLOBAL
Ssl_ctx_verify_mode整数GLOBAL
Ssl_default_timeout整数GLOBAL|会话
Ssl_finished_accepts整数GLOBAL
Ssl_finished_connects整数GLOBAL
Ssl_server_not_after整数GLOBAL|会话
Ssl_server_not_before整数GLOBAL|会话
Ssl_session_cache_hits整数GLOBAL
Ssl_session_cache_misses整数GLOBAL
Ssl_session_cache_mode字符串GLOBAL
Ssl_session_cache_overflows整数GLOBAL
Ssl_session_cache_size整数GLOBAL
Ssl_session_cache_timeouts整数GLOBAL
Ssl_sessions_reused整数GLOBAL|会话
Ssl_used_session_cache_entries整数GLOBAL
Ssl_verify_depth整数GLOBAL|会话
Ssl_verify_mode整数GLOBAL|会话
Ssl_version字符串GLOBAL|会话
Table_locks_immediate整数GLOBAL
Table_locks_waited整数GLOBAL
Table_open_cache_hits整数GLOBAL|会话
Table_open_cache_misses整数GLOBAL|会话
Table_open_cache_overflows整数GLOBAL|会话
Tc_log_max_pages_used整数GLOBAL
Tc_log_page_size整数GLOBAL
Tc_log_page_waits整数GLOBAL
Threads_cached整数GLOBAL
Threads_connected整数GLOBAL
Threads_created整数GLOBAL
Threads_running整数GLOBAL
Uptime整数GLOBAL
Uptime_since_flush_status整数GLOBAL
validate_password_dictionary_file_last_parsed日期时间GLOBAL
validate_password_dictionary_file_words_count整数GLOBAL
validate_password.dictionary_file_last_parsed日期时间GLOBAL
validate_password.dictionary_file_words_count整数GLOBAL

5.1.6服务器的命令选项

当你开始mysqld服务器,你可以使用任何描述的方法指定程序选项4.2.3节”指定程序选项”。最常见的方法是提供一个选项文件或命令行选项。然而,在大多数情况下,需要确保服务器使用相同的选项,每次运行。确保这是列表中选择文件的最好方式。看到第4.2.6、“使用选项文件”。这部分还介绍了选择文件格式和语法。

mysqld读取选项从[mysqld]服务器群组_ mysqld safe读取选项从[mysqld]服务器[mysqld_safe],和[ _ mysqld safe ]群组mysql.server读取选项从[mysqld][ mysql.server ]群组

mysqld接受许多命令选项。一个简短的总结,执行此命令:

mysqld --help

查看完整的列表,使用此命令:

mysqld --verbose --help

一些物品的清单实际上是系统变量,可以设置在服务器启动。这些都可以显示在运行时使用SHOW VARIABLES声明。有些项目由前面的显示mysqld命令不出现在SHOW VARIABLES输出;这是因为他们选择而不是系统变量。

下面的列表显示了一些最常见的服务器选项。在其他的章节中描述的附加选项:

一些选项控制缓存或缓存的大小。对于一个给定的缓冲区,服务器可能需要分配的内部数据结构。这些结构通常是分配给缓冲区的总内存分配,和所需的空间量可能是依赖于平台。这意味着,当你将一个值赋给一个选项,控制缓冲区的大小,实际可用空间量可能会有所不同,从价值分配。在某些情况下,金额可以小于指定的值。它也有可能是服务器将调整值上升。例如,如果你的最小值是1024个选项指定一个值0,服务器将值设置为1024。

值,缓冲区的大小,长度,和堆栈的大小是给定的字节,除非另有规定。

一些选项将文件名称的值。除非另有指定,默认文件位置的数据目录,如果该值是一个相对路径名。指定的位置明确,使用绝对路径名。假设数据目录/var/mysql/data。如果一个文件值的选择是给出一个相对路径名,它将位于下/ var / MySQL /日期。如果该值是一个绝对路径名,它的位置是由给定的路径名。

你也可以用变量名作为选项启动服务器组服务器系统变量的值。指定一个值,一个服务器系统变量,利用形式的选择--var_name=value。例如,--sort_buffer_size=384Msort_buffer_size变量的值384mb

当你将一个值赋给一个变量,MySQL会自动修正值保持在一定范围内,或调整值最接近的允许值,如果只允许一定的价值。

限制最大值,系统变量可以在运行时设置的SET声明中,利用形式的选项指定最大-最高var_name=value在服务器启动

你可以在运行时用改变系统变量的值SET声明。看到第13.7.5.1,”句法变量赋值”

第5.1.7,服务器“系统变量”所有的变量,提供了一个完整的描述,和其他信息放在服务器启动和运行。在改变系统变量的信息,参见第5.1.1条,“配置服务器”

  • --help-?

    财产价值
    命令行格式--help

    显示一个简短的帮助信息并退出。同时使用--verbose--help选项以查看完整的消息。

  • --allow-suspicious-udfs

    财产价值
    命令行格式--allow-suspicious-udfs
    类型布尔
    默认值FALSE

    此选项控制是否只有一个用户定义的函数xxx为主要功能的符号可以加载。默认情况下,这个选项是关闭的,只有能够至少有一个辅助符号可以加载;这可以防止尝试加载功能的共享目标文件,除了那些包含合法的UDF。看到第28.4.2.6,“UDF的安全防范措施”

  • --ansi

    财产价值
    命令行格式--ansi

    使用的标准(ANSI)而不是MySQL语法的SQL语法。在服务器的SQL模式更精确的控制,使用--sql-mode选项。看到1.8节,“MySQL标准”,和第5.1.10,”服务器的SQL模式”

  • --basedir=dir_name-b dir_name

    财产价值
    命令行格式--basedir=dir_name
    系统变量basedir
    范围全球
    动态
    看到的是_提示应用
    类型目录名称
    默认值(>= 8.0.2)parent of mysqld installation directory
    默认值(<= 8.0.1)configuration-dependent default

    对MySQL的安装目录的路径。这个选项设置basedir系统变量

    服务器可执行文件决定自身的完整路径名称在启动和使用它的目录设置作为默认的父basedir价值。这使得服务器使用basedir当搜索服务器等相关信息分享包含错误信息的目录

  • --big-tables

    财产价值
    命令行格式--big-tables
    系统变量big_tables
    范围全球会议
    动态
    看到的是_提示应用
    类型布尔
    默认值OFF

    使大型结果集保存所有临时集到文件。此选项可防止最满桌错误,也减缓了内存中的表,查询就足够了。服务器能够处理大型结果集使用自动内存小的临时表和表必要时切换到硬盘。

  • --bind-address=addr

    财产价值
    命令行格式--bind-address=addr
    系统变量bind_address
    范围全球
    动态
    看到的是_提示应用
    类型字符串
    默认值*

    MySQL服务器监听一个或多个网络套接字的TCP / IP连接。每个套接字绑定到一个地址,但有可能映射到多个网络接口的地址。指定的服务器侦听TCP/IP连接,使用--bind-address在服务器启动选项:

    • MySQL 8.0.13之前,--bind-address接受一个单一的地址值,可以指定一个单一的非通配符的IP地址或主机名,或一个通配符地址格式,允许在多个网络接口(听*0.0.0.0,或::

    • 世纪之mysql 8.0.13,--bind-address接受一个单一的值如刚才所描述的,或者一个逗号分隔的值。当选项名称列表的多个值,每个值必须指定一个非通配符IP地址或主机名;也可以指定一个通配符地址格式(*0.0.0.0,或::

    IP地址可以被指定为IPv4或IPv6地址。任何期权价值,是一个主机名,服务器解析名称到IP地址和绑定到地址。如果一个域名解析到多个IP地址,服务器使用第一个IPv4地址,如果有,或第一个IPv6地址否则。

    该服务器将不同类型的地址如下:

    • 如果地址是*,接受服务器的TCP/IP连接所有服务器主机的IPv4接口,如果服务器主机支持IPv6,IPv6接口上的所有。使用这个地址来允许IPv4和IPv6连接所有服务器接口。这个值是默认的。如果选择列表指定多个值,这个值是不允许的。

    • 如果地址是0.0.0.0,接受服务器的TCP / IP的所有服务器主机的IPv4接口连接。如果选择列表指定多个值,这个值是不允许的。

    • 如果地址是::,接受服务器的TCP/IP连接所有服务器主机的IPv4和IPv6接口。如果选择列表指定多个值,这个值是不允许的。

    • 如果地址是一个IPv4映射地址,服务器接受连接,TCP / IP地址,在IPv4或IPv6格式。例如,如果服务器是必然的::ffff:127.0.0.1,客户可以连接使用--host=127.0.0.1--host=::ffff:127.0.0.1

    • 如果地址是常规IPv4或IPv6地址(如127.0.0.1::1),接受服务器的TCP/IP连接只为IPv4或IPv6地址。

    如果绑定到任何地址失败,服务器产生一个错误,不能启动。

    实例:

    • --bind-address=*

      服务器监听所有的IPv4或IPv6地址,指定的*通配符

    • --bind-address=198.51.100.20

      服务器只听的198.51.100.20IPv4地址

    • --bind-address=198.51.100.20,2001:db8:0:f101::1

      服务器监听的198.51.100.20IPv4地址和2001年:::::::::F101 db8 0 1IPv6的地址

    • --bind-address=198.51.100.20,*

      这会产生错误,因为不允许通配符地址时--bind-addressNames a list of multiple values .

    什么时候--bind-address名称单值(通配符或非通配符),服务器监听一个插座,这对于一个通配符地址可以绑定到多个网络接口。什么时候--bind-address名称列表中的多个值,每个值的服务器监听一个插座,每个插座绑定到一个单一的网络接口。插座的数量与数量的值指定的线性。根据操作系统的连接接受效率,长值列表可能会导致性能损失接受TCP/IP连接。

    如果你打算绑定服务器的具体地址,确保mysql.user授权表包含具有管理权限,您可以使用连接到该地址的帐户。否则,你将无法关闭服务器。例如,如果你绑定服务器*,您可以连接到使用现有客户。但如果你绑定服务器::1,它接受连接只在那个地址。在这种情况下,首先确保&#39;根&#39;”&#39;::1帐户是目前在mysql.user表你就可以连接到服务器关闭。

  • --binlog-format={ROW|STATEMENT|MIXED}

    财产价值
    命令行格式--binlog-format=format
    系统变量binlog_format
    范围全球会议
    动态
    看到的是_提示应用
    类型枚举
    默认值ROW
    有效值

    ROW

    STATEMENT

    MIXED

    指定是否使用基于行的,基于语句,或混合复制。基于语句是在MySQL 8的默认。看到17.2.1,“复制格式”

    在某些情况下,在运行时改变这个变量是不可能的,或导致复制失败。看到第5.4.4.2,设置二进制日志格式”为更多的信息

    设置二进制日志格式不启用二进制日志设置binlog_format全局系统变量和记录一个警告。

  • --character-sets-dir=dir_name

    财产价值
    命令行格式--character-sets-dir=dir_name
    系统变量character_sets_dir
    范围全球
    动态
    看到的是_提示应用
    类型目录名称

    目录中的字符集设置。看到10.14节,“字符集配置”

  • --character-set-client-handshake

    财产价值
    命令行格式--character-set-client-handshake
    类型布尔
    默认值TRUE

    不要忽略字符集的客户端发送的信息。忽视客户信息和使用服务器默认的字符集,使用--skip-character-set-client-handshake;这使得MySQL像MySQL 4。

  • --character-set-filesystem=charset_name

    财产价值
    命令行格式--character-set-filesystem=name
    系统变量character_set_filesystem
    范围全球会议
    动态
    看到的是_提示应用
    类型字符串
    默认值binary

    文件系统的字符集。这个选项设置character_set_filesystem系统变量

  • --character-set-server=charset_nameCcharset_name

    财产价值
    命令行格式--character-set-server
    系统变量character_set_server
    范围全球会议
    动态
    看到的是_提示应用
    类型字符串
    默认值(>= 8.0.1)utf8mb4
    默认值(8.0.0)latin1

    使用charset_name作为默认的服务器字符集。看到10.14节,“字符集配置”。如果使用该选项指定一个不同的字符集,你也应该使用--collation-server指定的整理

  • --chroot=dir_nameRdir_name

    财产价值
    命令行格式--chroot=dir_name
    类型目录名称

    mysqld服务器在一个封闭的环境中启动应用chroot()系统调用。这是一个建议的安全措施。使用此选项限制LOAD DATA INFILESELECT ... INTO OUTFILE

  • --collation-server=collation_name

    财产价值
    命令行格式--collation-server
    系统变量collation_server
    范围全球会议
    动态
    看到的是_提示应用
    类型字符串
    默认值(>= 8.0.1)utf8mb4_0900_ai_ci
    默认值(8.0.0)latin1_swedish_ci

    使用collation_name如错误的伺服见10.14节,“字符集配置”

  • --console

    财产价值
    命令行格式--console
    特定平台Windows

    (仅适用于Windows。)因为默认的错误日志的目的是控制台。这影响到日志作家依据自己的输出目的地的预设目的。看到5.4.2部分,“错误日志”mysqld如果不使用此选项关闭控制台窗口。

    --console优先于--log-error如果两者都

  • --core-file

    财产价值
    命令行格式--core-file
    类型布尔
    默认值OFF

    写一个核心文件,如果mysqld模具。的名称和文件的位置是依赖于系统的核心。在Linux内核文件命名core.pid写入进程的当前工作目录,这mysqld是数据目录pid代表服务器进程的进程ID。在MacOS,核心文件命名核心pid写入/颜色目录在Solaris中,使用coreadm命令来指定在哪里写的核心文件和如何命名它。

    对于某些系统,得到一个核心文件还必须指定--core-file-size选项_ mysqld safe。看到4.3.2“,”_ mysqld safeMySQL服务器启动脚本”。在某些系统,如Solaris,你没有得到一个核心文件如果你也使用--user选项可能会有额外的限制或局限性。例如,可能需要执行ulimit C无限在启动服务器之前。请与您的系统文件。

  • --daemonizeD

    财产价值
    命令行格式--daemonize[={OFF|ON}]
    类型布尔
    默认值OFF

    此选项将使服务器的运行作为一个传统的、分叉的守护程序,允许它与操作系统使用系统过程控制工作。有关更多信息,参见第2.5.9、“系统”管理MySQL服务器

    --daemonize是相互排斥的--initialize--initialize-insecure

    如果服务器开始使用--daemonize选择不连接到一个tty设备,默认的错误日志记录选项--log-error=""采用的是一个明确的记录选项的情况下,直接输出到默认的日志文件。

    -D是同义词--daemonize

  • --datadir=dir_nameHdir_name

    财产价值
    命令行格式--datadir=dir_name
    系统变量datadir
    范围全球
    动态
    看到的是_提示应用
    类型目录名称

    在MySQL服务器数据目录的路径。这个选项设置datadir系统变量。See the description of that变量.

  • --debug[=debug_options]- # [debug_options]

    财产价值
    命令行格式--debug[=debug_options]
    系统变量debug
    范围全球会议
    动态
    看到的是_提示应用
    类型字符串
    默认值(Windows)d:t:i:O,\mysqld.trace
    默认值(UNIX)d:t:i:o,/tmp/mysqld.trace

    如果MySQL的配置与-DWITH_DEBUG=1CMake选项,您可以使用此选项来获得一个跟踪文件什么的mysqld是做。一个典型的debug_options字符串D:T:O,file_name。默认值是D:T:我:啊,/甲氧苄啶/ mysqld.trace我们的Unix andd:t:i:O,\mysqld.trace在Windows

    使用-DWITH_DEBUG=1与调试支持配置MySQL允许您使用--debug="d,parser_debug"当你启动服务器选项。这使得野牛的分析器,用于处理SQL语句转储分析器跟踪服务器的标准错误输出。通常情况下,这种输出写入错误日志。

    此选项可多次。值开始+添加或减去从以前的价值。例如,--debug=T--debug=+P设置值P:T

    有关更多信息,参见第28.5.3,“该计划”

  • --debug-sync-timeout[=N]

    财产价值
    命令行格式--debug-sync-timeout[=#]
    类型整数

    控制是否调试同步设备的测试和调试启用。使用调试同步要求MySQL配置的-DENABLE_DEBUG_SYNC=1CMake(这个选项第2.8.4节,“MySQL源-配置选项”)。如果Debug Sync不能编译,此选项不可用。期权价值是秒超时。默认值是0,禁用调试同步。要启用,指定一个大于0的值;此值也成为个人同步点的默认超时。如果选择了没有价值,超时设置为300秒。

    为说明调试同步设备和如何使用同步点,看MySQL内核:测试同步

  • --default-storage-engine=type

    财产价值
    命令行格式--default-storage-engine=name
    系统变量default_storage_engine
    范围全球会议
    动态
    看到的是_提示应用
    类型枚举
    默认值InnoDB

    为表设置默认存储引擎。看到第十六章,选择存储引擎。这个选项设置为永久表只存储引擎。设置存储引擎TEMPORARY表格设置default_tmp_storage_engine系统变量

    如果你禁用了默认存储引擎在服务器启动时,您必须为永久设置默认引擎TEMPORARY表不同的引擎或服务器无法启动。

  • --default-time-zone=timezone

    财产价值
    命令行格式--default-time-zone=name
    类型字符串

    设置默认的服务器的时区。这个选项设置全局time_zone系统变量。如果没有这个选项,默认的时区是系统时区相同(在给定的值system_time_zone系统变量

  • --defaults-extra-file=file_name

    读此选项文件的全局选项文件(Unix)后,但在用户选项文件。如果文件不存在或无法访问,出现错误。file_name被解释为相对于当前目录,如果给出一个相对路径名称而不是一个完整的路径名。这必须在命令行中的第一个选项,如果是用。

    有关此选项的更多信息,参见第4.2.7,”命令行选项影响选项文件处理”

  • --defaults-file=file_name

    只读指定的选项文件。如果文件不存在或无法访问,出现错误。file_name被解释为相对于当前目录,如果给出一个相对路径名称而不是一个完整的路径名。

    例外:即使--defaults-filemysqldmysqld-auto.cnf

    笔记

    这就必须使用命令行上的第一选择,但如果服务器开始的--defaults-file--install(或--install-manual)选项--install(或--install-manual)必须首先

    有关此选项的更多信息,参见第4.2.7,”命令行选项影响选项文件处理”

  • --defaults-group-suffix=str

    阅读不仅平时选项组,而且组与通常的名称后缀str。例如,mysqld通常读取[mysqld]群组如果--defaults-group-suffix=_other选择了,mysqld也读[mysqld_other]群组

    有关此选项的更多信息,参见第4.2.7,”命令行选项影响选项文件处理”

  • --delay-key-write[={OFF|ON|ALL}]

    财产价值
    命令行格式--delay-key-write[=name]
    系统变量delay_key_write
    范围全球
    动态
    看到的是_提示应用
    类型枚举
    默认值ON
    有效值

    ON

    OFF

    ALL

    指定如何使用延迟关键写道。关键原因延迟写关键缓冲区不被刷新之间写的MyISAM关闭禁用延迟键写ON使延迟那些创建的表和写的关键delay_key_write选项ALL所有的写延迟的关键MyISAM表看到第5.1.1条,“配置服务器”,和第16.2.1,“MyISAM启动选项”

    笔记

    如果你设置这个变量ALL,你不应该使用MyISAM在另一个程序表(如另一个MySQL服务器或myisamchk)当表正在使用。这样做会导致指数腐败。

  • --des-key-file=file_name

    财产价值
    命令行格式--des-key-file=file_name
    过时的是的(除去8.0.3)

    这个选项是在MySQL 8.0.3删除。

  • --early-plugin-load=plugin_list

    财产价值
    命令行格式--early-plugin-load=plugin_list
    类型字符串
    默认值empty string

    这个选项告诉服务器插件加载之前加载强制内置插件和在存储引擎初始化。如果多个--early-plugin-load选择了,只有最后一个是用。

    期权的价值是一个分号分隔的列表name=plugin_libraryplugin_library价值观。每个name是一个插件加载的名字,和plugin_library是包含插件的代码库文件的名称。如果一个插件库是没有任何插件的名称命名之前,服务器加载所有插件在图书馆。该服务器查找目录中指定的插件库文件plugin_dir系统变量

    例如,如果插件命名myplug1myplug2有库文件myplug1.somyplug2.so,使用此选项来执行一个早期的插件加载:

    shell> mysqld --early-plugin-load="myplug1=myplug1.so;myplug2=myplug2.so"
    

    行情是在参数值用否则分号(;)被解释为通过一些命令解释器的特殊字符。(UNIX shell作为命令终止符,例如。)

    每个指定的插件加载早期为一个单一的调用mysqld只有在重新启动后,插件没有加载早期除非--early-plugin-load又用了

    如果服务器开始使用--initialize--initialize-insecure指定的,插件--early-plugin-load不加载

    如果服务器运行--help指定的,插件--early-plugin-load加载但未初始化。这种行为使插件选项的帮助信息显示。

    默认的--early-plugin-load值为空。加载keyring_file插件,你必须使用一个显式的--early-plugin-load期权与非空值

    这个InnoDB表空间加密功能依赖于keyring_file加密密钥管理插件,和keyring_file插件必须加载存储引擎初始化前方便InnoDB加密表恢复。管理者要keyring_file插件启动时加载应使用适当的非空的期权价值;例如,keyring_file.so在UNIX和类UNIX系统keyring_file.dll在Windows

    有关InnoDBTabesace enCRyumtion,see第15.7.11,“InnoDB表空间加密”。关于插件加载的一般信息,看第5.6.1,“安装和卸载插件”

  • --enable-named-pipe

    财产价值
    命令行格式--enable-named-pipe
    特定平台Windows

    启用命名管道支持。此选项仅适用于Windows。

  • --event-scheduler[=value]

    财产价值
    命令行格式--event-scheduler[=value]
    系统变量event_scheduler
    范围全球
    动态
    看到的是_提示应用
    类型枚举
    默认值(>= 8.0.3)ON
    默认值(<= 8.0.2)OFF
    有效值

    ON

    OFF

    DISABLED

    启用或禁用,并启动或停止,事件调度器。

    有关详细信息,参见这个--event-scheduler选项

  • --exit-info[=flags]T [flags]

    财产价值
    命令行格式--exit-info[=flags]
    类型整数

    这是一位不同的标志,你可以使用调试mysqld服务器不要使用这个选项,除非你知道确切地它是做什么的!

  • --external-locking

    财产价值
    命令行格式--external-locking
    类型布尔
    默认值FALSE

    使外部锁定(系统锁定),这是默认情况下禁用。如果你使用这个选项,在系统lockd不完全的工作(如Linux),很容易mysqld死锁

    禁用外部锁定明确,使用--skip-external-locking

    外锁只影响MyISAM表访问。更多信息,包括在它可以使用的条件下,看8.11.5部分,“外锁”

  • --flush

    财产价值
    命令行格式--flush
    系统变量flush
    范围全球
    动态
    看到的是_提示应用
    类型布尔
    默认值OFF

    同花顺(同步)的所有更改磁盘的每个SQL语句后。通常情况下,MySQL会写所有的变化只有每个SQL语句后盘,让操作系统处理同步到磁盘。看到第b.5.3.3,“做什么如果MySQL总是死机”

    笔记

    如果--flush指定的值flush_time不要紧,改变flush_time在冲洗行为无影响

  • --gdb

    财产价值
    命令行格式--gdb
    类型布尔
    默认值FALSE

    安装中断处理程序SIGINT(需要停止mysqld^C设置断点)和禁用堆栈跟踪和核心文件处理。看到28.5节,“调试和移植MySQL”

    在Windows中,此选项也抑制分叉,用来实现RESTART声明:分叉使一个过程作为一个监控到其他,作为服务器。然而,分叉使得确定服务器进程附加到调试比较困难,所以启动服务器--gdb抑制分叉。一个服务器上启动这个选项,RESTART只是退出不重新启动

    在非调试设置,--no-monitor可用于抑制分叉的过程监控。

  • --general-log[={0|1}]

    财产价值
    命令行格式--general-log
    系统变量general_log
    范围全球
    动态
    看到的是_提示应用
    类型布尔
    默认值OFF

    指定初始状态的通用查询日志。没有争论或争吵的一,--general-log启用日志。如果省略或给予0参数,选择禁用日志。

  • --initialize-

    财产价值
    命令行格式--initialize
    类型布尔
    默认值OFF

    这个选项用来初始化一个MySQL安装通过创建数据目录和填充表中mysql系统数据库。有关更多信息,参见部分2.9.1.1,“初始化使用mysqld”手动数据目录

    当服务器开始--initialize一些功能是不可用的,这限制了报表中的任何文件被允许-初始化文件选项更多信息,见该选项的描述。此外,该disabled_storage_engines系统变量没有影响

    --initialize是相互排斥的--daemonize

    -I是同义词--initialize

  • --initialize-insecure

    财产价值
    命令行格式--initialize-insecure
    类型布尔
    默认值OFF

    这个选项用来初始化一个MySQL安装通过创建数据目录和填充表中mysql系统数据库。这个选择意味着--initialize。更多信息,见该选项的描述,以及部分2.9.1.1,“初始化使用mysqld”手动数据目录

    --initialize-insecure是相互排斥的--daemonize

  • --init-file=file_name

    财产价值
    命令行格式--init-file=file_name
    系统变量init_file
    范围全球
    动态
    看到的是_提示应用
    类型文件名

    在启动时从该文件读取SQL语句。每个语句必须在一行上,不应包括评论。

    如果服务器开始的--initialize--initialize-insecure期权,它在bootstap模式和一些功能是不可用的,限制了报表文件允许。这些包括有关帐户管理报表(如CREATE USERGRANT(b)、复制、和全球移动身份识别。See部分下面,“复制与全球事务标识符”

  • --innodb-xxx

    设置的选项InnoDB存储引擎。这个InnoDB期权上市15.13节,“InnoDB启动选项和系统变量”

  • --install [service_name]

    财产价值
    命令行格式--install [service_name]
    特定平台Windows

    (Windows)安装服务器作为Windows服务在Windows启动时自动启动。默认的服务名称MySQL如果没有service_name值了。有关更多信息,参见第2.3.5.8,“启动MySQL作为Windows服务”

    笔记

    如果服务器开始的--defaults-file--install选项,--install首先必须

  • --install-manual [service_name]

    财产价值
    命令行格式--install-manual [service_name]
    特定平台Windows

    (Windows)安装服务器作为Windows服务,必须手动启动。它不在Windows启动时自动启动。默认的服务名称MySQL如果没有service_name值了。有关更多信息,参见第2.3.5.8,“启动MySQL作为Windows服务”

    笔记

    如果服务器开始的--defaults-file--install-manual选项,--install-manual首先必须

  • --language=lang_name, -L lang_name

    财产价值
    命令行格式--language=name
    过时的是的;使用lc-messages-dir
    系统变量language
    范围全球
    动态
    看到的是_提示应用
    类型目录名称
    默认值/usr/local/mysql/share/mysql/english/

    语言使用的错误信息lang_name可以作为语言的名称或完整路径名的目录下的语言文件安装。看到10.11节,“设置错误消息的语言”

    --lc-messages-dir--lc-messages应使用而不是--language,这是不(和处理作为一个别名--lc-messages-dir)。这个--language选择将在未来的MySQL版本中删除。

  • --large-pages

    财产价值
    命令行格式--large-pages
    系统变量large_pages
    范围全球
    动态
    看到的是_提示应用
    特定平台Linux
    类型布尔
    默认值FALSE

    一些硬件/操作系统架构,支持内存页面大于默认的(通常是4KB)。这种支持实际的实现依赖于底层的硬件和操作系统。执行大量内存的应用程序的访问可以通过使用大页面由于减少了翻译Lookaside Buffer获得的性能改进(TLB)错过。

    MySQL支持大页支持Linux的实现(即hugetlb Linux)。看到第8.12.3.2,“使大页面支持”。对于大页Solaris支持,看到的描述--super-large-pages选项

    --large-pages默认是禁用的

  • --lc-messages=locale_name

    财产价值
    命令行格式--lc-messages=name
    系统变量lc_messages
    范围全球会议
    动态
    看到的是_提示应用
    类型字符串
    默认值en_US

    现场使用的错误信息。默认值是en_US。服务器将论证语言名称并将其与价值--lc-messages-dir为错误信息文件产生的位置。看到10.11节,“设置错误消息的语言”

  • --lc-messages-dir=dir_name

    财产价值
    命令行格式--lc-messages-dir=dir_name
    系统变量lc_messages_dir
    范围全球
    动态
    看到的是_提示应用
    类型目录名称

    目录错误信息定位。服务器使用价值与价值--lc-messages为错误信息文件产生的位置。看到10.11节,“设置错误消息的语言”

  • --local-service

    财产价值
    命令行格式--local-service

    (Windows)一--local-service选择以下服务名称导致服务器运行使用LocalServiceWindows帐户限制了系统权限。如果两--defaults-file——本地服务给出下面的服务的名称,他们可以以任何顺序。看到第2.3.5.8,“启动MySQL作为Windows服务”

  • --log-error[=file_name]

    财产价值
    命令行格式--log-error[=file_name]
    系统变量log_error
    范围全球
    动态
    看到的是_提示应用
    类型文件名

    设置默认的错误日志的目的来命名的文件。这影响到日志作家依据自己的输出目的地的预设目的。看到5.4.2部分,“错误日志”

    如果选择没有名字的文件,在UNIX和类UNIX系统默认的错误日志的目的是一个文件名为host_name.err在数据目录。在Windows默认的目的是一样的,除非--pid-file指定选项。在这种情况下,文件名是PID文件基本名和后缀错误在数据目录

    如果选项名称的文件,默认的是文件(与目的地.err后缀,如果名字没有后缀),位于数据目录下,除非绝对路径名指定一个不同的位置。

    如果错误日志输出不能重定向到错误日志文件,发生了一个错误,启动失败。

    在Windows,--console优先于--log-error如果两者都。在这种情况下,默认的错误日志的目的是安慰而不是文件。

  • --log-isam[=file_name]

    财产价值
    命令行格式--log-isam[=file_name]
    类型文件名

    所有的日志MyISAM对此文件的更改(仅用于调试的时候MyISAM

  • --log-output=value,...

    财产价值
    命令行格式--log-output=name
    系统变量log_output
    范围全球
    动态
    看到的是_提示应用
    类型配置
    默认值FILE
    有效值

    TABLE

    FILE

    NONE

    这个选项决定了通用查询日志和慢查询日志输出的目标。选项的值可以作为一个或多个单词TABLE文件,或NONE选择日志的general_logslow_log表中的mysql数据库作为一个旅游目的地。文件选择日志日志文件作为一个旅游目的地。NONEdisables测井。如果在期权价值的存在,它优先于任何其他的话,现在。TABLE文件都可以考虑选择日志输出目的地。

    这个选项选择日志输出的目的地,但不启用日志输出。要做到这一点,使用--general_log--slow_query_log选项为文件记录的--general_log_file- slow distress in the way of the log delivering file选择日志文件的位置。有关更多信息,参见5.4.1部分,“选择通用查询和慢查询日志输出目的地”

  • --log-queries-not-using-indexes

    财产价值
    命令行格式--log-queries-not-using-indexes
    系统变量log_queries_not_using_indexes
    范围全球
    动态
    看到的是_提示应用
    类型布尔
    默认值OFF

    如果你使用这个选项与慢查询日志启用,预计将检索所有行记录查询。看到第5.4.5、“慢查询日志”。此选项不一定意味着不使用索引。例如,一个查询,使用全索引扫描使用索引但会记录因为指数不会限制的行数。

  • --log-raw

    财产价值
    命令行格式--log-raw[=value]
    类型布尔
    默认值OFF

    在某些语句写入通用查询日志的密码,慢查询日志,和二进制日志重写服务器不在普通文本字面上出现。密码修改可以被抑制的通用查询日志通过启动服务器与--log-raw选项此选项可用于诊断目的是有用的,看报表服务器收到的确切的文字,但出于安全原因,不建议用于生产。

    如果安装了查询重写插件的--log-raw选项影响语句记录如下:

    • 没有--log-raw,服务器日志中的语句返回的查询重写插件。这可能与声明收到。

    • --log-raw原来,服务器日志语句接收。

    有关更多信息,参见第6.1.2.3,“密码登录”

  • --log-short-format

    财产价值
    命令行格式--log-short-format
    类型布尔
    默认值FALSE

    日志信息少的慢查询日志,如果它已被激活。

  • --log-tc=file_name

    财产价值
    命令行格式--log-tc=file_name
    类型文件名
    默认值tc.log

    的内存映射事务日志文件的名称(对XA事务的影响多个存储引擎时禁用二进制日志)。默认名称是tc.log。文件创建数据目录下如果没有给出一个完整的路径名。这个选项是无用的。

  • --log-tc-size=size

    财产价值
    命令行格式--log-tc-size=#
    类型整数
    默认值6 * page size
    最小值6 * page size
    最大值(64位平台)18446744073709551615
    最大值(32位平台)4294967295

    在内存映射事务日志的字节大小。默认值和最小值的页面大小六次,和值必须是页面大小的倍数。

  • --log-warnings[=level]w [level]

    财产价值
    命令行格式--log-warnings[=#]
    过时的是的(除去8.0.3)
    系统变量log_warnings
    范围全球
    动态
    看到的是_提示应用
    类型整数
    默认值2
    最小值0
    最大值(64位平台)18446744073709551615
    最大值(32位平台)4294967295

    这个选项是在MySQL 8.0.3删除。使用log_error_verbosity系统变量来代替

  • --low-priority-updates

    财产价值
    命令行格式--low-priority-updates
    系统变量low_priority_updates
    范围全球会议
    动态
    看到的是_提示应用
    类型布尔
    默认值FALSE

    给表的修改操作(INSERTREPLACEDELETEUPDATE比选择优先级较低)。这也可以通过使用{ |取代|删除|更新} low_priority…较低的只有一个查询的优先级,或SET LOW_PRIORITY_UPDATES=1在一个线程的优先级的变化。这仅影响存储引擎只使用表级锁(MyISAMMEMORY合并)。这第8.11.2,“表锁定问题”

  • --min-examined-row-limit=number

    财产价值
    命令行格式--min-examined-row-limit=#
    系统变量min_examined_row_limit
    范围全球会议
    动态
    看到的是_提示应用
    类型整数
    默认值0
    最小值0
    最大值(64位平台)18446744073709551615
    最大值(32位平台)4294967295

    当这个选项被设置,查询检查少于number行不写入慢查询日志。默认值为0。

  • --memlock

    财产价值
    命令行格式--memlock
    类型布尔
    默认值FALSE

    mysqld在记忆过程。这个选项可以帮助如果你有一个问题,操作系统是造成mysqld交换到磁盘

    --memlock系统支持工作mlockall(的)系统调用;这包括Solaris,大多数Linux发行版,使用2.4或更高的内核,也许其他的UNIX系统。在Linux系统中,你可以告诉是否mlockall()(因此这个选项)是通过检查看是否是系统中定义的支持MMAN。H文件,这样:

    shell> grep mlockall /usr/include/sys/mman.h
    

    如果mlockall()是支持的,你应该看到在前面的命令类似下面的输出:

    mlockall外部中断(INT _ _旗)_ _ throw;
    重要

    使用此选项可以要求你运行的服务器root,其中,由于安全的原因,通常不是一个好主意。看到6.1.5节,“如何运行MySQL作为一个正常的用户

    在Linux和其他系统,你可以避免需要运行的服务器root通过改变limits.conf文件对于memlock限制看笔记第8.12.3.2,“使大页面支持”

    你不应该尝试使用这个选项的系统上不支持mlockall()系统调用;如果你这样做,mysqld很可能崩溃当你试图启动它。

  • --myisam-block-size=N

    财产价值
    命令行格式--myisam-block-size=#
    类型整数
    默认值1024
    最小值1024
    最大值16384

    块的大小为MyISAM索引页

  • --myisam-recover-options[=option[,option]...]]

    财产价值
    命令行格式--myisam-recover-options[=name]
    类型枚举
    默认值OFF
    有效值

    OFF

    DEFAULT

    BACKUP

    FORCE

    QUICK

    设置MyISAM存储引擎恢复模式。期权价值是价值观的任何组合关闭DEFAULT备份FORCE,或。如果指定多个值,用逗号分开。指定的选项没有参数是指定相同的DEFAULT,并指定一个明确的价值“”禁用恢复(同一价值OFF)。如果恢复启用,每次mysqld打开一个MyISAM表,检查表是否标记为坠毁或没有正确关闭。(如果你是与外部锁定禁用。运行的最后一个选项的作品)如果是这样的话,mysqld在桌上的检查。如果表已损坏,mysqld尝试修复它

    下列选项如何影响维修工程。

    选项描述
    OFF没有恢复
    DEFAULT恢复没有备份,强迫,或快速检测。
    BACKUP如果数据改变了文件在恢复过程中,保存的备份tbl_name.MYD文件tbl_name-datetime.bak
    FORCE即使我们会失去超过一行从运行恢复.MYD文件
    QUICK不检查表中的行,如果没有删除块。

    在服务器自动修表,它写到修复错误日志记录。如果你希望能够从大多数问题恢复,无需用户干预,你应该使用的选项BACKUP,FORCE。这迫使一个修表即使一些列将被删除,但保留旧的数据文件作为备份以便以后可以查看发生了什么事。

    看到第16.2.1,“MyISAM启动选项”

  • --no-defaults

    不要读任何选项文件。如果程序启动失败,由于从一个选项文件阅读未知的选项,--no-defaults可以用来防止读。这必须在命令行中的第一个选项,如果是用。

    有关此选项的更多信息,参见第4.2.7,”命令行选项影响选项文件处理”

  • --no-dd-upgrade

    财产价值
    命令行格式--no-dd-upgrade
    介绍8.0.4
    类型布尔
    默认值FALSE

    避免了数据字典表的自动升级启动MySQL服务器时。这个选项通常用于当启动MySQL服务器在MySQL服务器升级到新的版本,其中可能包括数据字典表的定义中的变化。

    什么时候--no-dd-upgrade指定的服务器,发现服务器数据字典版本不同,存储在数据字典的版本,启动失败,错误信息:数据字典升级是禁止的。

    正常启动时,服务器的数据字典版本相比,存储在数据字典来确定数据字典表的定义应该是升级版。如果升级是必要的,支持的,服务器的数据字典表更新的定义创建副本的元数据,坚持新表,自动替换旧表换新的,并重新初始化数据字典。如果升级是不必要的,启动继续不更新数据字典表。

  • --no-monitor

    财产价值
    命令行格式--no-monitor
    介绍8.0.12
    特定平台Windows
    类型布尔
    默认值FALSE

    (Windows)。这个选项会抑制分叉,用来实现RESTART声明:分叉使一个过程作为一个监控到其他,作为服务器。一个服务器上启动这个选项,RESTART只是退出不重新启动

    --no-monitorMySQL 8.0.12之前不可用。这个--gdb选择可以使用

  • --old-alter-table

    财产价值
    命令行格式--old-alter-table
    系统变量old_alter_table
    范围全球会议
    动态
    看到的是_提示应用
    类型布尔
    默认值OFF

    当这个选项,服务器不使用处理的优化方法ALTER TABLE运营它将使用一个临时表,在数据复制,然后重命名临时表的原件,由MySQL 5和更早的使用。在操作的更多信息ALTER TABLE,看到第13.1.8,“ALTER TABLE语法”

  • --old-style-user-limits

    财产价值
    命令行格式--old-style-user-limits
    类型布尔
    默认值FALSE

    使老用户限制。(在MySQL 5.0.3,考虑资源限制数分别为每个主机从一个用户帐户连接而不是每行中usertable)第6.3.6,“设置账户资源限制”

  • --open-files-limit=count

    财产价值
    命令行格式--open-files-limit=#
    系统变量open_files_limit
    范围全球
    动态
    看到的是_提示应用
    类型整数
    默认值5000, with possible adjustment
    最小值0
    最大值platform dependent

    变化可用文件描述符的数量mysqld。你应该尝试增加此选项的值如果mysqld给你的错误Too many open filesmysqld运用期权价值保留描述符setrlimit()。在内部,这个选项的最大值是最大的无符号整数的值,但实际的最大值是依赖于平台。如果文件描述符的请求的数目不能分配,mysqld写入错误日志警告

    mysqld可以尝试分配超过描述符请求的数量(如果有的话),使用的值max_connectionstable_open_cache判断是否需要更多的描述。

    在Unix上,该值不能大于ulimit n

  • --performance-schema-xxx

    配置一个性能模式选项。详情见25.13节,“性能模式命令选项”

  • --pid-file=file_name

    财产价值
    命令行格式--pid-file=file_name
    系统变量pid_file
    范围全球
    动态
    看到的是_提示应用
    类型文件名

    进程的ID文件的路径名。服务器创建的数据目录的文件除非绝对路径名是给指定一个不同的目录。如果指定此选项,您必须指定一个值。如果不指定此选项,MySQL使用默认值host_name.pid,在那里host_name是主机名称

    进程ID文件被其它程序如用_ mysqld safe确定服务器的进程ID,在Windows中,这个变量也影响默认的错误日志文件的名称。看到5.4.2部分,“错误日志”

  • --plugin-xxx

    指定一个选项,服务器插件有关。例如,许多存储引擎可以内置插件,和这样的发动机,选择他们可以指定一个--plugin前缀.因此,该--innodb_file_per_table选项InnoDB可以指定为--plugin-innodb_file_per_table

    布尔选项可启用或禁用,这--skip前缀和其他格式的支持以及(见4.2.5节,“程序”选项修改”)。例如,--skip-plugin-innodb_file_per_table禁用innodb_file_per_table

    的理论基础--plugin前缀是使插件选项来指定明确的如果有一个内置的服务器选项名称冲突。例如,一个插件作者的名字一个插件SQL和实施模式选项,选项名称可能--sql-mode,这将具有相同名称的内置选项冲突。在这种情况下,对冲突的名称引用的内置选项有利于解决。为了避免歧义,用户可以指定插件选项——插件的SQL模式。使用的--plugin插件选项前缀建议回避任何问题的模糊性。

  • --plugin-load=plugin_list

    财产价值
    命令行格式--plugin-load=plugin_list
    类型字符串

    这个选项告诉服务器在启动时加载指定的插件。如果多个--plugin-load选择了,只有最后一个是用。额外的插件加载可以指定使用--plugin-load-add选项

    期权的价值是一个分号分隔的列表name=plugin_libraryplugin_library价值观。每个name是一个插件加载的名字,和plugin_library是包含插件的代码库文件的名称。如果一个插件库是没有任何插件的名称命名之前,服务器加载所有插件在图书馆。该服务器查找目录中指定的插件库文件plugin_dir系统变量

    例如,如果插件命名myplug1myplug2有库文件myplug1.somyplug2.so,使用此选项来执行一个早期的插件加载:

    shell> mysqld --plugin-load="myplug1=myplug1.so;myplug2=myplug2.so"
    

    报价是这里的参数值使用分号(否则;)被解释为通过一些命令解释器的特殊字符。(UNIX shell作为命令终止符,例如。)

    每个指定的插件是一个调用加载mysqld只有在重新启动后,该插件不装除--plugin-load再次使用。这是在对比INSTALL PLUGIN,以添加一个条目mysql.plugins表的插件是每一个正常的服务器启动时加载。

    在正常启动,服务器确定哪些插件加载通过阅读mysql.plugins系统表。如果服务器开始的--skip-grant-tables选项,它不咨询mysql.plugins表和不加载插件列出--plugin-load使插件被加载时--skip-grant-tables给出了--plugin-load也使插件是在启动时,无法在运行时加载加载。

    关于插件加载的更多信息,参见第5.6.1,“安装和卸载插件”

  • --plugin-load-add=plugin_list

    财产价值
    命令行格式--plugin-load-add=plugin_list
    类型字符串

    这个选项的补充--plugin-load选项--plugin-load-add添加一个插件或插件,插件可以在启动时加载设置。参数格式相同--plugin-load--plugin-load-add可以用来避免指定一大套插件作为一个单一的长笨重--plugin-load争论

    --plugin-load-add可以在没有了--plugin-load,但任何实例--plugin-load-add之前出现的--plugin-load。没有影响,因为--plugin-load重置插件的设置加载。换句话说,这些选项:

    --plugin-load=x --plugin-load-add=y

    相当于这个选项:

    --plugin-load="x;y"
    

    但这些选项:

    --plugin-load-add=y --plugin-load=x
    

    相当于这个选项:

    --plugin-load=x
    

    关于插件加载的更多信息,参见第5.6.1,“安装和卸载插件”

  • --port=port_numPport_num

    财产价值
    命令行格式--port=#
    系统变量port
    范围全球
    动态
    看到的是_提示应用
    类型整数
    默认值3306
    最小值0
    最大值65535

    端口号时使用侦听TCP/IP连接。在UNIX和类UNIX系统中,端口号必须是1024或更高,除非服务器来启动root系统用户

  • --port-open-timeout=num

    财产价值
    命令行格式--port-open-timeout=#
    类型整数
    默认值0

    在一些系统中,当服务器停止,TCP / IP端口可能不会立即变得可用。如果服务器是快速启动之后,重新打开端口的尝试可能会失败。这个选项表示服务器如果它不能打开等待TCP / IP端口成为自由多少秒。默认是不等待。

  • --print-defaults

    打印程序的名字和所有的选项,从选项文件获取。密码值是掩盖。这就必须使用命令行上的第一选择,但它可以立即使用后--defaults-file--defaults-extra-file

    有关此选项的更多信息,参见第4.2.7,”命令行选项影响选项文件处理”

  • --remove [service_name]

    财产价值
    命令行格式--remove [service_name]
    特定平台Windows

    (Windows)删除MySQL的Windows服务。默认的服务名称MySQL如果没有service_name值了。有关更多信息,参见第2.3.5.8,“启动MySQL作为Windows服务”

  • --safe-user-create

    财产价值
    命令行格式--safe-user-create
    类型布尔
    默认值FALSE

    如果启用此选项,用户不能创建新的MySQL用户使用GRANT声明除非用户有INSERT特权的mysql.user表中的表或列。如果你希望用户必须创建新的,有那些权限,用户有权授予用户的能力,你应该给用户以下的特权:

    GRANT INSERT(user) ON mysql.user TO 'user_name'@'host_name';
    

    这将确保用户不能更改任何特权柱直接,但使用GRANT声明给权限的其他用户。

  • --secure-auth

    财产价值
    命令行格式--secure-auth
    过时的是的(除去8.0.3)
    系统变量secure_auth
    范围全球
    动态
    看到的是_提示应用
    类型布尔
    默认值ON
    有效值ON

    这个选项是在MySQL 8.0.3删除。

  • --secure-file-priv=dir_name

    财产价值
    命令行格式--secure-file-priv=dir_name
    系统变量secure_file_priv
    范围全球
    动态
    看到的是_提示应用
    类型字符串
    默认值platform specific
    有效值

    empty string

    dirname

    NULL

    这个选项设置secure_file_priv系统变量,它是用来限制进出口数据操作的影响,如那些由LOAD DATASELECT ... INTO OUTFILE报表和LOAD_FILE()功能。更多信息,见描述secure_file_priv

  • --shared-memory

    财产价值
    命令行格式--shared-memory[={0,1}]
    系统变量shared_memory
    范围全球
    动态
    看到的是_提示应用
    特定平台Windows
    类型布尔
    默认值FALSE

    启用共享内存连接的本地客户端。此选项仅可用于Windows。

  • --shared-memory-base-name=name

    财产价值
    命令行格式--shared-memory-base-name=name
    系统变量shared_memory_base_name
    范围全球
    动态
    看到的是_提示应用
    特定平台Windows
    类型字符串
    默认值MYSQL

    使用共享内存连接的共享内存名。此选项仅可用于Windows。默认名称是MYSQL。的名称是区分大小写的。

  • --skip-concurrent-insert

    关闭选择和插入在同一时间的能力MyISAM表(这是只有当你认为你已经发现了这个特点。错误使用)看第8.11.3,并发插入”

  • --skip-event-scheduler

    财产价值
    命令行格式

    --skip-event-scheduler

    --disable-event-scheduler

    旋转的事件schedulerOFF。这是不是禁用事件调度程序相同,这就需要设置--event-scheduler=DISABLED它;这个--event-scheduler选项为更多的信息

  • --skip-grant-tables

    财产价值
    命令行格式--skip-grant-tables
    类型布尔
    默认值FALSE

    此选项会导致服务器不使用特权制度开始,访问服务器给任何人不受限制地访问所有数据库。你可以使一个正在运行的服务器开始使用授权表再次被执行mysqladmin嵌入式的权利mysqladmin加载从一个系统的shell命令,或通过发行一个MySQLFLUSH PRIVILEGES连接到服务器后的声明。

    如果服务器开始的--skip-grant-tables选项来禁用认证检查,服务器使--skip-networking自动进行远程连接

    这个选项也会导致服务器抑制其启动顺序的用户自定义函数(UDF)的加载过程中,预定的事件,和插件,安装了INSTALL PLUGIN声明。因为插件被加载了,用--plugin-load选项--skip-grant-tables也使disabled_storage_engines系统变量没有影响

    此选项不会引起负载服务器组件可以在服务器启动抑制。

    FLUSH PRIVILEGES可能是由其他执行隐式启动后执行的动作。例如,mysql_upgrade冲特权升级过程

  • --skip-host-cache

    财产价值
    命令行格式--skip-host-cache

    禁用更快的名到IP解决内部主机使用缓存。在这种情况下,服务器执行DNS查找每一个客户端连接。看到第8.12.4.2,“DNS查询优化和主机缓存”

    使用--skip-host-cache类似的设置host_cache_size系统变量为0,但host_cache_size更灵活,因为它可以用来调整,启用或禁用运行时主机的缓存,而不只是在服务器启动。

    如果你启动服务器--skip-host-cache,这并不妨碍价值的变化host_cache_size,但这种变化没有影响,即使不重新启用缓存host_cache_size设置大于0

  • --skip-innodb

    禁用InnoDB存储引擎。在这种情况下,因为默认的存储引擎InnoDB,服务器将无法启动,除非你同时使用--default-storage-engine--default-tmp-storage-engine设置默认的一些其他引擎的永久和临时

    这个InnoDB存储引擎无法禁用,和--skip-innodb期权是过时的、没有效果。它在警告使用结果。此选项将在未来的MySQL版本中删除。

  • --skip-name-resolve

    财产价值
    命令行格式--skip-name-resolve
    系统变量skip_name_resolve
    范围全球
    动态
    看到的是_提示应用
    类型布尔
    默认值OFF

    不解决主机名时检查客户端连接。使用唯一的IP地址。如果你使用这个选项,所有Host在授权表列的值必须是IP地址。看到第8.12.4.2,“DNS查询优化和主机缓存”

    根据您的系统配置和网络Host你的客户价值,客户可能需要使用显式连接——主机选项,如--host=127.0.0.1--host=::1

    试图连接到主机127.0.0.1通常解决的本地服务器账户然而,这个失败如果服务器运行的--skip-name-resolve选项如果你打算这样做,确保帐户存在可接受的连接。例如,可以连接root使用--host=127.0.0.1--host=::1创建这些帐户:

    CREATE USER 'root'@'127.0.0.1' IDENTIFIED BY 'root-password';
    CREATE USER 'root'@'::1' IDENTIFIED BY 'root-password';
    
  • --skip-networking

    财产价值
    命令行格式--skip-networking
    系统变量skip_networking
    范围全球
    动态
    看到的是_提示应用

    不要听TCP/IP连接在所有。所有的相互作用mysqld必须使用命名管道和共享内存(Windows)或UNIX套接字文件(Unix)。这个选项是高度推荐的系统,只允许本地客户。看到第8.12.4.2,“DNS查询优化和主机缓存”

    如果服务器开始的--skip-grant-tables选项来禁用认证检查,服务器使--skip-networking远程连接

  • --ssl*

    选项,从--ssl指定是否允许客户端连接使用SSL和在哪里可以找到的SSL密钥和证书。看到第6.4.2,“加密连接”命令选项

  • --standalone

    财产价值
    命令行格式--standalone
    特定平台Windows

    只在Windows上可用的;指示MySQL服务器没有运行作为一项服务。

  • --super-large-pages

    财产价值
    命令行格式--super-large-pages
    特定平台Solaris
    类型布尔
    默认值FALSE

    在MySQL中尝试使用最大尺寸的支持大页面标准使用,高达4MB。Solaris下,一个超级大页功能使使用页面达到256MB。此功能适用于最近的SPARC平台。它可以启用或禁用使用--super-large-pages--skip-super-large-pages选项

  • --symbolic-links--skip-symbolic-links

    财产价值
    命令行格式--symbolic-links
    过时的8.0.2
    类型布尔
    默认值(>= 8.0.2)OFF
    默认值(<= 8.0.1)ON

    启用或禁用符号链接的支持。在Unix上,使符号链接,意味着你可以链接MyISAM索引文件和数据文件到另一个目录的索引目录DATA DIRECTORY期权的CREATE TABLE声明。如果你删除或重命名该表,文件的符号链接指向也删除或重命名。看到第8.12.2.2,“使用MyISAM表在UNIX”符号链接

    笔记

    符号链接的支持,随着的--symbolic-links选择控制它,是过时的、将在未来版本的MySQL移除。此外,该选项默认是禁用的。相关have_symlink系统变量也是过时的、将在未来版本的MySQL移除。

    这个选项在Windows没有意义。

  • --skip-show-database

    财产价值
    命令行格式--skip-show-database
    系统变量skip_show_database
    范围全球
    动态
    看到的是_提示应用

    这个选项设置skip_show_database系统变量控制允许使用SHOW DATABASES声明。看到第5.1.7,服务器“系统变量”

  • --skip-stack-trace

    财产价值
    命令行格式--skip-stack-trace

    不写的堆栈跟踪。这个选项是有用的当你运行mysqld在调试器下。在某些系统上,你还必须用这个选项来获得一个核心文件。看到28.5节,“调试和移植MySQL”

  • --slow-query-log[={0|1}]

    财产价值
    命令行格式--slow-query-log
    系统变量slow_query_log
    范围全球
    动态
    看到的是_提示应用
    类型布尔
    默认值OFF

    指定初始慢查询日志的状态。没有争论或争吵的1,--slow-query-log启用日志。如果省略或给予0参数,选择禁用日志。

  • --slow-start-timeout=timeout

    财产价值
    命令行格式--slow-start-timeout=#
    类型整数
    默认值15000

    这个选项控制Windows服务控制管理器服务启动超时。价值是在试图杀死Windows服务在启动服务控制管理器等的最大毫秒数。默认值是15000(15秒)。如果MySQL服务需要太长的时间开始,你可能需要增加这个值。值意味着没有超时。

  • --socket=path

    财产价值
    命令行格式--socket={file_name|pipe_name}
    系统变量socket
    范围全球
    动态
    看到的是_提示应用
    类型字符串
    默认值(其他)/tmp/mysql.sock
    默认值(Windows)MySQL

    在Unix上,此选项指定要使用的时候听本地连接UNIX socket文件。默认值是/tmp/mysql.sock。如果此选项,服务器创建的数据目录的文件除非绝对路径名是给指定一个不同的目录。在Windows中,该选项指定的管道名称使用的时候听本地连接使用命名管道。默认值是MySQL(不区分大小写)

  • --sql-mode=value[,value[,value...]]

    财产价值
    命令行格式--sql-mode=name
    系统变量sql_mode
    范围全球会议
    动态
    看到的是_提示应用
    类型配置
    默认值(>= 8.0.11)ONLY_FULL_GROUP_BY STRICT_TRANS_TABLES NO_ZERO_IN_DATE NO_ZERO_DATE ERROR_FOR_DIVISION_BY_ZERO NO_ENGINE_SUBSTITUTION
    默认值(<= 8.0.4)ONLY_FULL_GROUP_BY STRICT_TRANS_TABLES NO_ZERO_IN_DATE NO_ZERO_DATE ERROR_FOR_DIVISION_BY_ZERO NO_AUTO_CREATE_USER NO_ENGINE_SUBSTITUTION
    有效值(>= 8.0.11)

    ALLOW_INVALID_DATES

    ANSI_QUOTES

    ERROR_FOR_DIVISION_BY_ZERO

    HIGH_NOT_PRECEDENCE

    IGNORE_SPACE

    NO_AUTO_VALUE_ON_ZERO

    NO_BACKSLASH_ESCAPES

    NO_DIR_IN_CREATE

    NO_ENGINE_SUBSTITUTION

    NO_UNSIGNED_SUBTRACTION

    NO_ZERO_DATE

    NO_ZERO_IN_DATE

    ONLY_FULL_GROUP_BY

    PAD_CHAR_TO_FULL_LENGTH

    PIPES_AS_CONCAT

    REAL_AS_FLOAT

    STRICT_ALL_TABLES

    STRICT_TRANS_TABLES

    TIME_TRUNCATE_FRACTIONAL

    有效值(>= 8.0.1, <= 8.0.4)

    ALLOW_INVALID_DATES

    ANSI_QUOTES

    ERROR_FOR_DIVISION_BY_ZERO

    HIGH_NOT_PRECEDENCE

    IGNORE_SPACE

    NO_AUTO_CREATE_USER

    NO_AUTO_VALUE_ON_ZERO

    NO_BACKSLASH_ESCAPES

    NO_DIR_IN_CREATE

    NO_ENGINE_SUBSTITUTION

    NO_FIELD_OPTIONS

    NO_KEY_OPTIONS

    NO_TABLE_OPTIONS

    NO_UNSIGNED_SUBTRACTION

    NO_ZERO_DATE

    NO_ZERO_IN_DATE

    ONLY_FULL_GROUP_BY

    PAD_CHAR_TO_FULL_LENGTH

    PIPES_AS_CONCAT

    REAL_AS_FLOAT

    STRICT_ALL_TABLES

    STRICT_TRANS_TABLES

    TIME_TRUNCATE_FRACTIONAL

    有效值(8.0.0)

    ALLOW_INVALID_DATES

    ANSI_QUOTES

    ERROR_FOR_DIVISION_BY_ZERO

    HIGH_NOT_PRECEDENCE

    IGNORE_SPACE

    NO_AUTO_CREATE_USER

    NO_AUTO_VALUE_ON_ZERO

    NO_BACKSLASH_ESCAPES

    NO_DIR_IN_CREATE

    NO_ENGINE_SUBSTITUTION

    NO_FIELD_OPTIONS

    NO_KEY_OPTIONS

    NO_TABLE_OPTIONS

    NO_UNSIGNED_SUBTRACTION

    NO_ZERO_DATE

    NO_ZERO_IN_DATE

    ONLY_FULL_GROUP_BY

    PAD_CHAR_TO_FULL_LENGTH

    PIPES_AS_CONCAT

    REAL_AS_FLOAT

    STRICT_ALL_TABLES

    STRICT_TRANS_TABLES

    设置SQL模式。看到第5.1.10,”服务器的SQL模式”

    笔记

    MySQL的安装程序会在安装过程中配置SQL模式。

    如果SQL模式不同于默认的或与你所期望的,检查在一个选项文件,服务器在启动时读取设置。

  • --sysdate-is-now

    财产价值
    命令行格式--sysdate-is-now
    类型布尔
    默认值FALSE

    SYSDATE()默认情况下,返回的时间执行,没有时间的声明则开始执行。这不同于行为NOW()。此选项SYSDATE()是一个别名NOW()。有关二进制日志和复制的影响的信息,看到的描述SYSDATE()进入12.7节,“戴特和时间函数”SET TIMESTAMP进入第5.1.7,服务器“系统变量”

  • --tc-heuristic-recover={COMMIT|ROLLBACK}

    财产价值
    命令行格式--tc-heuristic-recover=name
    类型枚举
    默认值COMMIT
    有效值

    COMMIT

    ROLLBACK

    决定使用启发式的恢复过程的类型。要使用此选项,两个或两个以上的存储引擎,支持XA交易必须安装

  • --temp-pool

    财产价值
    命令行格式--temp-pool
    过时的是的(除去8.0.1)
    类型布尔
    默认值(其他)FALSE
    默认值(Linux)TRUE

    这个选项是过时的,是在MySQL 8.0.1删除。

  • --transaction-isolation=level

    财产价值
    命令行格式--transaction-isolation=name
    系统变量transaction_isolation
    范围全球会议
    动态
    看到的是_提示应用
    类型枚举
    默认值REPEATABLE-READ
    有效值

    READ-UNCOMMITTED

    READ-COMMITTED

    REPEATABLE-READ

    SERIALIZABLE

    设置默认的事务隔离级别。这个level值可以是READ-UNCOMMITTEDREAD-COMMITTEDREPEATABLE-READ,或SERIALIZABLE。看到第13.3.7,“事务语法”

    默认的事务隔离级别,也可以设置在运行时使用SET TRANSACTION声明或通过设置transaction_isolation系统变量

  • --transaction-read-only

    财产价值
    命令行格式--transaction-read-only
    系统变量transaction_read_only
    范围全球会议
    动态
    看到的是_提示应用
    类型布尔
    默认值OFF

    设置默认的事务访问模式。默认情况下,只读模式是禁用的,所以模式读/写。

    设置默认的事务访问模式下运行时,使用SET TRANSACTION声明或设置transaction_read_only系统变量。见第13.3.7,“事务语法”

  • --tmpdir=dir_nameTdir_name

    财产价值
    命令行格式--tmpdir=dir_name
    系统变量tmpdir
    范围全球
    动态
    看到的是_提示应用
    类型目录名称

    该目录的路径,用于创建临时文件。这可能是有用的如果你的默认/tmp目录所在分区太小装临时表。这个选项接受几条用于循环的方式。路径应该是由冒号分隔()在UNIX和分号(;)在Windows。如果MySQL服务器作为复制的奴隶,你不应该--tmpdir指基于内存的文件系统或目录的目录被清除时,服务器主机重启。关于临时文件的存储位置的更多信息,参见第b.5.3.5,“MySQL存储临时文件”。复制的奴隶需要一些临时文件的生存机器,它可以复制临时表或重启LOAD DATA INFILE运营如果在临时文件目录下的文件丢失时,重新启动服务器,复制失败。

  • --user={user_name|user_id}U {user_name|user_id}

    财产价值
    命令行格式--user=name
    类型字符串

    运行mysqld服务器作为用户的名称user_name或数字IDuser_id。(用户在这种情况下,是指一个系统的登录帐户,而不是MySQL用户在授权表中列出。)

    这个选项是强制性的开始的时候,mysqld作为root。它的启动序列期间服务器用户身份的变化,使它运行而不是特定的用户root。看到第6.1.1安全指南》

    为了避免可能出现的安全漏洞,用户添加--user=root选择一个my.cnf文件(从而导致服务器运行root),mysqld仅使用第一--user选项指定并产生一个警告如果有多个--user选项选项/etc/ my.cnf$MYSQL_HOME/my.cnf在命令行选项处理,所以建议你把--user选项/etc/ my.cnf并指定以外的价值root。该选项/etc/ my.cnf是在任何其他的发现--user选项,以确保服务器运行的其他用户root这一警告的结果,如果任何其他--user选项被发现

  • --verbose-v

    使用这个选项的--help详细的帮助选项

  • --versionV

    显示版本信息并退出

5.1.7服务器系统变量

MySQL服务器维护许多系统变量,表明它是如何配置。每一个系统变量有默认值。系统变量可以设置使用选项在命令行或在一个选项文件服务器启动。他们中的大多数都可以在运行时动态地改变使用SET声明,它使您能够修改服务器的运行而不需要停止并重新启动它。你也可以在表达式中使用系统变量的值。

在运行时,设置一个系统变量的全局值通常要求SYSTEM_VARIABLES_ADMINSUPER特权与例外,作为个体变量描述说。对于一些系统变量,设置会话值也需要中小企业的特权;再次,与例外作为单个变量的描述指出。

有看到名字和系统变量值的几种方法:

  • 看到一个服务器将使用基于其编译在违约和任何选项文件,读取的值,使用这个命令:

    mysqld --verbose --help
    
  • 看到一个服务器将使用基于其编译默认值,忽略任何选项的设置文件,使用此命令:

    mysqld --no-defaults --verbose --help
    
  • 看到一个正在运行的服务器所使用的电流值,使用SHOW VARIABLES声明或性能架构系统变量表。看到第25.11.13,绩效模式系统变量表”

本节提供了一个描述每个系统变量。对于一个系统变量的汇总表,见第5.1.4”服务器系统变量引用”。对系统变量的操作的更多信息,参见5.1.8节,“使用系统变量”

额外的系统变量的信息,看到这些部分:

笔记

下面的一些手法指两个变量有可能禁用变量。These变量can be enough with theSET通过设置他们的声明打开(放)1通过设置,或禁用它们关闭0。布尔变量可以设置在启动时的值打开(放)TRUE关闭,和FALSE(不区分大小写),以及0。看到4.2.5节,“程序”选项修改”

有些系统变量控制缓存或缓存的大小。对于一个给定的缓冲区,服务器可能需要分配的内部数据结构。这些结构通常是分配给缓冲区的总内存分配,和所需的空间量可能是依赖于平台。这意味着,当你将一个值赋给一个系统变量控制缓冲区的大小,实际可用空间量可能会有所不同,从价值分配。在某些情况下,金额可以小于指定的值。它也有可能是服务器将调整值上升。例如,如果你的最小值是1024个变量分配一个值0,服务器将值设置为1024。

值,缓冲区的大小,长度,和堆栈的大小是给定的字节,除非另有规定。

有些系统变量的值以文件名。除非另有指定,默认文件位置的数据目录,如果该值是一个相对路径名。指定的位置明确,使用绝对路径名。假设数据目录/var/mysql/data。如果一个文件的值变为相对路径名,它将位于下/ var / MySQL /日期。如果该值是一个绝对路径名,它的位置是由给定的路径名。

  • activate_all_roles_on_login

    财产价值
    命令行格式--activate-all-roles-on-login
    介绍8.0.2
    系统变量activate_all_roles_on_login
    范围全球
    动态
    看到的是_提示应用
    类型布尔
    默认值OFF

    是否启用所有授予的角色自动激活,当用户登录到服务器:

    授予角色包括那些显式授予给用户,这些命名的mandatory_roles系统变量的值

    activate_all_roles_on_login仅适用于在登录时,在存储程序和视图中定义的上下文执行开始执行。改变在一个会话中的积极作用,利用SET ROLE。要改变一个存储程序的积极作用,应执行的程序体SET ROLE

  • authentication_windows_log_level

    财产价值
    命令行格式--authentication-windows-log-level
    介绍8.0.11
    类型整数
    默认值0
    最小值0
    最大值4

    这个变量是可用的只有authentication_windowsWindows身份验证插件启用调试代码启用。看到第6.5.1.6,“Windows认证”

    这个变量对于Windows身份验证插件设置日志记录级别。下表显示了允许值。

    价值描述
    没有记录
    只记录错误信息
    日志级别1的消息和警告消息
    2级信息记录日志
    日志3级信息和调试信息
  • authentication_windows_use_principal_name

    财产价值
    命令行格式--authentication-windows-use-principal-name
    介绍8.0.11
    类型布尔
    默认值ON

    这个变量是可用的只有authentication_windowsWindows身份验证插件启用。看到第6.5.1.6,“Windows认证”

    客户端验证使用InitSecurityContext()功能应该提供一个字符串的识别服务,它连接(targetName)。MySQL的使用主体名称(UPN)的帐户下运行的服务器。UPN的形式user_id@computer_name不需要注册的任何地方被使用。这个UPN是由服务器在认证握手开始发送。

    这个变量控制服务器是否在最初的挑战将UPN。默认情况下,变量是启用。出于安全原因,它可以被禁用,以避免发送服务器的帐户名为明文的客户端。如果变量是残疾人,服务器会发送一个0x00在第一个挑战字节,客户不指定targetName,和作为一个结果,使用NTLM验证。

    如果服务器未能获得其UPN(这将在环境不支持Kerberos认证主要发生),UPN不是由服务器发送使用NTLM身份验证。

  • autocommit

    财产价值
    命令行格式--autocommit[=#]
    系统变量autocommit
    范围全球会议
    动态
    看到的是_提示应用
    类型布尔
    默认值ON

    自动提交模式。如果设置为1,所有的变化表立即生效。如果设置为0,你必须使用COMMIT接受交易或ROLLBACK取消它。如果autocommit0,你变成1,MySQL执行自动COMMIT任何打开的事务。另一种方式来开始一个事务是使用START TRANSACTIONBEGIN声明。看到第13.3.1条,“开始事务,提交和回滚语法”

    默认情况下,客户端的连接开始autocommit设置为-1。使客户从默认的0,设置全局autocommit通过启动服务器的价值--autocommit=0选项使用一个选项文件中设置的变量,包括这些线:

    [mysqld]autocommit=0
  • automatic_sp_privileges

    财产价值
    系统变量automatic_sp_privileges
    范围全球
    动态
    看到的是_提示应用
    类型布尔
    默认值TRUE

    当这个变量的值为1(默认),服务器自动授予EXECUTEALTER ROUTINE为存储过程的创造者的特权,如果用户已经不能执行、修改或删除程序。(TheALTER ROUTINE特权是需要删除程序。)服务器也自动滴那些特权来自造物主在常规滴。如果automatic_sp_privileges0,服务器不会自动添加或删除这些权限。

    一个常规的创造者是用来执行帐户CREATE语句,它。这可能不是作为账户命名为相同的定义者在常规的定义

    参见第23.2.2,“存储程序和MySQL的特权”

  • auto_generate_certs

    财产价值
    命令行格式--auto-generate-certs[={OFF|ON}]
    系统变量auto_generate_certs
    范围全球
    动态
    看到的是_提示应用
    类型布尔
    默认值ON

    如果服务器使用OpenSSL这个变量是编译可用(见6.4.4部分,“OpenSSL与wolfssl”)。它控制服务器是否自动生成的数据目录的SSL证书和密钥文件,如果不存在。

    在启动时,服务器自动生成服务器端和客户端的SSL证书和密钥文件中的数据目录,如果auto_generate_certs系统变量启用SSL选项以外,没有--ssl被指定,和服务器端SSL文件从数据目录失踪。这些文件使客户端的连接使用SSL;看第6.4.1配置MySQL,使用加密的连接”

    关于SSL文件自动生成的更多信息,包括文件的名称和特点,看第6.4.3.1,“创建SSL和RSA证书和使用MySQL”键

    这个sha256_password_auto_generate_rsa_keyscaching_sha2_password_auto_generate_rsa_keys系统变量是相关但控制生成RSA密钥对的文件需要安全密码交换unencypted连接使用RSA。

  • avoid_temporal_upgrade

    财产价值
    命令行格式--avoid-temporal-upgrade={OFF|ON}
    过时的
    系统变量avoid_temporal_upgrade
    范围全球
    动态
    看到的是_提示应用
    类型布尔
    默认值OFF

    这是否可变控制ALTER TABLE隐式的升级时间柱发现在pre-5.6.4格式(TIMEDATETIME,和TIMESTAMP没有分数秒精度支撑柱)。升级需要重建这样的列表,以防止任何使用快速改变,否则可能将要执行的操作。

    这个变量默认是禁用的。使它的原因ALTER TABLE不重建时间列,从而能够利用潜在的快速变化。

    这个变量是过时的、将在未来的MySQL版本中删除。

  • back_log

    财产价值
    系统变量back_log
    范围全球
    动态
    看到的是_提示应用
    类型整数
    默认值-1(意味着调整;不转让本文字值)
    最小值1
    最大值65535

    优秀的连接请求MySQL数量会。这是在mysql的主线程得到非常多的连接请求,在很短的时间。然后花一些时间(虽然很少)为主线,检查连接并且启动一个新线程。这个back_log值表示多少个请求可以堆叠在那么短的时间内暂时停止回答之前,MySQL的新要求。你需要这只如果你期望大量在短时间内连接增加。

    换句话说,这个价值是对侦听传入的TCP/IP连接队列的大小。你的操作系统在这个队列大小上有它自己的极限。对于UNIX手册页listen()系统调用应该有更多的细节。检查你的操作系统文档,此变量的最大值。back_log不能设置高于你的操作系统的限制。

    默认值是值max_connections,使允许积压调整到允许的最大连接数。

  • basedir

    财产价值
    命令行格式--basedir=dir_name
    系统变量basedir
    范围全球
    动态
    看到的是_提示应用
    类型目录名称
    默认值(>= 8.0.2)parent of mysqld installation directory
    默认值(<= 8.0.1)configuration-dependent default

    对MySQL的安装基础目录的路径。

  • big_tables

    财产价值
    命令行格式--big-tables
    系统变量big_tables
    范围全球会议
    动态
    看到的是_提示应用
    类型布尔
    默认值OFF

    如果设置为1,所有临时表存储在磁盘上而不是内存中。这是慢一点,但错误The table tbl_name is full不发生SELECT这需要大量的临时表的操作。对一个新连接的默认值是0(使用内存中的临时表)。通常情况下,你应该不需要设置这个变量。当内存中内部的临时表的管理TempTable存储引擎(默认),和最大内存量可占的诱人的存储引擎是超越的TempTable存储引擎开始将数据存储到磁盘上的临时文件。当内存中的临时表的管理内存存储引擎,在内存表自动转换为基表所需磁盘。有关更多信息,参见第8.4.4,“MySQL”使用内部临时表

  • bind_address

    财产价值
    命令行格式--bind-address=addr
    系统变量bind_address
    范围全球
    动态
    看到的是_提示应用
    类型字符串
    默认值*

    的价值--bind-address选项

  • block_encryption_mode

    财产价值
    命令行格式--block-encryption-mode=#
    系统变量block_encryption_mode
    范围全球会议
    动态
    看到的是_提示应用
    类型字符串
    默认值aes-128-ecb

    这个变量控制基于块的算法,如AES分组加密模式。它影响加密AES_ENCRYPT()AES_DECRYPT()

    block_encryption_mode作为一个价值AES—keylenmode格式,在keylen在比特的密钥长度和mode是加密模式。的值不区分大小写。被允许keylen值是128, 192,和256。允许加密模式取决于MySQL编译使用OpenSSL或wolfssl:

    • 对于OpenSSL,允许mode值:欧洲央行CBCcfb1CFB8cfb128OFB

    • 为wolfssl,允许mode值:欧洲央行CBC

    例如,该语句使AES加密功能使用256位密钥长度和CBC模式:

    SET block_encryption_mode = 'aes-256-cbc';
    

    发生错误尝试设置block_encryption_mode一个值包含不支持的密钥长度或一个模式,SSL库不支持。

  • bulk_insert_buffer_size

    财产价值
    命令行格式--bulk-insert-buffer-size=#
    系统变量bulk_insert_buffer_size
    范围全球会议
    动态
    看到的是_提示应用
    类型整数
    默认值8388608
    最小值0
    最大值(64位平台)18446744073709551615
    最大值(32位平台)4294967295

    MyISAM使用一种特殊的树型缓存进行批量插入更快INSERT ... SELECTinsert…………………values(……),(……)…………………,和LOAD DATA INFILE对非空表添加数据时。这个变量在每个线程限制字节的高速缓存大小的树。设置为0将禁用此优化。默认值是8MB。

  • caching_sha2_password_auto_generate_rsa_keys

    财产价值
    命令行格式--caching-sha2-password-auto-generate-rsa-keys[={OFF|ON}]
    介绍8.0.4
    系统变量caching_sha2_password_auto_generate_rsa_keys
    范围全球
    动态
    看到的是_提示应用
    类型布尔
    默认值ON

    如果服务器使用OpenSSL这个变量是编译可用(见6.4.4部分,“OpenSSL与wolfssl”)。服务器使用它来确定是否自动生成RSA私有/公共密钥对文件中的数据目录,如果不存在。

    在启动时,服务器自动生成RSA私有/公共密钥对文件中的数据目录,如果所有这些条件都是真实的sha256_password_auto_generate_rsa_keyscaching_sha2_password_auto_generate_rsa_keys系统变量是启用;没有指定RSA RSA文件选项;从数据目录失踪。这些密钥对文件启用安全密码交换的帐户通过未加密的连接使用RSAsha256_passwordcaching_sha2_password这个插件;第6.5.1.2,“SHA-256认证”,和第6.5.1.3,“缓存SHA-2认证”

    关于RSA文件自动生成的更多信息,包括文件的名称和特点,看第6.4.3.1,“创建SSL和RSA证书和使用MySQL”键

    这个auto_generate_certs系统变量是相关但控制为安全连接需要使用SSL SSL证书和密钥文件的自动生成。

  • caching_sha2_password_private_key_path

    财产价值
    命令行格式--caching-sha2-password-private-key-path=file_name
    介绍8.0.3
    系统变量caching_sha2_password_private_key_path
    范围全球
    动态
    看到的是_提示应用
    类型文件名
    默认值private_key.pem

    这个变量指定的密钥文件的路径名的RSAcaching_sha2_password身份验证插件。如果文件被命名为相对路径,它被解释为相对于服务器的数据目录。该文件必须在PEM格式。

    重要

    因为该文件存储私钥,其接入方式应限制所以只有MySQL服务器可以读取它。

    有关caching_sha2_password,看到第6.5.1.3,“缓存SHA-2认证”

  • caching_sha2_password_public_key_path

    财产价值
    命令行格式--caching-sha2-password-public-key-path=file_name
    介绍8.0.3
    系统变量caching_sha2_password_public_key_path
    范围全球
    动态
    看到的是_提示应用
    类型文件名
    默认值public_key.pem

    这个变量指定的RSA公钥文件的路径名caching_sha2_password身份验证插件。如果文件被命名为相对路径,它被解释为相对于服务器的数据目录。该文件必须在PEM格式。

    有关caching_sha2_password对客户的要求,包括RSA公钥信息,看第6.5.1.3,“缓存SHA-2认证”

  • character_set_client

    财产价值
    系统变量character_set_client
    范围全球会议
    动态
    看到的是_提示应用
    类型字符串
    默认值(>= 8.0.1)utf8mb4
    默认值(8.0.0)utf8

    为报表设置到达客户端的字符。这一变量的会话值设置使用的字符集,客户端请求的当客户端连接到服务器。(很多客户支持--default-character-set选项来启用这个字符集是显式指定。参见10.4节,“连接字符集和Collations”。)变量的全局值用于设置会话值的情况下,客户要求值是未知的或不可用,或者服务器配置为忽略客户端请求:

    • 客户端从一个版本的MySQL 4.1比年长的MySQL,因而不要求的字符集。

    • 客户端请求一个字符集不知道服务器。例如,日本启用客户端请求sjis连接到一个服务器没有配置时SJIS支持

    • mysqld开始的--skip-character-set-client-handshake选项,这使它忽略客户端的字符集配置。这再现的行为是有用的MySQL 4.0应该要升级服务器无需升级的所有客户。

    ucs2UTF16utf16le,和utf32不能作为客户端的字符集,这意味着他们也不工作SET NAMESSET CHARACTER SET

  • character_set_connection

    财产价值
    系统变量character_set_connection
    范围全球会议
    动态
    看到的是_提示应用
    类型字符串
    默认值(>= 8.0.1)utf8mb4
    默认值(8.0.0)utf8

    用于文字,没有一个字符集介绍人和数字字符串转换的字符集。有关介绍,看第10.3.8,“字符集范围”

  • character_set_database

    财产价值
    系统变量character_set_database
    范围全球会议
    动态
    看到的是_提示应用
    类型字符串
    默认值(>= 8.0.1)utf8mb4
    默认值(8.0.0)latin1
    脚注这个选项是动态的,但只有服务器应该设置信息。你不应该设置这个变量的手动。

    默认的数据库使用的字符集。服务器设置这个变量时,默认的数据库的变化。如果没有默认数据库,变量具有相同的价值character_set_server

    全球character_set_databasecollation_database系统变量是过时的、将在未来版本的MySQL移除。

    对会话分配一个值character_set_databasecollation_database系统变量是过时的和作业产生一个警告。会话变量只会在未来版本的MySQL和作业会产生一个错误。它将可以访问会话变量的默认数据库,确定数据库的字符集和整理。

  • character_set_filesystem

    财产价值
    命令行格式--character-set-filesystem=name
    系统变量character_set_filesystem
    范围全球会议
    动态
    看到的是_提示应用
    类型字符串
    默认值binary

    文件系统的字符集。这个变量是用来解释字符串引用的文件名,如在LOAD DATA INFILESELECT ... INTO OUTFILE报表和LOAD_FILE()功能。这样的文件名转换character_set_clientcharacter_set_filesystem在档案开放的尝试时。默认值是二元的,这意味着没有发生转换。在多字节的文件名是允许的系统,不同的价值可能更合适。例如,如果系统是文件名使用gb3212,集character_set_filesystem为utf8

  • character_set_results

    财产价值
    系统变量character_set_results
    范围全球会议
    动态
    看到的是_提示应用
    类型字符串
    默认值(>= 8.0.1)utf8mb4
    默认值(8.0.0)utf8

    字符集用于返回查询结果,如结果集或者错误信息给客户。

  • character_set_server

    财产价值
    命令行格式--character-set-server
    系统变量character_set_server
    范围全球会议
    动态
    看到的是_提示应用
    类型字符串
    默认值(>= 8.0.1)utf8mb4
    默认值(8.0.0)latin1

    服务器的默认字符集

  • character_set_system

    财产价值
    系统变量character_set_system
    范围全球
    动态
    看到的是_提示应用
    类型字符串
    默认值utf8

    由服务器用于存储标识符的字符集。价值总是utf8

  • character_sets_dir

    财产价值
    命令行格式--character-sets-dir=dir_name
    系统变量character_sets_dir
    范围全球
    动态
    看到的是_提示应用
    类型目录名称

    目录中的字符集设置

  • check_proxy_users

    财产价值
    命令行格式--check-proxy-users=[={OFF|ON}]
    系统变量check_proxy_users
    范围全球
    动态
    看到的是_提示应用
    类型布尔
    默认值OFF

    一些认证插件实现代理用户映射为自己(例如,PAM与Windows身份验证插件)。其他认证插件默认不支持代理用户。其中,有些可以要求MySQL服务器本身地图代理用户根据授予的代理权限:mysql_native_passwordsha256_password

    如果check_proxy_users系统变量是启用,该服务器执行任何身份验证插件,这样要求代理用户映射。然而,也有必要使插件特定的系统变量,利用代理服务器的用户映射支持:

    有关用户代理信息,看第6.3.11”代理用户”

  • collation_connection

    财产价值
    系统变量collation_connection
    范围全球会议
    动态
    看到的是_提示应用
    类型字符串

    在连接字符集的整理

  • collation_database

    财产价值
    系统变量collation_database
    范围全球会议
    动态
    看到的是_提示应用
    类型字符串
    默认值(>= 8.0.1)utf8mb4_0900_ai_ci
    默认值(8.0.0)latin1_swedish_ci
    脚注这个选项是动态的,但只有服务器应该设置信息。你不应该设置这个变量的手动。

    默认的数据库使用的排序规则。服务器设置这个变量时,默认的数据库的变化。如果没有默认数据库,变量具有相同的价值collation_server

    全球character_set_databasecollation_database系统变量是过时的、将在未来版本的MySQL移除。

    对会话分配一个值character_set_databasecollation_database系统变量是过时的和作业产生一个警告。会话变量只会在未来版本的MySQL和作业会产生一个错误。它将可以访问会话变量的默认数据库,确定数据库的字符集和整理。

  • collation_server

    财产价值
    命令行格式--collation-server
    系统变量collation_server
    范围全球会议
    动态
    看到的是_提示应用
    类型字符串
    默认值(>= 8.0.1)utf8mb4_0900_ai_ci
    默认值(8.0.0)latin1_swedish_ci

    服务器的默认排序规则。

  • completion_type

    财产价值
    命令行格式--completion-type=#
    系统变量completion_type
    范围全球会议
    动态
    看到的是_提示应用
    类型枚举
    默认值NO_CHAIN
    有效值

    NO_CHAIN

    CHAIN

    RELEASE

    0

    1

    2

    该交易的完成式。这个变量可以在下表中显示的值。变量可以被分配使用的名称值或相应的整数值。

    价值描述
    NO_CHAIN(或0)COMMITROLLBACK不受影响。这是默认值。
    CHAIN(1)COMMITROLLBACK是等价的提交和链ROLLBACK AND CHAIN,分别。(一个新的交易立即开始同隔离级别为刚终止交易。)
    RELEASE(2)COMMITROLLBACK是等价的承诺释放ROLLBACK RELEASE,分别。(服务器断开连接终止交易后)

    completion_type影响交易的开始START TRANSACTIONBEGIN结束COMMITROLLBACK。它不适用于隐式提交从上市的语句的执行13.3.3部分,”声明,因为一个隐含的承诺”。它也不适用于XA COMMITXA ROLLBACK,或当autocommit=1

  • concurrent_insert

    财产价值
    命令行格式--concurrent-insert[=#]
    系统变量concurrent_insert
    范围全球
    动态
    看到的是_提示应用
    类型枚举
    默认值AUTO
    有效值

    NEVER

    AUTO

    ALWAYS

    0

    1

    2

    如果AUTO(默认),MySQL许可证INSERTSELECT声明同时运行MyISAM有在数据文件中没有空闲块表。如果你开始mysqld--skip-new,这个变量被设置为从未

    这个变量可以在下表中显示的值。变量可以被分配使用的名称值或相应的整数值。

    价值描述
    NEVER(或0)插入disables竞争者
    AUTO(1)(默认)使并行插入MyISAM桌上没有孔
    ALWAYS(2)为使并行插入MyISAM表,甚至那些有洞。带孔的表,新的行插入到表的末尾如果是使用由另一个线程。否则,MySQL获得正常的写锁,插入排进洞。

    参见第8.11.3,并发插入”

  • connect_timeout

    财产价值
    命令行格式--connect-timeout=#
    系统变量connect_timeout
    范围全球
    动态
    看到的是_提示应用
    类型整数
    默认值10
    最小值2
    最大值31536000

    的秒数mysqld服务器等待一个连接包前回应Bad handshake。默认值是10秒

    增加connect_timeout值可能如果客户经常遇到的形式错误的帮助丢失连接到MySQL服务器的XXX系统错误:”errno

  • core_file

    财产价值
    系统变量core_file
    范围全球
    动态
    看到的是_提示应用
    类型布尔
    默认值OFF

    无论是写一个核心文件在服务器崩溃。这个变量设置的--core-file选项

  • cte_max_recursion_depth

    财产价值
    命令行格式--cte-max-recursion-depth=#
    介绍8.0.3
    系统变量cte_max_recursion_depth
    范围全球会议
    动态
    看到的是_提示应用
    类型整数
    默认值1000
    最小值0
    最大值4294967295

    公用表表达式(CTE)最大递归深度。服务器终止执行任何递归CTE比这个变量的值水平。有关更多信息,参见限制递归公用表表达式

  • datadir

    财产价值
    命令行格式--datadir=dir_name
    系统变量datadir
    范围全球
    动态
    看到的是_提示应用
    类型目录名称

    在MySQL服务器数据目录的路径。相对路径是相对于当前目录的解决。如果服务器会自动启动(即,在环境中,你不能假设当前目录将),最好是指定datadir值是一个绝对路径

  • date_format

    这个系统变量是MySQL 8.0.3删除。

  • datetime_format

    这个系统变量是MySQL 8.0.3删除。

  • debug

    财产价值
    命令行格式--debug[=debug_options]
    系统变量debug
    范围全球会议
    动态
    看到的是_提示应用
    类型字符串
    默认值(Windows)d:t:i:O,\mysqld.trace
    默认值(UNIX)d:t:i:o,/tmp/mysqld.trace

    这个变量表示当前调试设置。它只能用于调试支持建立服务器。最初的价值来自实例的值--debug在服务器启动时指定的选项。全球和会话的值可以在运行时设置。这个SYSTEM_VARIABLES_ADMINSUPER特权是必须的,即使对于会议的价值。

    指定一个值,从+造成的价值添加到或从当前值减去:

    mysql> SET debug = 'T';
    mysql> SELECT @@debug;
    +---------+
    | @@debug |
    +---------+
    | T       |
    +---------+
    
    mysql> SET debug = '+P';
    mysql> SELECT @@debug;
    +---------+
    | @@debug |
    +---------+
    | P:T     |
    +---------+
    
    mysql> SET debug = '-P';
    mysql> SELECT @@debug;
    +---------+
    | @@debug |
    +---------+
    | T       |
    +---------+
    

    有关更多信息,参见第28.5.3,“该计划”

  • debug_sync

    财产价值
    系统变量debug_sync
    范围会话
    动态
    看到的是_提示应用
    类型字符串

    这个变量是用户接口的调试同步装置。使用调试同步要求MySQL配置的-DENABLE_DEBUG_SYNC=1CMake(这个选项第2.8.4节,“MySQL源-配置选项”)。如果Debug Sync编写不,这个系统变量是不可用的。

    全局变量的值是只读和指示设施启用。默认情况下,调试同步是残疾人和价值debug_sync关闭。如果服务器开始--debug-sync-timeout=N,在那里N是一个超时值大于0,调试同步启用和价值debug_sync电流信号其次是信号名。也,N成为个人同步点的默认超时。

    会议的价值,任何用户都可以读取和都有相同的值作为全局变量。会话值可由用户设定,有SYSTEM_VARIABLES_ADMINSUPER特权控制同步点

    为说明调试同步设备和如何使用同步点,看MySQL内核:测试同步

  • default_authentication_plugin

    财产价值
    命令行格式--default-authentication-plugin=plugin_name
    系统变量default_authentication_plugin
    范围全球
    动态
    看到的是_提示应用
    类型枚举
    默认值(>= 8.0.4)caching_sha2_password
    默认值(<= 8.0.3)mysql_native_password
    有效值(>= 8.0.3)

    mysql_native_password

    sha256_password

    caching_sha2_password

    有效值(<= 8.0.2)

    mysql_native_password

    sha256_password

    默认的身份验证插件。这些值是允许的:

    笔记

    在MySQL 8,caching_sha2_password是默认的身份验证插件而不是mysql_native_password。有关此更改服务器的操作和与客户及连接器服务器兼容性的影响的信息,参见caching_sha2_password作为首选的身份验证插件

    这个default_authentication_plugin这些方面的价值影响服务器运行:

    • 它确定认证插件服务器指定创建新帐户CREATE USERGRANT声明没有显式指定一个身份验证插件。

    • 用下面的语句创建了一个帐户,服务器将帐户的默认身份验证插件和指定帐户密码散列的插件需要:

      CREATE USER ... IDENTIFIED BY 'cleartext password';
      
  • default_collation_for_utf8mb4

    财产价值
    介绍8.0.11
    系统变量default_collation_for_utf8mb4
    范围全球会议
    动态
    看到的是_提示应用
    类型枚举
    有效值

    utf8mb4_0900_ai_ci

    utf8mb4_general_ci

    通过复制内部使用。这个系统变量的设置为默认排序规则utf8mb4字符集。变量的值是从主复制到一个奴隶,奴隶可以正确处理从主用不同的默认排序规则的数据utf8mb4。这个变量的主要目的是从一个MySQL 5.7以上主服务器从服务器复制到MySQL软件的支持,或与一个MySQL 5.7主节点和一个或多个MySQL 5.0次级组复制。默认的排序规则utf8mb4在MySQL 5.7我们utf8mb4 _通用_,但utf8mb4_0900_ai_ci在MySQL 5.0。变量是不存在的版本早于MySQL 8,所以如果从没有得到的变量值,它假定的主人是从早期的释放和集值以前的默认排序规则我们utf8mb4 _通用_

    默认的utf8mb4整理是用下面的语句:

  • default_password_lifetime

    财产价值
    命令行格式--default-password-lifetime=#
    系统变量default_password_lifetime
    范围全球
    动态
    看到的是_提示应用
    类型整数
    默认值0
    最小值0
    最大值65535

    该变量定义了全局自动密码过期策略。默认的default_password_lifetime值为0,禁用自动密码过期。如果价值default_password_lifetime是一个正整数N这表明,允许密码寿命;密码必须更换一次N天.

    全球密码过期策略可以覆盖所需的个人帐户使用的密码过期选项CREATE USERALTER USER声明.看到第6.3.8,“密码管理”

  • default_storage_engine

    财产价值
    命令行格式--default-storage-engine=name
    系统变量default_storage_engine
    范围全球会议
    动态
    看到的是_提示应用
    类型枚举
    默认值InnoDB

    默认存储引擎。这组变量的存储引擎永久表。设置存储引擎TEMPORARY表格设置default_tmp_storage_engine系统变量

    看看哪个存储引擎可使,用SHOW ENGINES表或查询information_schemaENGINES

    如果你禁用了默认存储引擎在服务器启动时,您必须为永久设置默认引擎TEMPORARY表不同的引擎或服务器无法启动。

  • default_tmp_storage_engine

    财产价值
    命令行格式--default-tmp-storage-engine=name
    系统变量default_tmp_storage_engine
    范围全球会议
    动态
    看到的是_提示应用
    类型枚举
    默认值InnoDB

    默认的存储引擎TEMPORARY(创建表CREATE TEMPORARY TABLE)。为永久表的存储引擎,集default_storage_engine系统变量。也看到了该变量的讨论可能的值。

    如果你禁用了默认存储引擎在服务器启动时,您必须为永久设置默认引擎TEMPORARY表不同的引擎或服务器无法启动。

  • default_week_format

    财产价值
    命令行格式--default-week-format=#
    系统变量default_week_format
    范围全球会议
    动态
    看到的是_提示应用
    类型整数
    默认值0
    最小值0
    最大值7

    默认值为WEEK()功能。看到12.7节,“戴特和时间函数”

  • delay_key_write

    财产价值
    命令行格式--delay-key-write[=name]
    系统变量delay_key_write
    范围全球
    动态
    看到的是_提示应用
    类型枚举
    默认值ON
    有效值

    ON

    OFF

    ALL

    此选项仅适用于MyISAM表它可以影响处理的下列值之一delay_key_write表选项,可用于CREATE TABLE声明.

    选项描述
    OFFDELAY_KEY_WRITE被忽略
    ON任何MySQL的荣誉DELAY_KEY_WRITE中指定的选项CREATE TABLE声明.这是默认值
    ALL所有新开的表当作是他们创造的DELAY_KEY_WRITE启用选项

    如果DELAY_KEY_WRITE是一个表启用,关键缓冲不刷新每个索引更新的表,但只有当表关闭。这加快了写按键很多,但如果你使用这个功能,你应该把所有的自动检测MyISAM通过启动服务器的表--myisam-recover-options选项(例如,--myisam-recover-options=BACKUP,FORCE)。这第5.1.6、“服务器选项”,和第16.2.1,“MyISAM启动选项”

    警告

    如果你启用外部锁--external-locking,没有防指数腐败表使用延迟关键写道。

  • delayed_insert_limit

    财产价值
    命令行格式--delayed-insert-limit=#
    过时的
    系统变量delayed_insert_limit
    范围全球
    动态
    看到的是_提示应用
    类型整数
    默认值100
    最小值1
    最大值(64位平台)18446744073709551615
    最大值(32位平台)4294967295

    这个系统变量是过时的(因为DELAYED不支持插入),并将在未来的版本中删除。

  • delayed_insert_timeout

    财产价值
    命令行格式--delayed-insert-timeout=#
    过时的
    系统变量delayed_insert_timeout
    范围全球
    动态
    看到的是_提示应用
    类型整数
    默认值300

    这个系统变量是过时的(因为DELAYED不支持插入),并将在未来的版本中删除。

  • delayed_queue_size

    财产价值
    命令行格式--delayed-queue-size=#
    过时的
    系统变量delayed_queue_size
    范围全球
    动态
    看到的是_提示应用
    类型整数
    默认值1000
    最小值1
    最大值(64位平台)18446744073709551615
    最大值(32位平台)4294967295

    这个系统变量是过时的(因为DELAYED不支持插入),并将在未来的版本中删除。

  • disabled_storage_engines

    财产价值
    命令行格式--disabled-storage-engines=engine[,engine]...
    系统变量disabled_storage_engines
    范围全球
    动态
    看到的是_提示应用
    类型字符串
    默认值empty string

    这个变量的存储引擎不能用于创建表或表空间。例如,防止新的MyISAM联邦被创建的表,启动服务器,这些线在服务器选项文件:

    [mysqld]
    disabled_storage_engines="MyISAM,FEDERATED"
    

    默认情况下,disabled_storage_engines是空的(没有引擎禁用),但它可以被设置为一个以逗号分隔的一个或多个引擎列表(不区分大小写)。任何引擎的价值不能称为可用于创建表或表空间与CREATE TABLECREATE TABLESPACE,不能用于ALTER TABLE ... ENGINEALTER TABLESPACE ... ENGINE改变现有的表或表空间存储引擎。这样的做法导致ER_DISABLED_STORAGE_ENGINE误差

    disabled_storage_engines不限制其他DDL语句为现有的表,如CREATE INDEXTRUNCATE TABLEANALYZE TABLEDROP TABLE,或DROP TABLESPACE。这允许一个平稳的过渡,现有的表或表空间使用禁用的发动机可以被转移到一个允许发动机通过诸如ALTER TABLE ... ENGINE permitted_engine

    它允许设置default_storage_enginedefault_tmp_storage_engine系统变量的存储引擎,是残疾人。这可能导致应用程序行为古怪或失败,虽然可以识别使用禁用引擎的应用程序在一个开发环境的一个非常有用的技术,这样他们可以修改。

    disabled_storage_engines被禁用,如果服务器已经启动任何这些选项不起作用:-初始化--initialize-insecure-跳过授权表

  • disconnect_on_expired_password

    财产价值
    命令行格式--disconnect-on-expired-password[=#]
    系统变量disconnect_on_expired_password
    范围全球
    动态
    看到的是_提示应用
    类型布尔
    默认值ON

    这个变量控制服务器如何处理客户过期的密码:

    关于涉及过期密码处理客户端和服务器设置交互的更多信息,参见第6.3.9条,“服务器处理过期的密码”

  • div_precision_increment

    财产价值
    命令行格式--div-precision-increment=#
    系统变量div_precision_increment
    范围全球会议
    动态
    看到的是_提示应用
    类型整数
    默认值4
    最小值0
    最大值30

    这个变量表示的位数,提高除法运算的执行与结果的尺度/算子。默认值是4。最小和最大值分别为0和30,分别。下面举例说明增加默认值的影响。

    MySQL的&#62;SELECT 1/7;-------- | 7 1 / | -------- | 0.1429 | -------- MySQL &#62;SET div_precision_increment = 12;MySQL的&#62;SELECT 1/7;---------------- | 1/7 | ---------------- | 0.142857142857 | ----------------
  • dragnet.log_error_filter_rules

    财产价值
    命令行格式--dragnet.log-error-filter-rules
    介绍8.0.4
    系统变量dragnet.log_error_filter_rules
    范围全球
    动态
    看到的是_提示应用
    类型字符串
    默认值IF prio>=INFORMATION THEN drop. IF EXISTS source_line THEN unset source_line.

    过滤规则,控制操作log_filter_dragnet错误日志过滤器组件。如果log_filter_dragnet未安装,dragnet.log_error_filter_rules不可用。如果log_filter_dragnet安装但不启用,改变dragnet.log_error_filter_rules有没有影响

    作为的mysql 8.0.12,dragnet.Status状态变量可确定最近的分配结果dragnet.log_error_filter_rules

    MySQL 8.0.12之前,成功的任务dragnet.log_error_filter_rules在运行时产生注意确认新的价值:

    MySQL的&#62;SET GLOBAL dragnet.log_error_filter_rules = 'IF prio <> 0 THEN unset prio.';查询行,0行的影响,1报警(0秒)MySQL &#62;SHOW WARNINGS\G*************************** 1. row ***************************  Level: Note   Code: 4569Message: filter configuration accepted:         SET @@global.dragnet.log_error_filter_rules=         'IF prio!=ERROR THEN unset prio.';

    显示的值SHOW WARNINGS表明反编译典型表示在规则集已成功解析和编译成内部形式。从语义上看,这是典型的形式分配给价值相同dragnet.log_error_filter_rules,但有可能之间的分配与标准值有差异,由前面的例子说明:

    • 这个<>运营商改变!=

    • 0数字优先改为相应程度的象征ERROR

    • 可选的空间也将被删除。

    更多信息,参见第5.4.2.5,“错误日志过滤”,和第5.5.1,“错误日志组件”

  • end_markers_in_json

    财产价值
    系统变量end_markers_in_json
    范围全球会议
    动态
    看到的是_提示应用
    类型布尔
    默认值OFF

    是否要添加结束标记优化器JSON输出。看到MySQL内部的end_markers_in_json系统变量:

  • eq_range_index_dive_limit

    财产价值
    系统变量eq_range_index_dive_limit
    范围全球会议
    动态
    看到的是_提示应用
    类型整数
    默认值200
    最小值0
    最大值4294967295

    这个变量表示在平等条件比较平等数量范围当优化器应该转而使用指数跳水指数统计估计数目的行。它适用于具有这些等价形式表达式,其中优化器使用非唯一索引查找col_name价值观:

    col_name在(val1,…,valNcol_name=val1或或col_name=valN

    在这两种情况下,表达式包含N平等的范围。优化器可以使用索引或索引统计估计潜水排。如果eq_range_index_dive_limit大于0,优化器使用现有的替代指数统计跳水如果有eq_range_index_dive_limit或更平等的范围。因此,允许使用指数跳水了N平等的范围,设置eq_range_index_dive_limitN1.。禁用索引的使用统计和总是使用指数跳水不管N,集eq_range_index_dive_limit这是0

    有关更多信息,参见多值比较平等范围优化

    更新的最佳估计表索引统计,使用ANALYZE TABLE

  • error_count

    的错误,导致生成消息的最后一个语句的数量。这个变量是只读的。看到第13.7.6.17,“显示错误语法”

  • event_scheduler

    财产价值
    命令行格式--event-scheduler[=value]
    系统变量event_scheduler
    范围全球
    动态
    看到的是_提示应用
    类型枚举
    默认值(>= 8.0.3)ON
    默认值(<= 8.0.2)OFF
    有效值

    ON

    OFF

    DISABLED

    这个变量表示事件调度器的状态;可能值ON关闭,和DISABLED,其默认值是打开(放)。这个变量和事件调度的运行效果的更详细的讨论第一章概述部分的事件

  • explicit_defaults_for_timestamp

    财产价值
    命令行格式--explicit-defaults-for-timestamp=#
    过时的
    系统变量explicit_defaults_for_timestamp
    范围全球会议
    动态
    看到的是_提示应用
    类型布尔
    默认值(>= 8.0.2)ON
    默认值(<= 8.0.1)OFF

    本系统变量确定服务器是否允许一定的不规范行为和默认值NULL值的处理TIMESTAMP专栏默认情况下,explicit_defaults_for_timestamp启用、禁用不规范行为。禁用explicit_defaults_for_timestamp在预警结果

    如果explicit_defaults_for_timestamp是残疾人,服务器使违规行为及处理TIMESTAMP列如下:

    • TIMESTAMP没有显式声明的列无效的属性是与自动声明NOT NULL属性。分配这样一个列值无效的允许并设置当前时间戳列。

    • 第一TIMESTAMP表中的列,如果没有显式声明的无效的属性或一个明确的DEFAULT在更新属性,与自动声明DEFAULT CURRENT_TIMESTAMP更新current_timestamp属性.

    • TIMESTAMP下面的一列,如果没有显式声明的无效的属性或一个明确的DEFAULT属性,declared are automatically asDefault &#39; 00000-00 - 00:00:00 &#39;(The时间戳)。对于插入的行,指定这样的列中没有显式值,该列分配'0000-00-00 00:00:00'没有警告出现

      这取决于是否严格的SQL模式或NO_ZERO_DATESQL模式开启,默认值“0000-00-00 00:00:00”可能无效。要知道,TRADITIONALSQL模式包括严格的模式NO_ZERO_DATE。看到第5.1.10,”服务器的SQL模式”

    上述违规行为已被否决,将在未来的MySQL版本中删除。

    如果explicit_defaults_for_timestamp启用服务器禁用违规行为及处理TIMESTAMP列如下:

    • 这是不可能的分配TIMESTAMP列的值无效的设置为当前时间戳。将当前时间戳,设置栏CURRENT_TIMESTAMP或同义词等NOW()

    • TIMESTAMP没有显式声明的列不为空属性是与自动声明NULL属性和许可证无效的价值观。分配这样一个列值NULL将其设置为无效的,不是当前的时间戳

    • TIMESTAMP柱的使用不为空属性不允许NULL价值观。对于插入指定无效的对于这样一个栏目,结果是一个错误的单行插入或者严格的SQL模式开启,或'0000-00-00 00:00:00'插于严格的SQL模式禁用多行插入。在任何情况下不指定列的值无效的它设置为当前时间戳

    • TIMESTAMP列显式声明的不为空属性并没有一个明确的DEFAULT属性被视为没有默认值。对于插入的行,指定这样一个栏目没有明确的价值,其结果取决于SQL模式。如果严格的SQL模式启用时,发生了一个错误。如果严格的SQL模式未启用,柱与隐式的默认声明“0000-00-00 00:00:00”和一个警告出现。这是类似于MySQL如何对待其他时态类型如DATETIME

    • TIMESTAMP柱与自动声明默认current_timestampON UPDATE CURRENT_TIMESTAMP属性.这些属性必须明确指定。

    • 第一TIMESTAMP表中的列不处理不同TIMESTAMP下面的第一个列

    如果explicit_defaults_for_timestamp是残疾人在服务器启动时,此警告出现在错误日志:

    [警告]与隐式的默认值的时间戳是过时的。请使用explicit_defaults_for_timestamp服务器选项(详情seedocumentation)。

    由警告指出,禁用过时的不规范行为,使explicit_defaults_for_timestamp在服务器启动系统变量。

    笔记

    explicit_defaults_for_timestamp本身是不因为它唯一的目的是允许控制使用TIMESTAMP的行为,都是在一个未来的MySQL版本中删除。当这些行为的脱除,explicit_defaults_for_timestamp没有目的,也会去除

    更多信息,参见第11.3.5,自动初始化和更新的时间戳和日期时间”

  • external_user

    财产价值
    系统变量external_user
    范围会话
    动态
    看到的是_提示应用
    类型字符串

    在认证过程中使用的外部用户的名字,如设置用于验证客户端插件。与本地(内置)MySQL认证,或如果插件没有设置这个变量的值,NULL。看到第6.3.11”代理用户”

  • flush

    财产价值
    命令行格式--flush
    系统变量flush
    范围全球
    动态
    看到的是_提示应用
    类型布尔
    默认值OFF

    如果ON,服务器刷新(同步)的所有更改磁盘的每个SQL语句后。通常情况下,MySQL会写所有的变化只有每个SQL语句后盘,让操作系统处理同步到磁盘。看到第b.5.3.3,“做什么如果MySQL总是死机”。这个变量设置为ON如果你开始mysqld--flush选项

    笔记

    如果flush启用,价值flush_time不要紧,改变flush_time在冲洗行为无影响

  • flush_time

    财产价值
    命令行格式--flush-time=#
    系统变量flush_time
    范围全球
    动态
    看到的是_提示应用
    类型整数
    默认值0
    最小值0

    如果设置为非零值,所有的表都被封闭的每flush_time秒腾出资源和同步未刷新数据到磁盘。这是最好的选择仅用于以最小的资源系统。

    笔记

    如果flush启用,价值flush_time不要紧,改变flush_time在冲洗行为无影响

  • foreign_key_checks

    财产价值
    系统变量foreign_key_checks
    范围全球会议
    动态
    看到的是_提示应用
    类型布尔
    默认值1

    如果设置为1(默认),外键约束InnoDB表检查。如果设置为0,外键约束,有例外。当重新创建一个表,掉了,一个错误如果表定义不符合外键约束引用返回的表。同样,一个ALTER TABLE如果一个外键定义格式不正确操作将返回一个错误。有关更多信息,参见第13.1.18.6,“使用外键约束”

    通常你离开这使正常运行时,执行参照完整性。禁用外键检查加载是有用的InnoDB在一个不同于他们的父/子关系要求的顺序表。看到第15.8.1.6,“InnoDB和外键约束”

    设置foreign_key_checks0也影响数据定义语句:DROP SCHEMA滴模式即使它包含有被外面的模式表外键的表,和DROP TABLE滴表已被其他表的外键。

    笔记

    设置foreign_key_checks1不触发扫描现有的表中的数据。因此,行添加到表中时foreign_key_checks = 0不会验证一致性

    降低了外键约束要求的指标是不被允许的,即使foreign_key_checks=0。外键约束之前必须删除索引删除。

  • ft_boolean_syntax

    财产价值
    命令行格式--ft-boolean-syntax=name
    系统变量ft_boolean_syntax
    范围全球
    动态
    看到的是_提示应用
    类型字符串
    默认值+ -><()~*:""&|

    通过全文搜索支持布尔运算符的列表中进行IN BOOLEAN MODE。看到第12.9.2,”布尔全文搜索”

    默认的变量值'+ -><()~*:""&|'。更改值的规则如下:

    • 算子函数在字符串的位置确定。

    • 替换的值必须是14个字符。

    • 每个字符必须是ASCII码的非字母数字字符。

    • 无论是第一或第二的字符必须是一个空间。

    • 没有重复的短语,除了位置11引用运算符12允许。这两个字不要求是相同的,但他们是仅有的两个可能。

    • 位置10, 13,和14(默认设置为:&#38;,和|)是留给未来的扩展

  • ft_max_word_len

    财产价值
    命令行格式--ft-max-word-len=#
    系统变量ft_max_word_len
    范围全球
    动态
    看到的是_提示应用
    类型整数
    最小值10

    这个词的最大长度是包含在MyISAM全文指数

    笔记

    FULLTEXT指标MyISAM表必须改变这个变量后重建。使用REPAIR TABLE tbl_name QUICK

  • ft_min_word_len

    财产价值
    命令行格式--ft-min-word-len=#
    系统变量ft_min_word_len
    范围全球
    动态
    看到的是_提示应用
    类型整数
    默认值4
    最小值1

    这个词的最小长度应包括在MyISAM全文指数

    笔记

    FULLTEXT指标MyISAM表必须改变这个变量后重建。使用REPAIR TABLE tbl_name QUICK

  • ft_query_expansion_limit

    财产价值
    命令行格式--ft-query-expansion-limit=#
    系统变量ft_query_expansion_limit
    范围全球
    动态
    看到的是_提示应用
    类型整数
    默认值20
    最小值0
    最大值1000

    使用全文搜索使用顶级赛事的数量WITH QUERY EXPANSION

  • ft_stopword_file

    财产价值
    命令行格式--ft-stopword-file=file_name
    系统变量ft_stopword_file
    范围全球
    动态
    看到的是_提示应用
    类型文件名

    从该文件读取全文搜索的停用词表对MyISAM表服务器中寻找数据目录的文件,除非绝对路径名是给指定一个不同的目录。用于从文件中所有的单词;评论荣幸的.默认情况下,内置的列表是用于构建(定义在storage/myisam/ft_static.c文件)。设置此变量为空字符串(&#39; &#39;)禁用词过滤。参见第12.9.4,“全文构建”

    笔记

    FULLTEXT指标MyISAM表必须改变这个变量或内容的词文件后重建。使用REPAIR TABLE tbl_name QUICK

  • general_log

    财产价值
    命令行格式--general-log
    系统变量general_log
    范围全球
    动态
    看到的是_提示应用
    类型布尔
    默认值OFF

    是否启用通用查询日志。该值可以是零(或OFF)禁用日志或1(或打开(放))启用日志。默认值取决于--general_log选择了。日志输出的目标是由log_output系统变量;如果此值为,没有写入日志项即使日志启用。

  • general_log_file

    财产价值
    命令行格式--general-log-file=file_name
    系统变量general_log_file
    范围全球
    动态
    看到的是_提示应用
    类型文件名
    默认值host_name.log

    的通用查询日志文件的名称。默认值是host_name.log,但初始值是可以改变的--general_log_file选项

  • group_concat_max_len

    财产价值
    命令行格式--group-concat-max-len=#
    系统变量group_concat_max_len
    范围全球会议
    动态
    看到的是_提示应用
    类型整数
    默认值1024
    最小值4
    最大值(64位平台)18446744073709551615
    最大值(32位平台)4294967295

    允许的最大字节长度的结果GROUP_CONCAT()功能。默认值是1024。

  • have_compress

    YES如果zlib压缩库服务器的可用,NO如果不是。如果不是,那COMPRESS()UNCOMPRESS()功能不能使用

  • have_crypt

    这个系统变量是MySQL 8.0.3删除。

  • have_dynamic_loading

    YES如果mysqld支持插件的动态加载,NO如果不是。如果该值为你不能使用的选项,如--plugin-load在服务器启动时加载插件,或INSTALL PLUGIN语句在运行时加载的插件。

  • have_geometry

    YES如果服务器支持空间数据类型,如果不是

  • have_openssl

    这个变量是一个别名have_ssl

  • have_profiling

    YES如果报表分析能力是存在的,如果不是。如果目前的profiling系统变量控制是否启用或禁用此功能。看到第13.7.6.31,“显示配置文件的语法”

    这个变量是过时的、将在未来的MySQL版本中删除。

  • have_query_cache

    查询缓存中删除MySQL 8.0.3。have_query_cache是过时的,总是有一个值,并将在未来的MySQL版本中删除。

  • have_rtree_keys

    YES如果索引指标是可用的,NO如果不是。(这些都是用于空间指标MyISAM表。)

  • have_ssl

    YES如果mysqld支持SSL连接,NO如果不是禁用表明服务器支持SSL的编译,但没有启动与适当的--ssl-xxx选项有关更多信息,参见第6.4.5,“建立加密连接”支持MySQL

  • have_statement_timeout

    财产价值
    系统变量have_statement_timeout
    范围全球
    动态
    看到的是_提示应用
    类型布尔

    无论语句执行超时功能是可用的(见语句执行时间优化程序提示)。该值可以是NO如果通过这一功能,使用后台线程不能初始化。

  • have_symlink

    YES如果符号链接支持,如果不是。这是关于支持Unix的要求DATA DIRECTORY索引目录表选项。如果服务器开始的--skip-symbolic-links期权价值禁用

    这个变量对Windows没有意义。

    笔记

    符号链接的支持,随着的--symbolic-links选择控制它,是过时的、将在未来版本的MySQL移除。此外,该选项默认是禁用的。相关have_symlink系统变量也是过时的、将在未来版本的MySQL移除。

  • histogram_generation_max_mem_size

    财产价值
    命令行格式--histogram-generation-max-mem-size=#
    介绍8.0.2
    系统变量histogram_generation_max_mem_size
    范围全球会议
    动态
    看到的是_提示应用
    类型整数
    默认值20000000
    最小值1000000
    最大值(64位平台)18446744073709551615
    最大值(32位平台)4294967295

    可用于生成直方图统计的最大内存量。看到第8.9.6,“优化统计”,和第13.7.3.1,“语法分析表”

    全球和会话的值可以在运行时设置。这个SYSTEM_VARIABLES_ADMINSUPER特权是必须的,即使对于会议的价值。

  • host_cache_size

    财产价值
    系统变量host_cache_size
    范围全球
    动态
    看到的是_提示应用
    类型整数
    默认值-1(意味着调整;不转让本文字值)
    最小值0
    最大值65536

    对内部主机的缓存大小(见第8.12.4.2,“DNS查询优化和主机缓存”)。大小设置0禁用主机缓存。在运行时改变缓存大小隐的原因FLUSH HOSTS手术清除主机缓存和截断host_cache

    默认值是128,加上1的价值max_connections到500,每增加20加1在500以上max_connections值,上限2000的限制。

    使用--skip-host-cache类似的设置host_cache_size系统变量为0,但host_cache_size更灵活,因为它可以用来调整,启用或禁用运行时主机的缓存,而不只是在服务器启动。

    如果你启动服务器--skip-host-cache,这并不妨碍价值的变化host_cache_size,但这种变化没有影响,即使不重新启用缓存host_cache_size设置大于0

  • hostname

    财产价值
    系统变量hostname
    范围全球
    动态
    看到的是_提示应用
    类型字符串

    服务器设置这个变量在启动服务器主机名。

  • identity

    这个变量是一个同义词的last_insert_id变量。它的存在与其他数据库系统的兼容性。你可以阅读它的价值选择@ @身份,并把它用SET identity

  • init_connect

    财产价值
    命令行格式--init-connect=name
    系统变量init_connect
    范围全球
    动态
    看到的是_提示应用
    类型字符串

    一个字符串是由服务器为每个客户端连接执行。字符串由一个或多个SQL语句,用分号分隔。例如,每个客户端会话开始用自动提交模式默认启用。旧的服务器(在MySQL 5.5.8),没有全球autocommit系统变量指定自动提交应该默认是禁用的,但作为一种变通方法init_connect可以达到相同的效果:

    SET GLOBAL init_connect='SET autocommit=0';

    这个init_connect变量也可以在命令行或在一个选项文件。设置变量是使用一个选项文件,包括这些线:

    [mysqld]init_connect='SET autocommit=0'

    对于用户来说,有CONNECTION_ADMINSUPER内容:“特权”,init_connect不执行。这样一个错误的价值init_connect并不能阻止所有的客户端连接。例如,该值可能包含一个声明中有语法错误,从而导致客户端连接失败。不执行init_connect对于用户来说,有CONNECTION_ADMINSUPER特权使他们打开一个连接并固定init_connect价值

    世纪之mysql 8.0.5,init_connect跳过任何客户端的用户使用过期的密码是执行。这样做是因为这样一个用户不能执行任意语句,从而init_connect执行将失败,使得客户端无法连接。跳过init_connect执行允许用户连接和修改密码。

    服务器丢弃任何结果集的值在报表制作init_connect

  • information_schema_stats_expiry

    财产价值
    命令行格式--information-schema-stats-expiry=value
    介绍8.0.3
    系统变量information_schema_stats_expiry
    范围全球会议
    动态
    看到的是_提示应用
    类型整数
    默认值86400
    最小值0
    最大值31536000

    一些INFORMATION_SCHEMA表包含列提供统计表:

    statistics.cardinalitytables.auto_increment tables.avg_row_length tables.checksum tables.check_time tables.create_time tables.data_free tables.data_length tables.index_length tables.max_data_length tables.table_rows tables.update_time

    这些柱子代表动态表元数据;即信息表内容的变化而变化。

    默认情况下,MySQL检索缓存值的列的mysql.index_stats台词字典表的列时,查询检索统计,这比直接从存储引擎更高效。如果缓存数据不可用或已经过期,MySQL检索最新的统计数据从存储引擎缓存中mysql.index_stats台词字典表。随后的查询检索缓存到缓存的数据过期统计。

    这个information_schema_stats_expiry会话变量定义的时间到期之前缓存统计。默认值是86400秒(24小时),但时间期限可以延长为一年。

    更新缓存值在任何时间对于一个给定的表,使用ANALYZE TABLE

    要检索的最新统计数据直接从存储引擎和旁路缓存值,设置information_schema_stats_expiry

    查询统计的列不存储或更新统计在mysql.index_stats台词在这种情况下,数据字典表:

    information_schema_stats_expiry是一个会话变量,每个客户端会话可以定义自己的到期价值。统计是从存储引擎检索和一个会话缓存可以被其他会话。

    相关的信息,看8.2.3章节,“优化information_schema查询”

  • init_file

    财产价值
    命令行格式--init-file=file_name
    系统变量init_file
    范围全球
    动态
    看到的是_提示应用
    类型文件名

    指定的文件名--init-file当你启动服务器选项。这应该是一个包含SQL语句所需的服务器执行启动时文件。每个语句必须在一行上,不应包括评论。更多信息,见描述--init-file

  • innodb_xxx

    InnoDB系统变量中列出15.13节,“InnoDB启动选项和系统变量”。这些控制变量的存储,内存使用的许多方面,和I / O模式InnoDB表,是特别重要的,InnoDB是默认的存储引擎

  • insert_id

    the value to be used by the followingINSERTALTER TABLE当插入语句汽车价值。这是用二进制日志主要用于。

  • interactive_timeout

    财产价值
    命令行格式--interactive-timeout=#
    系统变量interactive_timeout
    范围全球会议
    动态
    看到的是_提示应用
    类型整数
    默认值28800
    最小值1

    数秒服务器等待的交互式连接活动之前关闭它。一个交互式的客户端被定义为一个客户使用CLIENT_INTERACTIVE选项mysql_real_connect()。参见wait_timeout

  • internal_tmp_disk_storage_engine

    财产价值
    命令行格式--internal-tmp-disk-storage-engine=#
    系统变量internal_tmp_disk_storage_engine
    范围全球
    动态
    看到的是_提示应用
    类型枚举
    默认值INNODB
    有效值

    MYISAM

    INNODB

    存储引擎在硬盘内部临时表(见第8.4.4,“MySQL”使用内部临时表)。允许值MYISAMInnoDB(默认)

    这个优化器使用定义的存储引擎internal_tmp_disk_storage_engine在硬盘内部临时表

    当使用internal_tmp_disk_storage_engine=INNODB(默认),查询,生成磁盘内部临时表,超过InnoDB行或列的极限将返回行尺寸太大太多的列错误.解决方法是设置internal_tmp_disk_storage_engineMyISAM

  • internal_tmp_mem_storage_engine

    财产价值
    命令行格式--internal-tmp-mem-storage-engine=#
    介绍8.0.2
    系统变量internal_tmp_mem_storage_engine
    范围全球会议
    动态
    看到的是_提示应用
    类型枚举
    默认值TempTable
    有效值

    TempTable

    MEMORY

    在内存中的存储引擎内部临时表(见第8.4.4,“MySQL”使用内部临时表)。允许值TempTable(默认的),内存

    这个优化器使用定义的存储引擎internal_tmp_mem_storage_engine在内存内部临时表

  • join_buffer_size

    财产价值
    命令行格式--join-buffer-size=#
    系统变量join_buffer_size
    范围全球会议
    动态
    看到的是_提示应用
    类型整数
    默认值262144
    最小值128
    最大值(其他的64位平台)18446744073709547520
    最大值(其他的32位平台)4294967295
    最大值(Windows)4294967295

    的缓冲区,用于普通索引扫描的最小尺寸,范围索引扫描,并加入不使用指标,从而进行全表扫描。通常,得到快速连接的最好方法是增加指标。增加值join_buffer_size为了获得更快的全连接时添加索引是不可能的。一个加入缓冲区分配给每个完整的两个表之间的联接。对于不使用索引的几个表之间的复杂的连接,多加入缓冲区可能是必要的。

    除非批量密钥访问(BKA)使用,有从缓冲区设置大于要求每个匹配行没有收获,和所有加入至少分配的最小尺寸,所以谨慎使用这个变量设置为较大值的全局。最好是保持全局设置小改变到一个更大的设置只在会话,大量加入。内存分配时间如果全球规模比大多数查询,使用它需要导致性能下降。

    当BKA使用价值join_buffer_size定义键批量多大,在每一个请求的存储引擎。较大的缓冲区,更多的顺序访问将是一个连接操作的右手表,可以显着提高性能。

    默认是256KB。最大允许的设置join_buffer_size是4GB?1。较大的值是64位平台允许(除64位Windows,为大的值将被截断为4GB?1个警告)。

    有关更多信息加入缓冲,看第8.2.1.6,“嵌套循环连接算法。关于批量密钥访问的信息,参见第8.2.1.11,“块嵌套循环和批量密钥访问连接”

  • keep_files_on_create

    财产价值
    命令行格式--keep-files-on-create=#
    系统变量keep_files_on_create
    范围全球会议
    动态
    看到的是_提示应用
    类型布尔
    默认值OFF

    如果一个MyISAM表创建无数据目录期权的.MYD文件在数据库目录中创建。默认情况下,如果MyISAM发现一个现有的.MYD在这种情况下,它将改写该文件。这同样适用于。我创建无表格文件INDEX DIRECTORY选项为了制止这种行为,设置keep_files_on_create变量打开(放)(1),其中的案例MyISAM不会覆盖现有的文件并返回一个错误而。默认值是关闭(0)

    如果一个MyISAM表创建一个数据目录INDEX DIRECTORY选择一个现有的MVD.MYI文件被发现,MyISAM总是返回一个错误。它不会覆盖在指定目录下的文件。

  • key_buffer_size

    财产价值
    命令行格式--key-buffer-size=#
    系统变量key_buffer_size
    范围全球
    动态
    看到的是_提示应用
    类型整数
    默认值8388608
    最小值8
    最大值(64位平台)OS_PER_PROCESS_LIMIT
    最大值(32位平台)4294967295

    索引块MyISAM表缓冲和由所有线程共享。key_buffer_size是用于索引块的缓冲区大小。关键的缓冲区也被称为密钥缓存。

    最大允许的设置key_buffer_size1是4GB?32位平台上的。较大的值是64位平台允许。有效的最大大小可能更少,这取决于你的可用物理内存和内存限制每个进程由操作系统或硬件平台的实施。这个变量的值表示的内存量的要求。在内部,服务器分配尽可能达到这个数量多的内存,但实际配置可能不。

    你可以增加的价值得到更好的指标对所有读和多写处理;对系统的主要功能是运行MySQL的使用MyISAM存储引擎,本机的内存总量的百分之二十五是这个变量的一个可接受的值。然而,你应该意识到,如果你的值太大(例如,超过一半的机器的总内存),你的系统可能会开始页面变得非常慢。这是因为MySQL依赖操作系统执行读取文件系统缓存的数据,所以你必须为文件系统缓存空间。你也应该考虑到你可能除了使用其他存储引擎的内存需求MyISAM

    对于更高速的时候写的多行同时使用LOCK TABLES。看到第8.2.5.1,“优化INSERT语句”

    你可以用支票的关键缓冲性能SHOW STATUS声明和检查Key_read_requestsKey_readsKey_write_requests,和Key_writes状态变量。(这第13.7.6,“语法”的。)Key_reads/Key_read_requests通常比应小于0.01。这个key_writes / key_write_requests比通常近1如果你主要使用更新和删除,但可能会小得多,如果你倾向于做更新,影响许多排在同一时间或如果你使用的是DELAY_KEY_WRITE表选项

    的关键缓冲区使用的分数可确定使用key_buffer_size结合Key_blocks_unused状态变量和缓冲区大小,可从key_cache_block_size系统变量:

    1((key_blocks_unused * key_cache_block_size)/ key_buffer_size)

    这个值是一个近似,因为在一些关键的缓冲空间分配内部管理结构。影响量的开销这些结构因素包括块大小和指针的大小。随着块大小的增加,的关键缓冲损失比例架空趋于减少。大的块,结果在一个较小的数的读操作(因为每读得到更多的钥匙),但反过来增加了读取键不检查(在一块如果不是所有的键来查询相关的)。

    可以创建多个MyISAM索引缓存。4GB大小限制适用于每个单独的缓存,而不是作为一个组。看到部分8.10.2,“myisam Key Cache”

  • key_cache_age_threshold

    财产价值
    命令行格式--key-cache-age-threshold=#
    系统变量key_cache_age_threshold
    范围全球
    动态
    看到的是_提示应用
    类型整数
    默认值300
    最小值100
    最大值(64位平台)18446744073709551615
    最大值(32位平台)4294967295

    这个值控制缓冲器的降级从那温暖的子列表的关键缓存热点列表。较低的值导致降级发生更迅速。最小值是100。默认值为300。看到部分8.10.2,“myisam Key Cache”

  • key_cache_block_size

    财产价值
    命令行格式--key-cache-block-size=#
    系统变量key_cache_block_size
    范围全球
    动态
    看到的是_提示应用
    类型整数
    默认值1024
    最小值512
    最大值16384

    在关键的高速缓存块的字节大小。默认值是1024。看到部分8.10.2,“myisam Key Cache”

  • key_cache_division_limit

    财产价值
    命令行格式--key-cache-division-limit=#
    系统变量key_cache_division_limit
    范围全球
    动态
    看到的是_提示应用
    类型整数
    默认值100
    最小值1
    最大值100

    温热的关键缓冲区列表的子列表之间的分界点。价值是对缓冲区列表使用温暖的子列表的百分比。允许值的范围从1到100。默认值是100。看到部分8.10.2,“myisam Key Cache”

  • large_files_support

    财产价值
    系统变量large_files_support
    范围全球
    动态
    看到的是_提示应用

    是否mysqld与大文件支持选项编译。

  • large_pages

    财产价值
    命令行格式--large-pages
    系统变量large_pages
    范围全球
    动态
    看到的是_提示应用
    特定平台Linux
    类型布尔
    默认值FALSE

    无论是大页面支持(通过--large-pages选项)。See第8.12.3.2,“使大页面支持”

  • large_page_size

    财产价值
    系统变量large_page_size
    范围全球
    动态
    看到的是_提示应用
    类型整数
    默认值0

    如果大页面支持,这显示内存页面的大小。大内存页只支持Linux;在其他平台上,这个变量的值总是0。看到第8.12.3.2,“使大页面支持”

  • last_insert_id

    要返回的值LAST_INSERT_ID()。这是存储在二进制日志当你使用LAST_INSERT_ID()在一份声明中更新表。设置这个变量不更新的返回值mysql_insert_id()C API函数

  • lc_messages

    财产价值
    命令行格式--lc-messages=name
    系统变量lc_messages
    范围全球会议
    动态
    看到的是_提示应用
    类型字符串
    默认值en_US

    现场使用的错误信息。默认值是en_US。服务器将论证语言名称并将其与价值lc_messages_dir为错误信息文件产生的位置。看到10.11节,“设置错误消息的语言”

  • lc_messages_dir

    财产价值
    命令行格式--lc-messages-dir=dir_name
    系统变量lc_messages_dir
    范围全球
    动态
    看到的是_提示应用
    类型目录名称

    目录错误信息定位。服务器使用价值与价值lc_messages为错误信息文件产生的位置。看到10.11节,“设置错误消息的语言”

  • lc_time_names

    财产价值
    系统变量lc_time_names
    范围全球会议
    动态
    看到的是_提示应用
    类型字符串

    这个变量指定区域控制语言用于显示日期和月份的名称和缩写。这个变量的影响输出DATE_FORMAT()DAYNAME()MONTHNAME()功能.现场的名字是POSIX风格的价值等“ja_jp”'pt_BR'。默认值是在美国_无论你的系统区域设置。更多信息,参见10.15节,“MySQL服务器的区域设置的支持”

  • license

    财产价值
    系统变量license
    范围全球
    动态
    看到的是_提示应用
    类型字符串
    默认值GPL

    许可证服务器类型

  • local_infile

    财产价值
    系统变量local_infile
    范围全球
    动态
    看到的是_提示应用
    类型布尔
    默认值(>= 8.0.2)OFF
    默认值(<= 8.0.1)ON

    这个变量控制服务器端LOCAL能力LOAD DATA声明.根据local_infile设置服务器拒绝或允许本地数据加载的客户,当地在客户端上启用

    明确导致服务器拒绝或允许LOAD DATA LOCAL陈述(不论如何客户端程序和库的配置在建设或运行时),开始mysqldlocal_infile禁用或启用,分别local_infile也可以在运行时设置。有关更多信息,参见第6.1.6,“负荷数据的本地“安全问题

  • lock_wait_timeout

    财产价值
    命令行格式--lock-wait-timeout=#
    系统变量lock_wait_timeout
    范围全球会议
    动态
    看到的是_提示应用
    类型整数
    默认值31536000
    最小值1
    最大值31536000

    这个变量指定试图获取元数据锁秒超时。允许值的范围从1到31536000(1年)。默认的是31536000。

    这次暂停适用于所有语句中使用元数据锁。这些包括DML和DDL操作表、视图、存储过程、存储功能,以及LOCK TABLESFLUSH TABLES WITH READ LOCK,和HANDLER声明.

    这个时间并不适用于隐式访问系统表中mysql数据库,如授权表的修改GRANTREVOKE报表或表格记录报表。超时是适用于系统表的直接访问,如SELECTUPDATE

    超时值将分别为每个元数据锁的尝试。一个给定的语句可能需要超过一个锁,所以对于语句为长于块是可能的lock_wait_timeout报告前超时错误值。当锁超时,ER_LOCK_WAIT_TIMEOUT据报道

    lock_wait_timeout还定义了大量的时间,LOCK INSTANCE FOR BACKUP语句等待锁在放弃之前。

  • locked_in_memory

    财产价值
    系统变量locked_in_memory
    范围全球
    动态
    看到的是_提示应用

    是否mysqld被锁在记忆--memlock

  • log_error

    财产价值
    命令行格式--log-error[=file_name]
    系统变量log_error
    范围全球
    动态
    看到的是_提示应用
    类型文件名

    默认的错误日志的目的。如果目标是控制台,价值stderr。否则,目的地是一个文件,log_error值是文件名。看到5.4.2部分,“错误日志”

  • log_error_filter_rules

    财产价值
    命令行格式--log-error-filter-rules
    介绍8.0.2
    远离的8.0.4
    系统变量log_error_filter_rules
    范围全球
    动态
    看到的是_提示应用
    类型字符串
    默认值set by server

    错误日志记录的过滤规则。这是未使用的变量。这是8.0.4删除MySQL。

  • log_error_services

    财产价值
    命令行格式--log-error-services
    介绍8.0.2
    系统变量log_error_services
    范围全球
    动态
    看到的是_提示应用
    类型字符串
    默认值log_filter_internal; log_sink_internal

    为使组件的错误日志。变量可以包含一个列表,0,1,或多个元素。在后一种情况下,元件可以用分号或分隔(如MySQL 8.0.12)逗号,后跟空间。一个给定的设置不能使用分号和逗号分隔符。组件的顺序很重要因为服务器执行元件的顺序列出。任何加载(未建成)组件命名的log_error_services价值必须首先安装INSTALL COMPONENT。有关更多信息,参见第5.4.2.1,“错误日志组件配置”

  • log_error_suppression_list

    财产价值
    命令行格式--log-error-suppression-list=value
    介绍8.0.13
    系统变量log_error_suppression_list
    范围全球
    动态
    看到的是_提示应用
    类型字符串
    默认值empty string

    这个变量可以指定哪些诊断不应写入错误日志时发生的严重性WARNING信息。例如,如果一个特定类型的警告经常发生但不感兴趣(因此可能被认为是不可取的噪音在错误日志中),它可以抑制。

    变量的值可能是无抑制的空字符串,或一个或多个用逗号分隔的值指示抑制错误代码。

    每个代码被抑制的数值必须在允许范围内:

    • 1到(但不包括)1000:全球的错误代码是由服务器和客户机共享

    • 10000、高:服务器错误代码将写入错误日志(不发送到客户端)

    企图用一个错误代码不在允许范围内产生一个误差和变值不变。

    错误代码可以是数字或符号的形式指定。一个数字代码可以指定有或没有的MY-前缀.在数字部分前导零不显著。允许代码格式的例子:

    3100031my - 31my _服务器shutdown - 00031er _ _完整

    一系列的错误代码和符号,看第三,“服务器错误代码和消息”

    服务器可以生成一个给定的错误代码在不同严重程度的信息,因此对一个错误代码列在相关消息的抑制log_error_suppression_list取决于它的严重程度。假设变量的值“1000010001,我们10002”。这些代码的消息是不是如果有严重的生成错误日志写WARNING信息。一个严重的生成的消息ERROR系统不能抑制写入错误日志。

    的影响log_error_suppression_list结合,log_error_verbosity。考虑服务器开始使用这些设置:

    [mysqld]log_error_verbosity=2     # error and warning messages onlylog_error_suppression_list='10000,10001,MY-10002'

    在这种情况下,log_error_verbosity丢弃所有的消息信息严重程度.其余的消息,log_error_suppression_list丢弃消息警告严重程度和任何指定的错误代码。

    笔记

    这个log_error_verbosity值的示例中所示(2)也是默认值,所以在镇压一切的影响信息默认情况下,如刚才所描述的信息。你必须设置log_error_verbosity3如果你想log_error_suppression_list影响信息信息严重程度.

    考虑服务器开始使用这个设置:

    [mysqld]
    log_error_verbosity=1     # error messages only
    

    在这种情况下,log_error_verbosity丢弃所有的消息警告INFORMATION严重程度.设置log_error_suppression_list没有影响,因为所有错误代码可能抑制已经废弃的log_error_verbosity设置

    log_error_suppression_list(像log_error_verbosity)的影响log_filter_internal错误日志过滤器,这是默认启用。如果过滤器被禁用,错误代码抑制不发生,必须使用任何过滤器模型是用来代替在需要的地方(例如,个人过滤规则时使用log_filter_dragnet)。关于滤波器的配置信息,看第5.4.2.1,“错误日志组件配置”

  • log_error_verbosity

    财产价值
    命令行格式--log-error-verbosity=#
    系统变量log_error_verbosity
    范围全球
    动态
    看到的是_提示应用
    类型整数
    默认值(>= 8.0.4)2
    默认值(<= 8.0.3)3
    最小值1
    最大值3

    处理用于错误日志事件的冗长,为过滤的log_filter_internal错误日志过滤器组件,这是默认启用。如果log_filter_internal被禁用,log_error_verbosity有没有效果

    下表显示值允许冗长

    所需的日志过滤log_error_verbosity价值
    错误消息
    错误和警告消息
    错误、警告和信息性消息

    选择重要的系统信息无错误的情况是印刷错误日志的log_error_verbosity价值。这些信息包括启动和关闭的消息,和一些重要的更改设置。

    的影响log_error_verbosity结合,log_error_suppression_list。see the description for examples of the后者。

    更多信息,参见第5.4.2.5,“错误日志过滤”,和第5.5.1,“错误日志组件”

  • log_output

    财产价值
    命令行格式--log-output=name
    系统变量log_output
    范围全球
    动态
    看到的是_提示应用
    类型配置
    默认值FILE
    有效值

    TABLE

    FILE

    NONE

    通用查询日志和慢查询日志输出的目标。该值可以是逗号分隔的一个或更多的单词列表TABLE(log to表)文件(日志文件),或NONE(不记录到表或文件)。默认值是文件NONE,如果存在,优先于其他任何说明符。如果该值为日志条目不写即使日志启用。如果日志没有启用,如果值发生没有记录log_output是不是。有关更多信息,参见5.4.1部分,“选择通用查询和慢查询日志输出目的地”

  • log_queries_not_using_indexes

    财产价值
    命令行格式--log-queries-not-using-indexes
    系统变量log_queries_not_using_indexes
    范围全球
    动态
    看到的是_提示应用
    类型布尔
    默认值OFF

    无论是查询不使用索引记录到慢查询日志。看到第5.4.5、“慢查询日志”

  • log_slow_admin_statements

    财产价值
    系统变量log_slow_admin_statements
    范围全球
    动态
    看到的是_提示应用
    类型布尔
    默认值OFF

    包括在报表写入慢查询日志慢行政报表。管理报表包括ALTER TABLEANALYZE TABLECHECK TABLECREATE INDEXDROP INDEXOPTIMIZE TABLE,和REPAIR TABLE

  • log_syslog

    财产价值
    命令行格式--log-syslog[={0|1}]
    过时的8.0.2(删除8.0.13)
    系统变量log_syslog
    范围全球
    动态
    看到的是_提示应用
    类型布尔
    默认值(Windows, <= 8.0.1)ON
    默认值(Unix, <= 8.0.1)OFF
    默认值(>= 8.0.2)ON(当错误记录到系统日志启用)

    MySQL 8之前,这个变量控制是否执行错误记录到系统日志(事件记录在Windows,和syslog在UNIX和类UNIX系统)。

    在MySQL 8的log_sink_syseventlog日志组件实现错误记录到系统日志(见部分5.4.2.3,”错误记录到系统日志”),和log_syslog除去。(MySQL 8.0.13之前,log_syslog存在但已废弃,没有影响。)

  • log_syslog_facility

    财产价值
    命令行格式--log-syslog-facility=value
    远离的8.0.13
    系统变量log_syslog_facility
    范围全球
    动态
    看到的是_提示应用
    类型字符串
    默认值daemon

    这个变量是在MySQL 8.0.13移除和替换的syseventlog.facility

  • log_syslog_include_pid

    财产价值
    命令行格式--log-syslog-include-pid[={0|1}]
    远离的8.0.13
    系统变量log_syslog_include_pid
    范围全球
    动态
    看到的是_提示应用
    类型布尔
    默认值ON

    这个变量是在MySQL 8.0.13移除和替换的syseventlog.include_pid

  • log_syslog_tag

    财产价值
    命令行格式--log-syslog-tag=tag
    远离的8.0.13
    系统变量log_syslog_tag
    范围全球
    动态
    看到的是_提示应用
    类型字符串
    默认值empty string

    这个变量是在MySQL 8.0.13移除和替换的syseventlog.tag

  • log_timestamps

    财产价值
    命令行格式--log-timestamps=#
    系统变量log_timestamps
    范围全球
    动态
    看到的是_提示应用
    类型枚举
    默认值UTC
    有效值

    UTC

    SYSTEM

    这个变量控制在写入错误日志消息的时间戳的时间区,和一般的查询日志和慢查询日志消息写入文件。它没有一般查询日志和慢查询日志信息写入到表的时间影响区(mysql.general_logmysql.slow_log)。行从这些表可以从本地系统时区的任何所需的时间区CONVERT_TZ()或通过设置会话time_zone系统变量

    被允许log_timestampsUTC(默认的),SYSTEM(本地系统时区)

    时间戳是使用ISO 8601和RFC 3339格式:YYYY-MM-DDThh:mm:ss.uuuuuu加尾值Zsignifying祖鲁时间(UTC)或±hh:mm(从UTC的偏移量)。

  • log_throttle_queries_not_using_indexes

    财产价值
    系统变量log_throttle_queries_not_using_indexes
    范围全球
    动态
    看到的是_提示应用
    类型整数
    默认值0

    如果log_queries_not_using_indexes启用的log_throttle_queries_not_using_indexes可变限制查询每分钟可以写的慢查询日志的数量。值0(默认)意味着没有限制。有关更多信息,参见第5.4.5、“慢查询日志”

  • log_warnings

    财产价值
    命令行格式--log-warnings[=#]
    过时的是的(除去8.0.3)
    系统变量log_warnings
    范围全球
    动态
    看到的是_提示应用
    类型整数
    默认值2
    最小值0
    最大值(64位平台)18446744073709551615
    最大值(32位平台)4294967295

    这个系统变量是MySQL 8.0.3删除。使用log_error_verbosity系统变量来代替

  • long_query_time

    财产价值
    命令行格式--long-query-time=#
    系统变量long_query_time
    范围全球会议
    动态
    看到的是_提示应用
    类型数字
    默认值10
    最小值0

    如果查询需要比这几秒时间,服务器的增量Slow_queries状态变量。如果慢查询日志功能,查询记录到慢查询日志文件。这个值是实时测量,不占用CPU的时间,所以一个查询,在阈值在轻负载的系统可能在负载沉重的一个门槛。最小值和默认值long_query_time是0和10,分别。该值可以指定分辨率微秒。记录到一个文件中,次写包括微秒部分。记录表,只有整数倍写;微秒部分被忽略。看到第5.4.5、“慢查询日志”

  • low_priority_updates

    财产价值
    命令行格式--low-priority-updates
    系统变量low_priority_updates
    范围全球会议
    动态
    看到的是_提示应用
    类型布尔
    默认值FALSE

    如果设置为1,所有的INSERTUPDATEDELETE,和锁表写报表,等到没有等待SELECT锁表中读取在受影响的表。这仅影响存储引擎只使用表级锁(如MyISAM内存,和MERGE

  • lower_case_file_system

    财产价值
    系统变量lower_case_file_system
    范围全球
    动态
    看到的是_提示应用
    类型布尔

    这个变量说明的情况下,敏感的文件名对文件系统的数据目录位于。OFF文件名是大小写敏感的,打开(放)意味着他们是不区分大小写。这个变量是只读的,它反映了一个文件系统属性和设置,它会对文件系统没有影响。

  • lower_case_table_names

    财产价值
    命令行格式--lower-case-table-names[=#]
    系统变量lower_case_table_names
    范围全球
    动态
    看到的是_提示应用
    类型整数
    默认值0
    最小值0
    最大值2

    如果设置为0,表格名称存储为特定的和比较是区分大小写的。如果设置为1,表格名称存储在磁盘上的比较,小写字母不区分大小写。如果设置为2,表的名称存储为给定的但比较小写。这个选项同样适用于数据库名称和表的别名。额外的细节,看第9.2.2,“标识符大小写敏感”

    在Windows的默认值是1。在MacOS,缺省值是2.。

    你应该配置lower_case_table_names0如果你是在一个系统里的数据目录驻留在不区分大小写的文件系统上运行MySQL(如Windows或MacOS)。这是一个不支持的组合,可能导致挂条件时运行插入…选择从tbl_name与错误的操作tbl_name信案。与MyISAM访问表的名称,用不同的字母的情况下可能造成腐败指数。

    打印一条错误消息和服务器退出如果您尝试启动服务器--lower_case_table_names=0在不区分大小写的文件系统。

    如果你使用的是InnoDB表格,你应该设置这个变量在所有平台力的名称转换为小写。

    这一变量在MySQL的设置影响为复制过滤选项对于敏感的行为。(错误# 51639)看第17.2.5,“服务器如何评价复制过滤规则”为更多的信息

    禁止在启动服务器lower_case_table_names设置不同的设置时使用的服务器初始化。限制是必要的因为不同的数据字典表的字段使用的排序规则是基于设置定义在服务器初始化,然后用不同的设置服务器重启会引入不一致就如何标识排序和比较。

  • mandatory_roles

    财产价值
    命令行格式--mandatory-roles=value
    介绍8.0.2
    系统变量mandatory_roles
    范围全球
    动态
    看到的是_提示应用
    类型字符串
    默认值empty string

    角色的服务器应该是强制性的。实际上,这些角色都自动授予每一个用户,虽然设置mandatory_roles实际上并没有改变任何用户帐户,并授予角色是不可见的mysql.role _ edges系统表

    变量的值是一个逗号分隔的角色名称列表。例子:

    SET PERSIST mandatory_roles = '`role1`@`%`,`role2`,role3,role4@localhost';
    

    设置mandatory_roles要求ROLE_ADMIN特权,另外的SYSTEM_VARIABLES_ADMINSUPER通常需要设置一个全局变量系统特权。

    角色的名字是由一个用户部分和主机部分user_name@host_name格式。茶党的主机,如果两个omitted,defaults%。更多信息,参见第6.2.5,“指定角色的名字”

    用户名和主机名,如果引用,必须用一种时尚的引用引用字符串允许范围内。

    角色的价值命名mandatory_roles不可撤销REVOKE或下降DROP ROLEDROP USER

    强制作用,如显式授予角色,不生效,直到激活(见活化作用页:1在口号时间,角色活化占据了一切颗粒物activate_all_roles_on_login系统变量是启用的,或只为角色设置为默认的角色,否则。在运行时,SET ROLE激活作用

    角色不存在时,分配给mandatory_roles但后来创建可能需要特殊的治疗被认为是强制性的。详情见强制性的角色定义

    SHOW GRANTS显示强制角色按照规则第13.7.6.21”节目,格兰特的语法”

  • max_allowed_packet

    财产价值
    命令行格式--max-allowed-packet=#
    系统变量max_allowed_packet
    范围全球会议
    动态
    看到的是_提示应用
    类型整数
    默认值(>= 8.0.3)67108864
    默认值(<= 8.0.2)4194304
    最小值1024
    最大值1073741824

    最大尺寸的一包或任何产生/中间的字符串,或发出的任何参数mysql_stmt_send_long_data()C API函数。默认的是64mb。

    包消息缓冲区初始化net_buffer_length字节,但长大max_allowed_packet当所需要的字节。这个默认值小,抓大(可能不正确的)包。

    你要使用大增加这个值BLOB列或长字符串。它应该作为最大的大BLOB你想用。该协议限制max_allowed_packet为1GB。该值应该是1024的倍数;nonmultiples是向下舍入到最接近的多。

    当你改变的消息缓冲区大小改变的价值max_allowed_packet变,你也应该改变在客户端缓冲区的大小,如果你的客户端程序,允许它。默认的max_allowed_packet价值建立在客户端库是1GB,但个别客户端程序可以重写此。例如,MySQLmysqldump有16MB和24mb违约,分别。他们也可以通过设置改变客户端的价值max_allowed_packet在命令行或在一个选项文件。

    这个变量的值是只读的会话。客户端可以接收到的字节数为会话值为。然而,服务器将不会向客户端发送更多的字节比目前全球max_allowed_packet价值。(全球价值会小于会话值如果全球价值是客户端连接。后改)

  • max_connect_errors

    财产价值
    命令行格式--max-connect-errors=#
    系统变量max_connect_errors
    范围全球
    动态
    看到的是_提示应用
    类型整数
    默认值100
    最小值1
    最大值(64位平台)18446744073709551615
    最大值(32位平台)4294967295

    如果超过这许多连续的连接请求从主机中断没有连接成功,服务器模块,进一步连接主机。你可以解除封锁主机通过冲洗主机缓存。这样做,问题FLUSH HOSTS语句或执行mysqladmin冲洗主机命令。如果连接成功建立在少于max_connect_errors尝试一前一后连接中断,对宿主的错误计数清零。然而,一旦主机被堵塞,冲洗主机缓存是开启它的唯一方法。默认值是100。

  • max_connections

    财产价值
    命令行格式--max-connections=#
    系统变量max_connections
    范围全球
    动态
    看到的是_提示应用
    类型整数
    默认值151
    最小值1
    最大值100000

    最大允许同时连接的客户端数量。默认情况下,这是151。看到第b.5.2.6,“太多的连接”为更多的信息

    增加这个值增加文件描述符的数量mysqld要求.如果所需数量的描述符是不可用的,服务器减少值max_connections。看到第8.4.3.1,“MySQL如何打开和关闭表”文件描述符的限制,在评论。

    mysqld其实证max_connections+1客户端连接。额外的连接预留使用账户,有CONNECTION_ADMINSUPER特权。通过授予SUPER特权用户而非普通用户(那些不需要的),管理员可以连接到服务器并使用SHOW PROCESSLIST诊断问题即使没有特权的用户连接数达到最大。看到第13.7.6.29,“显示列表的语法”

    拒绝登录because themax_connections达到限制增量Connection_errors_max_connections状态变量

  • max_delayed_threads

    财产价值
    命令行格式--max-delayed-threads=#
    过时的
    系统变量max_delayed_threads
    范围全球会议
    动态
    看到的是_提示应用
    类型整数
    默认值20
    最小值0
    最大值16384

    这个系统变量是过时的(因为DELAYED不支持插入),并将在未来的版本中删除。

  • max_digest_length

    财产价值
    命令行格式--max-digest-length=#
    系统变量max_digest_length
    范围全球
    动态
    看到的是_提示应用
    类型整数
    默认值1024
    最小值0
    最大值1048576

    可计算的最大字节数归一化声明摘要。一旦空间量是消化过程的计算,用截断发生:从分析的声明没有进一步的令牌收集或图为摘要值。不同的只是之后很多字节解析令牌产生相同的归一化的声明,如果消化相比或者汇总消化统计认为是相同的语句。

    降低max_digest_length值降低内存的使用而导致更多的陈述变得难以区分的摘要值如果不同,只有到了最后。增加值允许更长的语句加以区别,但增加了内存的使用,特别是对工作中涉及到大量的并发会话(服务器配置max_digest_length个字节的会话)

    分析器使用该系统变量对归一化的语句消化的最大长度的限制,计算。性能模式,如果它跟踪语句消化,使副本的摘要值,使用performance_schema_max_digest_length。系统变量对消化的最大长度的限制,它的商店。因此,如果performance_schema_max_digest_length小于max_digest_length截断,是相对于原来的摘要值在性能模式存储的摘要值。

    有关声明消化的更多信息,参见25.9节,“性能架构声明消化和采样”

  • max_error_count

    财产价值
    命令行格式--max-error-count=#
    系统变量max_error_count
    范围全球会议
    动态
    看到的是_提示应用
    类型整数
    默认值(>= 8.0.3)1024
    默认值(<= 8.0.2)64
    最小值0
    最大值65535

    错误,警告和信息的最大数量,需要保存的信息显示的SHOW ERRORSSHOW WARNINGS声明.这是由于在诊断区域条件区域的数量相同,因此,可通过检查条件数GET DIAGNOSTICS

  • max_execution_time

    财产价值
    命令行格式--max-execution-time=#
    系统变量max_execution_time
    范围全球会议
    动态
    看到的是_提示应用
    类型整数
    默认值0

    执行超时SELECT报表,以毫秒为单位。如果该值为0,超时未启用。

    max_execution_time适用如下:

    • 全球max_execution_time价值提供了新的连接会话的缺省值。会话值适用于选择死刑的执行,不包括在会话MAX_EXECUTION_TIME(N)优化器提示或其N0

    • max_execution_time适用于只读SELECT声明.声明不是只读那些调用存储函数修改数据的副作用。

    • max_execution_time被忽略的SELECT在存储的程序语句

  • max_heap_table_size

    财产价值
    命令行格式--max-heap-table-size=#
    系统变量max_heap_table_size
    范围全球会议
    动态
    看到的是_提示应用
    类型整数
    默认值16777216
    最小值16384
    最大值(64位平台)1844674407370954752
    最大值(32位平台)4294967295

    这个变量设置的最大大小,用户创建的MEMORY表允许成长。变量的值是用来计算内存MAX_ROWS价值观。设置这个变量在任何现有的无影响内存表表,除非重新声明,如创建CREATE TABLE或改变ALTER TABLETRUNCATE TABLE。重新启动服务器还设置存在的最大尺寸内存表全球max_heap_table_size价值

    这个变量也是配合使用tmp_table_size限制在内存表的内部尺寸。看到第8.4.4,“MySQL”使用内部临时表

    max_heap_table_size是不可复制的。看到第17.4.1.21,“复制记忆表”,和第17.4.1.39,“复制和变量”为更多的信息

  • max_insert_delayed_threads

    财产价值
    过时的
    系统变量max_insert_delayed_threads
    范围全球会议
    动态
    看到的是_提示应用
    类型整数

    这个变量是同义词max_delayed_threads

    这个系统变量是过时的(因为DELAYED不支持插入),并将在未来的版本中删除。

  • max_join_size

    财产价值
    命令行格式--max-join-size=#
    系统变量max_join_size
    范围全球会议
    动态
    看到的是_提示应用
    类型整数
    默认值18446744073709551615
    最小值1
    最大值18446744073709551615

    没有许可证,可能需要检查多个报表max_join_size行(单表报表)或行组合(多表报表)或有可能做的比max_join_size磁盘寻道。通过设置这个值,你可以catch语句,钥匙使用不当,可能会花很长的时间。如果你设置它的用户倾向于进行连接,缺乏哪里条款,这需要很长的时间,或返回百万行。

    设置这个变量以外的价值DEFAULT重置价值sql_big_selects。如果你设置sql_big_selects又一次的价值,max_join_size变量被忽略

  • max_length_for_sort_data

    财产价值
    命令行格式--max-length-for-sort-data=#
    系统变量max_length_for_sort_data
    范围全球会议
    动态
    看到的是_提示应用
    类型整数
    默认值(>= 8.0.1)4096
    默认值(8.0.0)1024
    最小值4
    最大值8388608

    截止于大小的指标值确定filesort使用的算法。看到第8.2.1.14,“优化”命令

  • max_points_in_geometry

    财产价值
    命令行格式--max-points-in-geometry=integer
    系统变量max_points_in_geometry
    范围全球会议
    动态
    看到的是_提示应用
    类型整数
    默认值65536
    最小值3
    最大值1048576

    最高价值的points_per_circle争论的ST_Buffer_Strategy()功能

  • max_prepared_stmt_count

    财产价值
    命令行格式--max-prepared-stmt-count=#
    系统变量max_prepared_stmt_count
    范围全球
    动态
    看到的是_提示应用
    类型整数
    默认值16382
    最小值0
    最大值1048576

    这个变量限制的准备好的语句在服务器的总数。它可以用在环境那里是基于运行的报表服务器内存大量制备的拒绝服务攻击的潜力。如果该值设置为低于预处理语句的数量,现有的报表不受影响,可以使用,但没有新的报表可以准备到目前的数量低于极限。默认值是16382。值的允许范围是从0到1万。将值设置为0进制的准备好的语句。

  • max_seeks_for_key

    财产价值
    命令行格式--max-seeks-for-key=#
    系统变量max_seeks_for_key
    范围全球会议
    动态
    看到的是_提示应用
    类型整数
    默认值(64位平台)18446744073709551615
    默认值(32位平台)4294967295
    最小值1
    最大值(64位平台)18446744073709551615
    最大值(32位平台)4294967295

    极限假设的最大数量的追求在查找基于关键行。MySQL优化器假设不超过这个数量的关键寻找需要搜索时,通过扫描索引匹配表中的行,不论其指标的实际基数(见第13.7.6.22,显示指数的语法”)。通过设置到一个较低的值(比如100),你可以强制MySQL喜欢指标代替表扫描。

  • max_sort_length

    财产价值
    命令行格式--max-sort-length=#
    系统变量max_sort_length
    范围全球会议
    动态
    看到的是_提示应用
    类型整数
    默认值1024
    最小值4
    最大值8388608

    使用排序时数据值的字节数。服务器只使用第一max_sort_length每个值的字节并忽略其余。因此,只有在第一个值不同max_sort_length字节相等为ORDER BY,和不同的运营

    增加值max_sort_length可能需要增加价值sort_buffer_size也.详情见第8.2.1.14,“优化”命令

  • max_sp_recursion_depth

    财产价值
    命令行格式--max-sp-recursion-depth[=#]
    系统变量max_sp_recursion_depth
    范围全球会议
    动态
    看到的是_提示应用
    类型整数
    默认值0
    最大值255

    的任何存储过程可以递归调用的次数。此选项的默认值是0,完全禁用递归存储过程。最大值为255。

    存储过程递归增加线程的堆栈空间的需求。如果你增加价值max_sp_recursion_depth,可能需要通过增加值增加线程的堆栈大小thread_stack在服务器启动

  • max_tmp_tables

    这个系统变量是MySQL 8.0.3删除。

  • max_user_connections

    财产价值
    命令行格式--max-user-connections=#
    系统变量max_user_connections
    范围全球会议
    动态
    看到的是_提示应用
    类型整数
    默认值0
    最小值0
    最大值4294967295

    同时连接允许任何给定的MySQL用户账户的最大数量。值0(默认)意味着没有限制

    这个变量具有全局值,可设置在服务器启动或运行时。它也有一个只读的会话值表明有效的同步连接限制,适用于当前会话关联的帐户。会话值初始化如下:

    考虑资源限制指定使用CREATE USERALTER USER声明。看到第6.3.6,“设置账户资源限制”

  • max_write_lock_count

    财产价值
    命令行格式--max-write-lock-count=#
    系统变量max_write_lock_count
    范围全球
    动态
    看到的是_提示应用
    类型整数
    默认值(64位平台)18446744073709551615
    默认值(32位平台)4294967295
    最小值1
    最大值(64位平台)18446744073709551615
    最大值(32位平台)4294967295

    经过这许多写锁,允许一些悬而未决的读锁请求被处理的关系。

  • mecab_rc_file

    财产价值
    命令行格式--mecab-rc-file
    系统变量mecab_rc_file
    范围全球
    动态
    看到的是_提示应用
    类型目录名称

    这个mecab_rc_file选项时使用的设置mecab全文解析。

    这个mecab_rc_file选项定义的路径mecabrc配置文件,这是mecab配置文件。该选项是只读的,只能设置在启动。这个mecabrc配置文件是必需的初始化mecab。

    关于MeCab全文解析信息,看第12.9.9,“mecab全文解析插件”

    有关的选项,可以在mecab指定信息mecabrc配置文件,请参阅MECB文件谷歌开发者站点

  • metadata_locks_cache_size

    财产价值
    过时的是的(除去8.0.13)
    系统变量metadata_locks_cache_size
    范围全球
    动态
    看到的是_提示应用
    类型整数
    默认值1024
    最小值1
    最大值1048576

    这是8.0.13删除MySQL系统变量。

  • metadata_locks_hash_instances

    财产价值
    过时的是的(除去8.0.13)
    系统变量metadata_locks_hash_instances
    范围全球
    动态
    看到的是_提示应用
    类型整数
    默认值8
    最小值1
    最大值1024

    这是8.0.13删除MySQL系统变量。

  • min_examined_row_limit

    财产价值
    命令行格式--min-examined-row-limit=#
    系统变量min_examined_row_limit
    范围全球会议
    动态
    看到的是_提示应用
    类型整数
    默认值0
    最小值0
    最大值(64位平台)18446744073709551615
    最大值(32位平台)4294967295

    查询检查少于这个数行不被记录到慢查询日志。

  • multi_range_count

    财产价值
    命令行格式--multi-range-count=#
    过时的是的(除去8.0.3)
    系统变量multi_range_count
    范围全球会议
    动态
    看到的是_提示应用
    类型整数
    默认值256
    最小值1
    最大值4294967295

    这个系统变量是MySQL 8.0.3删除。

  • myisam_data_pointer_size

    财产价值
    命令行格式--myisam-data-pointer-size=#
    系统变量myisam_data_pointer_size
    范围全球
    动态
    看到的是_提示应用
    类型整数
    默认值6
    最小值2
    最大值7

    在字节默认的指针的大小,可以使用CREATE TABLEMyISAM表时没有MAX_ROWS指定选项。这个变量不能小于2或大于7。默认值是6。看到第b.5.2.11,“桌上摆满了”

  • myisam_max_sort_file_size

    财产价值
    命令行格式--myisam-max-sort-file-size=#
    系统变量myisam_max_sort_file_size
    范围全球
    动态
    看到的是_提示应用
    类型整数
    默认值(64位平台)9223372036854775807
    默认值(32位平台)2147483648

    MySQL允许使用而重新创建一个最大的临时文件大小MyISAM指数(在REPAIR TABLEALTER TABLE,或LOAD DATA INFILE)。如果文件大小会大于此值,索引使用密钥缓存而创造的,这是慢。该值是在字节。

    如果MyISAM索引文件超过这个大小和可用磁盘空间,增加值可以帮助性能。空间必须是可用的文件系统中的目录,包含原来的索引文件位于。

  • myisam_mmap_size

    财产价值
    命令行格式--myisam-mmap-size=#
    系统变量myisam_mmap_size
    范围全球
    动态
    看到的是_提示应用
    类型整数
    默认值(64位平台)18446744073709551615
    默认值(32位平台)4294967295
    最小值7
    最大值(64位平台)18446744073709551615
    最大值(32位平台)4294967295

    最大内存使用内存映射压缩MyISAM文件如果很多压缩MyISAM使用表值可以降低内存交换问题的可能性。

  • myisam_recover_options

    财产价值
    系统变量myisam_recover_options
    范围全球
    动态
    看到的是_提示应用

    的价值--myisam-recover-options选项看到第5.1.6、“服务器选项”

  • myisam_repair_threads

    财产价值
    命令行格式--myisam-repair-threads=#
    系统变量myisam_repair_threads
    范围全球会议
    动态
    看到的是_提示应用
    类型整数
    默认值1
    最小值1
    最大值(64位平台)18446744073709551615
    最大值(32位平台)4294967295

    如果这个值是大于1,MyISAM表创建索引的并行(在它自己的线程中各指标)通过分类修复过程。默认值是1

    笔记

    多线程的修复仍然是β-质量代码

  • myisam_sort_buffer_size

    财产价值
    命令行格式--myisam-sort-buffer-size=#
    系统变量myisam_sort_buffer_size
    范围全球会议
    动态
    看到的是_提示应用
    类型整数
    默认值8388608
    最小值4096
    最大值(其他的64位平台)18446744073709551615
    最大值(其他的32位平台)4294967295
    最大值(Windows 64位平台)18446744073709551615
    最大值(Windows 32位平台)4294967295

    缓冲区的大小排序,分配时MyISAM在一个指标REPAIR TABLE或创建索引时CREATE INDEXALTER TABLE

  • myisam_stats_method

    财产价值
    命令行格式--myisam-stats-method=name
    系统变量myisam_stats_method
    范围全球会议
    动态
    看到的是_提示应用
    类型枚举
    默认值nulls_unequal
    有效值

    nulls_equal

    nulls_unequal

    nulls_ignored

    服务器如何对待NULL值时收集统计信息的索引值的分布MyISAM表这个变量有三个可能的值,nulls_equalnulls_unequal,和nulls_ignored。为nulls_equal,所有的NULL指数值都是相同的,形成一个单值群,有大小相等的数量无效的价值观。为nulls_unequal无效的价值观是不平等的,每个NULL形成了一个鲜明的尺寸值组。为nulls_ignoredNULL值将被忽略

    该方法是用于生成统计表如何影响优化器选择查询执行的指标,如第8.3.8,”InnoDB和MyISAM索引的统计信息收集”

  • myisam_use_mmap

    财产价值
    命令行格式--myisam-use-mmap
    系统变量myisam_use_mmap
    范围全球
    动态
    看到的是_提示应用
    类型布尔
    默认值OFF

    阅读和写作使用内存映射MyISAM

  • mysql_native_password_proxy_users

    财产价值
    命令行格式--mysql-native-password-proxy-users=[={OFF|ON}]
    系统变量mysql_native_password_proxy_users
    范围全球
    动态
    看到的是_提示应用
    类型布尔
    默认值OFF

    此变量控制器mysql_native_password内置的身份验证插件支持代理用户。它有没有效果,除非check_proxy_users系统变量是启用。有关用户代理信息,看第6.3.11”代理用户”

  • named_pipe

    财产价值
    系统变量named_pipe
    范围全球
    动态
    看到的是_提示应用
    特定平台Windows
    类型布尔
    默认值OFF

    (仅适用于Windows。)指示服务器是否支持命名管道连接。

  • net_buffer_length

    财产价值
    命令行格式--net-buffer-length=#
    系统变量net_buffer_length
    范围全球会议
    动态
    看到的是_提示应用
    类型整数
    默认值16384
    最小值1024
    最大值1048576

    每个客户端线程相关联的连接缓冲和缓冲。都开始于一个给定大小的net_buffer_length但动态放大max_allowed_packet字节的需要。结果缓冲收缩net_buffer_length每个SQL语句之后

    这个变量一般不应改变,但如果你的内存很小,你可以将它设置为发送客户所陈述的预期长度。如果报表超过这个长度,连接缓冲区自动放大。其中的最大值net_buffer_length可以设置为1MB

    这个变量的值是只读的会话。

  • net_read_timeout

    财产价值
    命令行格式--net-read-timeout=#
    系统变量net_read_timeout
    范围全球会议
    动态
    看到的是_提示应用
    类型整数
    默认值30
    最小值1

    等待更多的数据从连接之前中止读取秒数。当服务器从客户端,net_read_timeout是超时值控制时终止。当服务器写入客户端,net_write_timeout是超时值控制时终止。参见slave_net_timeout

  • net_retry_count

    财产价值
    命令行格式--net-retry-count=#
    系统变量net_retry_count
    范围全球会议
    动态
    看到的是_提示应用
    类型整数
    默认值10
    最小值1
    最大值(64位平台)18446744073709551615
    最大值(32位平台)4294967295

    如果一个读或写一个通信端口中断,重试多次放弃。该值应设置在FreeBSD很高因为内部中断发送到所有的线程。

  • net_write_timeout

    财产价值
    命令行格式--net-write-timeout=#
    系统变量net_write_timeout
    范围全球会议
    动态
    看到的是_提示应用
    类型整数
    默认值60
    最小值1

    等待被写入连接之前中止写一块的秒数。参见net_read_timeout

  • new

    财产价值
    命令行格式--new
    系统变量new
    范围全球会议
    动态
    看到的是_提示应用
    禁用的skip-new
    类型布尔
    默认值FALSE

    这个变量被用于MySQL 4.0打开一些4.1行为,是为了保持向后的兼容性。它的值总是OFF

  • ngram_token_size

    财产价值
    命令行格式--ngram-token-size
    系统变量ngram_token_size
    范围全球
    动态
    看到的是_提示应用
    类型整数
    默认值2
    最小值1
    最大值10

    定义了N-gram全文解析器的N-gram令牌的大小。这个ngram_token_size选项是只读的,只能修改启动。默认值是2(二)。最大值为10。

    为更多的信息关于如何配置这个变量,看第12.9.8,“创建全文解析”

  • offline_mode

    财产价值
    命令行格式--offline-mode=val
    系统变量offline_mode
    范围全球
    动态
    看到的是_提示应用
    类型布尔
    默认值OFF

    服务器是否是离线模式具有这些特点:

    • 连接的客户端的用户谁没有CONNECTION_ADMINSUPER特权是断开的要求下,用适当的误差。断开包括终止运行报表和释放锁。这样的客户也不能启动新的连接,并接受适当的错误。

    • 连接的客户端用户谁有CONNECTION_ADMINSUPER特权不是断开连接,并启动新的连接管理服务器。

    • 复制从线程被允许保持应用数据到服务器。

    只有用户有SYSTEM_VARIABLES_ADMINSUPER权限可以控制离线模式。把一个服务器处于脱机模式,改变的价值offline_mode系统变量关闭ON。恢复正常运营,改变offline_mode打开(放)OFF。在离线模式下,客户收到拒绝访问ER_SERVER_OFFLINE_MODE误差

  • old

    财产价值
    命令行格式--old
    系统变量old
    范围全球
    动态
    看到的是_提示应用

    old是一个兼容的变量。它默认是禁用的,但可以在启动时启用恢复服务器的旧版本目前的行为。

    什么时候old启用,它改变了索引提示默认的范围,使用MySQL 5.1.17之前。那是,索引提示没有条款仅适用于如何使用索引行检索并没有解决ORDER BY跨标点。(这第8.9.4,”指标提示”。)要使这一复制设置护理。基于二进制日志记录语句,有主人和奴隶不同的模式可能会导致复制错误。

  • old_alter_table

    财产价值
    命令行格式--old-alter-table
    系统变量old_alter_table
    范围全球会议
    动态
    看到的是_提示应用
    类型布尔
    默认值OFF

    当启用此变量,服务器不使用处理的优化方法ALTER TABLE运营它将使用一个临时表,在数据复制,然后重命名临时表的原件,由MySQL 5和更早的使用。在操作的更多信息ALTER TABLE,看到第13.1.8,“ALTER TABLE语法”

    ALTER TABLE ... DROP PARTITIONold_alter_table=ON重建分区表和试图将数据从下降到另一个分区的分区与兼容分区…价值观定义不能移动到另一个分区的数据将被删除。在以前的版本,ALTER TABLE ... DROP PARTITIONold_alter_table=ON删除存储在分区的分区数据,滴。

  • old_passwords

    财产价值
    过时的是的(除去8.0.11)
    系统变量old_passwords
    范围全球会议
    动态
    看到的是_提示应用
    类型枚举
    默认值0
    有效值

    0

    2

    这是8.0.11删除MySQL系统变量。

  • open_files_limit

    财产价值
    命令行格式--open-files-limit=#
    系统变量open_files_limit
    范围全球
    动态
    看到的是_提示应用
    类型整数
    默认值5000, with possible adjustment
    最小值0
    最大值platform dependent

    那操作系统允许的文件数mysqld打开。在运行时,此变量的值是由系统允许的真实价值可能不同于您指定在服务器启动的价值。值为0的系统中,MySQL无法改变打开文件数。

    有效open_files_limit价值是基于在系统启动时指定的值(如果有)和价值max_connectionstable_open_cache利用这些公式:

    1)10 max_connections(table_open_cache×2)2)max_connections×53)如果positive4)限制操作系统,如果操作系统限制是无限的:open_files_limit值指定在启动时,如果没有5000

    服务器试图获取文件描述符使用这三个值的最大数量。如果许多描述符不能获得服务器试图获得系统的许多许多。

  • optimizer_prune_level

    财产价值
    命令行格式--optimizer-prune-level[=#]
    系统变量optimizer_prune_level
    范围全球会议
    动态
    看到的是_提示应用
    类型布尔
    默认值1

    控制算法应用在查询优化过程中修剪较有前途的部分计划从优化搜索空间。值0禁用启发式使优化器执行穷举搜索。1的值会导致优化器修剪以中间计划检索的行数计划。

  • optimizer_search_depth

    财产价值
    命令行格式--optimizer-search-depth[=#]
    系统变量optimizer_search_depth
    范围全球会议
    动态
    看到的是_提示应用
    类型整数
    默认值62
    最小值0
    最大值62

    由查询优化器执行搜索的最大深度。值大于更好的查询计划的查询结果的数量关系,但需要更长的时间来生成一个查询执行计划。值小于查询中的数量关系返回执行计划,更快,但产生的计划可能不是最优。如果设置为0,系统自动选择一个合理的值。

  • optimizer_switch

    财产价值
    命令行格式--optimizer-switch=value
    系统变量optimizer_switch
    范围全球会议
    动态
    看到的是_提示应用
    类型配置
    有效值(>= 8.0.13)

    batched_key_access={on|off}

    block_nested_loop={on|off}

    condition_fanout_filter={on|off}

    derived_merge={on|off}

    duplicateweedout={on|off}

    engine_condition_pushdown={on|off}

    firstmatch={on|off}

    index_condition_pushdown={on|off}

    index_merge={on|off}

    index_merge_intersection={on|off}

    index_merge_sort_union={on|off}

    index_merge_union={on|off}

    loosescan={on|off}

    materialization={on|off}

    mrr={on|off}

    mrr_cost_based={on|off}

    semijoin={on|off}

    skip_scan={on|off}

    subquery_materialization_cost_based={on|off}

    use_index_extensions={on|off}

    use_invisible_indexes={on|off}

    有效值(>= 8.0.3, <= 8.0.12)

    batched_key_access={on|off}

    block_nested_loop={on|off}

    condition_fanout_filter={on|off}

    derived_merge={on|off}

    duplicateweedout={on|off}

    engine_condition_pushdown={on|off}

    firstmatch={on|off}

    index_condition_pushdown={on|off}

    index_merge={on|off}

    index_merge_intersection={on|off}

    index_merge_sort_union={on|off}

    index_merge_union={on|off}

    loosescan={on|off}

    materialization={on|off}

    mrr={on|off}

    mrr_cost_based={on|off}

    semijoin={on|off}

    subquery_materialization_cost_based={on|off}

    use_index_extensions={on|off}

    use_invisible_indexes={on|off}

    有效值(<= 8.0.2)

    batched_key_access={on|off}

    block_nested_loop={on|off}

    condition_fanout_filter={on|off}

    derived_merge={on|off}

    duplicateweedout={on|off}

    engine_condition_pushdown={on|off}

    firstmatch={on|off}

    index_condition_pushdown={on|off}

    index_merge={on|off}

    index_merge_intersection={on|off}

    index_merge_sort_union={on|off}

    index_merge_union={on|off}

    loosescan={on|off}

    materialization={on|off}

    mrr={on|off}

    mrr_cost_based={on|off}

    semijoin={on|off}

    subquery_materialization_cost_based={on|off}

    use_index_extensions={on|off}

    这个optimizer_switch系统变量使优化器的行为控制。这个变量的值是一组标志,每一种都有价值打开(放)off指示是否启用或禁用相应的优化行为。这个变量具有全局和会话的值可以在运行时改变。全局默认可设置在服务器启动。

    看到优化器旗帜当前设置,选择变量的值:

    mysql> SELECT @@optimizer_switch\G
    *************************** 1. row ***************************
    @@optimizer_switch: index_merge=on,index_merge_union=on,
                        index_merge_sort_union=on,
                        index_merge_intersection=on,
                        engine_condition_pushdown=on,
                        index_condition_pushdown=on,
                        mrr=on,mrr_cost_based=on,
                        block_nested_loop=on,batched_key_access=off,
                        materialization=on,semijoin=on,loosescan=on,
                        firstmatch=on,duplicateweedout=on,
                        subquery_materialization_cost_based=on,
                        use_index_extensions=on,
                        condition_fanout_filter=on,derived_merge=on,
                        use_invisible_indexes=off,skip_scan=on
    

    为更多的信息关于这个变量的语法和优化器的行为,它控制着,看第3,“开关的优化”

  • optimizer_trace

    财产价值
    系统变量optimizer_trace
    范围全球会议
    动态
    看到的是_提示应用
    类型字符串

    这个变量控制优化追踪。详情见MySQL内核:追踪优化器

  • optimizer_trace_features

    财产价值
    系统变量optimizer_trace_features
    范围全球会议
    动态
    看到的是_提示应用
    类型字符串

    这个变量启用或禁用选定的优化跟踪功能。详情见MySQL内核:追踪优化器

  • optimizer_trace_limit

    财产价值
    系统变量optimizer_trace_limit
    范围全球会议
    动态
    看到的是_提示应用
    类型整数
    默认值1

    要显示的最大数量的优化痕迹。详情见MySQL内核:追踪优化器

  • optimizer_trace_max_mem_size

    财产价值
    系统变量optimizer_trace_max_mem_size
    范围全球会议
    动态
    看到的是_提示应用
    类型整数
    默认值(>= 8.0.4)1048576
    默认值(<= 8.0.3)16384

    存储优化痕迹累积的最大大小。详情见MySQL内核:追踪优化器

  • optimizer_trace_offset

    财产价值
    系统变量optimizer_trace_offset
    范围全球会议
    动态
    看到的是_提示应用
    类型整数
    默认值-1

    优化器的痕迹显示偏移。详情见MySQL内核:追踪优化器

  • performance_schema_xxx

    性能模式系统变量中列出25.14节,“性能模式系统变量”。这些变量可以用来配置性能模式运行。

  • parser_max_mem_size

    财产价值
    命令行格式--parser-max-mem-size=N
    系统变量parser_max_mem_size
    范围全球会议
    动态
    看到的是_提示应用
    类型整数
    默认值(64位平台)18446744073709551615
    默认值(32位平台)4294967295
    最小值10000000
    最大值(64位平台)18446744073709551615
    最大值(32位平台)4294967295

    可以使用的最大内存量解析。默认值的地方,可用内存没有限制。这个值可以减少防止了内存的情况下,通过解析长或复杂的SQL语句造成的。

  • password_history

    财产价值
    命令行格式--password-history=#
    介绍8.0.3
    系统变量password_history
    范围全球
    动态
    看到的是_提示应用
    类型整数
    默认值0
    最小值0
    最大值4294967295

    这个变量的基础上定义了需要修改密码的最小数量的以前的密码控制复用的全球政策。一个帐号密码以前,这个变量表示后续帐户密码变更必须发生在密码可以重复使用的数量。如果值为零(默认),这是基于密码的修改没有重用的限制。

    更改此变量立即申请与定义的所有账户PASSWORD HISTORY DEFAULT选项

    更改密码重用政策全球数量可以覆盖所需的个人帐户的使用PASSWORD HISTORY期权的CREATE USERALTER USER声明.看到第6.3.8,“密码管理”

  • password_require_current

    财产价值
    命令行格式--password-require-current[={OFF|ON}]
    介绍8.0.13
    系统变量password_require_current
    范围全球
    动态
    看到的是_提示应用
    类型布尔
    默认值OFF

    这个变量的定义用于控制是否试图更改帐户密码必须要更换指定当前密码的全球政策。

    更改此变量立即申请与定义的所有账户PASSWORD REQUIRE CURRENT DEFAULT选项

    全球验证所需的政策可以覆盖所需的个人帐户的使用PASSWORD REQUIRE期权的CREATE USERALTER USER声明.看到第6.3.8,“密码管理”

  • password_reuse_interval

    财产价值
    命令行格式--password-reuse-interval=#
    介绍8.0.3
    系统变量password_reuse_interval
    范围全球
    动态
    看到的是_提示应用
    类型整数
    默认值0
    最小值0
    最大值4294967295

    该变量定义了基于时间以前的密码控制复用的全球政策。一个帐号密码以前,这个变量表示的日子,必须在密码可重复使用次数的。如果值为零(默认),这是基于时间的不可重复使用的限制。

    更改此变量立即申请与定义的所有账户PASSWORD REUSE INTERVAL DEFAULT选项

    全球时间密码重用政策可以覆盖所需的个人帐户的使用PASSWORD REUSE INTERVAL期权的CREATE USERALTER USER声明.看到第6.3.8,“密码管理”

  • persisted_globals_load

    财产价值
    命令行格式--persisted-globals-load[=ON|OFF]
    系统变量persisted_globals_load
    范围全球
    动态
    看到的是_提示应用
    类型布尔
    默认值ON

    无论从负载持续配置设置mysqld-auto.cnf在数据目录下的文件。服务器通常处理这个文件在启动所有其他选项文件后(见第4.2.6、“使用选项文件”)。禁用persisted_globals_load使服务器的启动顺序跳过mysqld-auto.cnf

    修改的内容mysqld-auto.cnf,使用SET PERSISTpersist_only声明,或RESET PERSIST声明。看到第13.7.5.1,”句法变量赋值”

  • pid_file

    财产价值
    命令行格式--pid-file=file_name
    系统变量pid_file
    范围全球
    动态
    看到的是_提示应用
    类型文件名

    进程的ID文件的路径名。这个变量可以设置与--pid-file选项服务器创建的数据目录的文件除非绝对路径名是给指定一个不同的目录。如果您指定的--pid-file选项,你必须指定一个值。如果你不指定--pid-file选项,MySQL使用默认值host_namePID,在那里host_name是主机名称

    进程ID文件被其它程序如用_ mysqld safe确定服务器的进程ID,在Windows中,这个变量也影响默认的错误日志文件的名称。看到5.4.2部分,“错误日志”

  • plugin_dir

    财产价值
    命令行格式--plugin-dir=dir_name
    系统变量plugin_dir
    范围全球
    动态
    看到的是_提示应用
    类型目录名称
    默认值BASEDIR/lib/plugin

    插件的目录的路径名

    如果插件目录是由服务器可写,可能会写的一个用户可执行代码文件目录中的应用SELECT ... INTO DUMPFILE。这是可以预防的plugin_dir通过设置只读到服务器或--secure-file-priv一个目录SELECT写可安全

  • port

    财产价值
    命令行格式--port=#
    系统变量port
    范围全球
    动态
    看到的是_提示应用
    类型整数
    默认值3306
    最小值0
    最大值65535

    多端口的服务器侦听TCP/IP连接。这个变量可以设置与--port选项

  • preload_buffer_size

    财产价值
    命令行格式--preload-buffer-size=#
    系统变量preload_buffer_size
    范围全球会议
    动态
    看到的是_提示应用
    类型整数
    默认值32768
    最小值1024
    最大值1073741824

    缓冲区的分配指标,当预压的大小。

  • profiling

    如果设置为零或OFF(默认),报表分析是残疾人。如果设置为1或打开(放),语句分析启用和SHOW PROFILESHOW PROFILES报表提供分析信息。看到第13.7.6.31,“显示配置文件的语法”

    这个变量是过时的、将在未来的MySQL版本中删除。

  • profiling_history_size

    报表,分析信息,如果保持数profiling启用。默认值是15。最大值为100。将该值设置为禁用剖面。看到第13.7.6.31,“显示配置文件的语法”

    这个变量是过时的、将在未来的MySQL版本中删除。

  • protocol_version

    财产价值
    系统变量protocol_version
    范围全球
    动态
    看到的是_提示应用
    类型整数

    通过MySQL服务器使用客户机/服务器协议的版本。

  • proxy_user

    财产价值
    系统变量proxy_user
    范围会话
    动态
    看到的是_提示应用
    类型字符串

    如果当前的客户端是一个用户代理,这个变量是代理用户帐户名称。否则,这个变量是NULL。看到第6.3.11”代理用户”

  • pseudo_slave_mode

    财产价值
    系统变量pseudo_slave_mode
    范围会话
    动态
    看到的是_提示应用
    类型整数

    这个变量是服务器内部使用。

  • pseudo_thread_id

    财产价值
    系统变量pseudo_thread_id
    范围会话
    动态
    看到的是_提示应用
    类型整数

    这个变量是服务器内部使用。

  • query_alloc_block_size

    财产价值
    命令行格式--query-alloc-block-size=#
    系统变量query_alloc_block_size
    范围全球会议
    动态
    看到的是_提示应用
    类型整数
    默认值8192
    最小值1024
    最大值4294967295
    块的大小1024

    这是分配给语句的解析和执行期间创建的对象的内存块分配大小。如果你有内存碎片问题,它可能有助于增加此参数。

  • query_cache_limit

    财产价值
    命令行格式--query-cache-limit=#
    过时的是的(除去8.0.3)
    系统变量query_cache_limit
    范围全球
    动态
    看到的是_提示应用
    类型整数
    默认值1048576
    最小值0
    最大值(64位平台)18446744073709551615
    最大值(32位平台)4294967295

    这个系统变量是MySQL 8.0.3删除。

  • query_cache_min_res_unit

    财产价值
    命令行格式--query-cache-min-res-unit=#
    过时的是的(除去8.0.3)
    系统变量query_cache_min_res_unit
    范围全球
    动态
    看到的是_提示应用
    类型整数
    默认值4096
    最小值512
    最大值(64位平台)18446744073709551615
    最大值(32位平台)4294967295

    这个系统变量是MySQL 8.0.3删除。

  • query_cache_size

    财产价值
    命令行格式--query-cache-size=#
    过时的是的(除去8.0.3)
    系统变量query_cache_size
    范围全球
    动态
    看到的是_提示应用
    类型整数
    默认值(64-bit platforms, >= 8.0.1)0
    默认值(64位平台,与数量8.0.0)1048576
    默认值(32-bit platforms, >= 8.0.1)0
    默认值(32位平台,与数量8.0.0)1048576
    最小值0
    最大值(64位平台)18446744073709551615
    最大值(32位平台)4294967295

    这个系统变量是MySQL 8.0.3删除。

  • query_cache_type

    财产价值
    命令行格式--query-cache-type=#
    过时的是的(除去8.0.3)
    系统变量query_cache_type
    范围全球会议
    动态
    看到的是_提示应用
    类型枚举
    默认值0
    有效值

    0

    1

    2

    这个系统变量是MySQL 8.0.3删除。

  • query_cache_wlock_invalidate

    财产价值
    命令行格式--query-cache-wlock-invalidate
    过时的是的(除去8.0.3)
    系统变量query_cache_wlock_invalidate
    范围全球会议
    动态
    看到的是_提示应用
    类型布尔
    默认值FALSE

    这个系统变量是MySQL 8.0.3删除。

  • query_prealloc_size

    财产价值
    命令行格式--query-prealloc-size=#
    系统变量query_prealloc_size
    范围全球会议
    动态
    看到的是_提示应用
    类型整数
    默认值8192
    最小值8192
    最大值(64位平台)18446744073709551615
    最大值(32位平台)4294967295
    块的大小1024

    用于语句的解析和执行持续的缓冲区的大小。这个缓冲区是不自由的陈述之间。如果您正在运行复杂的查询,一个更大的query_prealloc_size值可能提高性能是有益的,因为它可以减少服务器执行查询操作时需要进行内存分配。

  • rand_seed1

    这个rand_seed1rand_seed2变量存在的会话变量,并且可以设置但不读。但不是他们的变量值在输出显示SHOW VARIABLES

    这些变量的目的是支持复制的RAND()功能。语句调用RAND(),主人通过两个值的奴隶,他们用种子随机数发生器。从使用这些值来设置会话变量rand_seed1rand_seed2以便RAND()在奴隶产生相同的值作为主。

  • rand_seed2

    看到描述rand_seed1

  • range_alloc_block_size

    财产价值
    命令行格式--range-alloc-block-size=#
    系统变量range_alloc_block_size
    范围全球会议
    动态
    看到的是_提示应用
    类型整数
    默认值4096
    最小值4096
    最大值(64位平台)18446744073709547520
    最大值4294967295
    块的大小1024

    这是做优化分配的范围时,块的大小。

  • range_optimizer_max_mem_size

    财产价值
    命令行格式--range-optimizer-max-mem-size=N
    系统变量range_optimizer_max_mem_size
    范围全球会议
    动态
    看到的是_提示应用
    类型整数
    默认值8388608
    最小值0
    最大值18446744073709551615

    为优化内存使用的限制范围。值为0表示没有限制如果一个执行计划优化器所考虑的范围的访问方法但优化器估计,这种方法所需要的内存量会超过限制的用途,它摒弃了计划和考虑其他计划。有关更多信息,参见限制范围优化内存使用

  • rbr_exec_mode

    财产价值
    系统变量rbr_exec_mode
    范围全球会议
    动态
    看到的是_提示应用
    类型枚举
    默认值STRICT
    有效值

    IDEMPOTENT

    STRICT

    供内部使用的mysqlbinlog。这个变量开关服务器之间IDEMPOTENT模式和严格模式IDEMPOTENT模式使得重复关键的抑制和无钥匙上发现的错误BINLOG报表生成mysqlbinlog。这种模式是有用的回放时一排的服务器上产生冲突与现有的基于数据的二进制日志。mysqlbinlog设置模式时,您指定的--idempotent通过写如下的输出选项:

    SET SESSION RBR_EXEC_MODE=IDEMPOTENT;
  • read_buffer_size

    财产价值
    命令行格式--read-buffer-size=#
    系统变量read_buffer_size
    范围全球会议
    动态
    看到的是_提示应用
    类型整数
    默认值131072
    最小值8200
    最大值2147479552

    每个线程做顺序扫描一个MyISAM表分配一个缓冲区的大小(以字节为单位)为每个表扫描。如果你做很多顺序扫描,你可能想要增加这个值,131072是默认的。这个变量的值应该是4KB的多。如果设置的值是4KB的倍数,其价值将向下舍入到最近的多个4KB。

    此选项也可在下列情况下,所有的存储引擎:

    • 在一个临时文件缓存的指标(不是一个临时表),当排序的行ORDER BY

    • 大容量插入到分区

    • 缓存结果嵌套查询

    read_buffer_size也用在另一个存储引擎的具体方式是:确定内存块的大小MEMORY

    在不同的操作对内存使用的更多信息,参见第8.12.3.1,“MySQL如何使用内存”

  • read_only

    财产价值
    命令行格式--read-only
    系统变量read_only
    范围全球
    动态
    看到的是_提示应用
    类型布尔
    默认值OFF

    read_only系统变量是启用的,服务器不允许客户端更新,除了用户谁有CONNECTION_ADMINSUPER特权。这个变量默认是禁用的。

    服务器还支持super_read_only系统变量(默认情况下禁用),而这些影响:

    即使read_only启用服务器允许这些操作:

    变化read_only在主服务器没有被复制到从服务器。该值可以设置在一个独立于主服务器的设置。

    以下条款适用于试图使read_only(包括内隐的尝试所造成的使super_read_only):

    • 尝试失败,如果你有任何显式锁发生错误(收购LOCK TABLES)或有一个悬而未决的交易。

    • 试块在其他客户持有明确的表锁或挂起的事务,直到锁被释放,交易结束。而试图使read_only是等待,请求其他客户表锁或开始交易也块直到read_only已设置

    • 试块是否有交易活跃,保持元数据锁,直到事务结束。

    • read_only可以使你保持一个全局读锁(收购FLUSH TABLES WITH READ LOCK)因为不涉及表锁

  • read_rnd_buffer_size

    财产价值
    命令行格式--read-rnd-buffer-size=#
    系统变量read_rnd_buffer_size
    范围全球会议
    动态
    看到的是_提示应用
    类型整数
    默认值262144
    最小值1
    最大值2147483647

    该变量用于读MyISAM表,任何存储引擎,多阅读范围优化。

    当阅读中的行MyISAM一个关键的排序操作以下顺序表,行看这个缓冲区来避免磁盘寻道。看到第8.2.1.14,“优化”命令。将该变量设置为较大的值可以提高ORDER BY通过大量的性能。然而,这是一个缓冲区分配给每一个客户,所以你不应该设置全局变量值大。相反,改变会话变量只能在那些客户需要运行大量的查询。

    在不同的操作对内存使用的更多信息,参见第8.12.3.1,“MySQL如何使用内存”。关于多方位阅读优化,看第8.2.1.10,“多阅读范围优化”

  • regexp_stack_limit

    财产价值
    命令行格式--regexp-stack-limit=#
    介绍8.0.4
    系统变量regexp_stack_limit
    范围全球
    动态
    看到的是_提示应用
    类型整数
    默认值8000000
    最小值0
    最大值2147483647

    最大可用内存的字节用于正则表达式匹配操作由内部堆栈REGEXP_LIKE()和类似的功能(见第12.5.2,“正则表达式”

  • regexp_time_limit

    财产价值
    命令行格式--regexp-time-limit=#
    介绍8.0.4
    系统变量regexp_time_limit
    范围全球
    动态
    看到的是_提示应用
    类型整数
    默认值32
    最小值0
    最大值2147483647

    正则表达式匹配操作执行的时间限制REGEXP_LIKE()和类似的功能(见第12.5.2,“正则表达式”)。这种限制表现为最大允许的比赛引擎执行步骤的数量,从而影响执行时间只是间接地。通常,它是在以毫秒。

  • require_secure_transport

    财产价值
    命令行格式--require-secure-transport[={OFF|ON}]
    系统变量require_secure_transport
    范围全球
    动态
    看到的是_提示应用
    类型布尔
    默认值OFF

    是否需要使用某种形式的安全传输客户端到服务器的连接。当启用此变量,服务器只允许TCP/IP连接使用SSL连接,或使用一个socket文件(UNIX)或共享内存(Windows)。服务器拒绝连接尝试失败的不安全,这一ER_SECURE_TRANSPORT_REQUIRED误差

    这种能力补充每个帐户的SSL要求,采取优先。例如,如果一个帐户定义REQUIRE SSL,使require_secure_transport不可能使用的帐户使用UNIX socket文件连接。

    还有一种可能是服务器没有可用的安全运输。例如,在Windows服务器不支持安全传输如果开始没有指定任何SSL证书或密钥文件和与shared_memory系统变残疾。在这些条件下,试图使require_secure_transport在启动时导致服务器将消息写入错误日志和退出。试图使在运行时不可变的ER_NO_SECURE_TRANSPORTS_CONFIGURED误差

  • resultset_metadata

    财产价值
    介绍8.0.3
    系统变量resultset_metadata
    范围会话
    动态
    看到的是_提示应用
    类型枚举
    默认值FULL
    有效值

    FULL

    NONE

    连接的元数据转换是可选的,客户端设置resultset_metadata系统变量控制是否服务器返回结果集元数据。允许值全部(返回所有元数据;这是默认的),NONE(Return没有元数据)。

    对于没有元数据可选的连接设置resultset_metadata产生一个错误

    有关管理结果集元数据转换的详细信息,参见第27.7.23,”C API的可选的结果集元数据

  • schema_definition_cache

    财产价值
    命令行格式--schema-definition-cache=N
    系统变量schema_definition_cache
    范围全球
    动态
    看到的是_提示应用
    类型整数
    默认值256
    最小值256
    最大值524288

    用于定义架构定义的对象数量的限制,无论是使用和未使用的,可以保存在字典对象缓存。

    未使用的架构定义的对象只放在字典对象缓存使用时数小于定义的能力schema_definition_cache

    设置0意味着架构定义的对象只放在字典对象缓存时使用。

    有关更多信息,参见14.4节,“字典对象缓存”

  • secure_auth

    财产价值
    命令行格式--secure-auth
    过时的是的(除去8.0.3)
    系统变量secure_auth
    范围全球
    动态
    看到的是_提示应用
    类型布尔
    默认值ON
    有效值ON

    这个系统变量是MySQL 8.0.3删除。

  • secure_file_priv

    财产价值
    命令行格式--secure-file-priv=dir_name
    系统变量secure_file_priv
    范围全球
    动态
    看到的是_提示应用
    类型字符串
    默认值platform specific
    有效值

    empty string

    dirname

    NULL

    这个变量是用来限制进出口数据操作的影响,如那些由LOAD DATASELECT ... INTO OUTFILE报表和LOAD_FILE()功能。这些操作只允许用户谁有FILE特权

    secure_file_priv可以设置如下:

    • 如果是空的,变量没有影响。这不是一个安全的环境。

    • 如果设置为一个目录名,服务器限制进出口业务与目录中的文件只有工作。该目录必须存在;服务器将不创建它。

    • 如果设置为NULL,服务器禁用导入和导出操作。

    默认值是特定于平台的,取决于你的价值INSTALL_LAYOUTCMake选项,如下表所示。指定默认的secure_file_priv如果你是价值明确从源代码构建,使用INSTALL_SECURE_FILE_PRIVDIRCMake选项

    INSTALL_LAYOUT价值默认secure_file_priv价值
    STANDALONE空的
    DEBSLESsvr4/var/lib/mysql-files
    否则mysql-filesCMAKE_INSTALL_PREFIX价值

    服务器检查的价值secure_file_priv在启动时,写了一个警告,错误日志,如果值是不安全的。一个非—无效的值,如果它是空的被认为是不安全的,或价值的数据目录或子目录,或目录,可以被所有用户访问。如果secure_file_priv设置一个不存在的路径,服务器写一个错误的信息,错误日志和退出。

  • server_id

    财产价值
    命令行格式--server-id=#
    系统变量server_id
    范围全球
    动态
    看到的是_提示应用
    类型整数
    默认值(>= 8.0.3)1
    默认值(<= 8.0.2)0
    最小值0
    最大值4294967295

    指定服务器ID这个变量设置的--server-id选项这个server_id系统变量默认设置为1。服务器可以从默认的ID,但当二进制日志启用,信息性消息发出后如果没有指定服务器ID显式使用--server-id选项

    所使用的复制拓扑中的服务器,你必须指定每个复制服务器唯一的服务器ID,在范围从1到2三十二?1独特意味着每个ID必须不同于使用其他任何复制主或从其他每个ID。更多信息,参见第17.1.6.2,“复制选项和变量”,和第17.1.6.3,“复制从选项和变量”

    如果服务器ID是0,二进制日志的发生,但有0的服务器ID从奴隶主拒绝任何连接,和一个0服务器ID拒绝连接到一个主的奴隶。请注意,虽然您可以更改服务器ID动态地为一个非零值,这样做不会使复制立即开始。您必须更改服务器ID,然后重新启动服务器初始化复制从。

    有关更多信息,参见第17.1.2.2,“设置复制从配置”

  • session_track_gtids

    财产价值
    命令行格式--session-track-gtids=[value]
    系统变量session_track_gtids
    范围全球会议
    动态
    看到的是_提示应用
    类型枚举
    默认值OFF
    有效值

    OFF

    OWN_GTID

    ALL_GTIDS

    控制是否gtids服务器跟踪并返回给客户端。根据变量的值,在执行每个交易结束,服务器gtids由跟踪器被附加到好的包。对gtids跟踪可能集:

    • OFF:服务器返回的数据包不好gtids。

    • OWN_GTID:跟踪收集的成功提交读/写交易产生的gtids。

    • ALL_GTIDS:跟踪收集所有的gtids在gtid _ executed当时的当前事务提交系统变量,无论交易是否读/写或只读。

    这个变量不能在事务上下文。

    服务器采用客户机/服务器协议确定分组报告会话状态变化信息。为获取这一信息在客户端程序的信息,参见第27.7.7.69,“mysql_session_track_get_first()”

  • session_track_schema

    财产价值
    命令行格式--session-track-schema=#
    系统变量session_track_schema
    范围全球会议
    动态
    看到的是_提示应用
    类型布尔
    默认值ON

    控制是否服务器跟踪时的默认模式(数据库)设置当前会话内使架构名称提供给客户发生变化时。

    如果通知是启用的,报告时发生的默认架构设置,即使新的架构名称还是老样子。

    服务器采用客户机/服务器协议确定分组报告会话状态变化信息。为获取这一信息在客户端程序的信息,参见第27.7.7.69,“mysql_session_track_get_first()”

  • session_track_state_change

    财产价值
    命令行格式--session-track-state-change=#
    系统变量session_track_state_change
    范围全球会议
    动态
    看到的是_提示应用
    类型布尔
    默认值OFF

    控制服务器是否跟踪更改当前会话的状态和通知客户端的状态发生变化时。变化可以报客户端会话状态的属性:

    • 默认模式(数据库)

    • 系统变量的特定于会话的值

    • 用户定义的变量

    • 临时表

    • 准备好的语句

    如果启用会话状态跟踪,报告发生的每个任务的跟踪会话状态,即使新的值是老样子。

    笔记

    分配一个值session_track_state_change本身并不被认为是一个状态变化和不报告等。然而,如果它的名字在价值上市session_track_system_variables任何任务,在新的价值做结果通知。

    这个session_track_state_change变量控制通知的变化发生时,不会有什么变化。例如,通知时发生的默认架构设置或跟踪会话的系统变量分配,但通知不包括架构名称或变量的值。收到通知的默认架构名称和会议系统变量的值,使用session_track_schemasession_track_system_variables变数系统

    服务器采用客户机/服务器协议确定分组报告会话状态变化信息。为获取这一信息在客户端程序的信息,参见第27.7.7.69,“mysql_session_track_get_first()”

  • session_track_system_variables

    财产价值
    命令行格式--session-track-system-variables=#
    系统变量session_track_system_variables
    范围全球会议
    动态
    看到的是_提示应用
    类型字符串
    默认值time_zone, autocommit, character_set_client, character_set_results, character_set_connection

    控制是否服务器跟踪任务和通知客户端会话系统变量的名称和值变化的变量。变量的值是一个逗号分隔的列表变量的变化轨迹。默认情况下,启用通知time_zoneautocommitcharacter_set_clientcharacter_set_results,和character_set_connection。(后三个变量是那些受SET NAMES。)

    特殊的价值*导致服务器跟踪到所有的会话变量的变化。如果,这个值必须指定本身没有具体系统的变量名。

    禁用通知更改会话变量的值,设置session_track_system_variables为空字符串

    如果会话系统变量跟踪功能,通知发生的所有作业跟踪会话变量的新值,即使是相同的老。

    服务器采用客户机/服务器协议确定分组报告会话状态变化信息。为获取这一信息在客户端程序的信息,参见第27.7.7.69,“mysql_session_track_get_first()”

  • session_track_transaction_info

    财产价值
    命令行格式--session-track-transaction-info=value
    系统变量session_track_transaction_info
    范围全球会议
    动态
    看到的是_提示应用
    类型枚举
    默认值OFF
    有效值

    OFF

    STATE

    CHARACTERISTICS

    控制是否服务器跟踪交易状态和特点在当前会话并通知客户发生变化时。这些变量的值是允许的:

    • OFF:禁用事务状态跟踪。这是默认的。

    • STATE:使交易状态跟踪无特征的跟踪。状态跟踪使客户确定交易过程中是否可以不被回滚,搬到一个不同的会话。

      什么时候session_track_transaction_info是集状态mysql_session_track_get_first()报告session_track_transaction_state

    • CHARACTERISTICS:使交易状态跟踪,包括特征的跟踪。特征跟踪让客户确定如何重新启动另一个会话的事务具有相同特征的原始会话。以下特点为此有关:

      只读读writeisolation水平一致的快照

      什么时候session_track_transaction_info是集特点mysql_session_track_get_first()报告session_track_transaction_stateSESSION_TRACK_TRANSACTION_CHARACTERISTICS

    为客户的交易安全转移至另一个会话,它必须跟踪不仅交易状态而且交易特征。此外,客户必须跟踪transaction_read_onlytransaction_isolation系统变量正确确定会话的默认值。(跟踪这些变量,列出他们的价值session_track_system_variables值。)

    服务器采用客户机/服务器协议确定分组报告交易状态跟踪信息。为获取这一信息在客户端程序的信息,参见第27.7.7.69,“mysql_session_track_get_first()”

  • sha256_password_auto_generate_rsa_keys

    财产价值
    命令行格式--sha256-password-auto-generate-rsa-keys[={OFF|ON}]
    系统变量sha256_password_auto_generate_rsa_keys
    范围全球
    动态
    看到的是_提示应用
    类型布尔
    默认值ON

    如果服务器使用OpenSSL这个变量是编译可用(见6.4.4部分,“OpenSSL与wolfssl”)。服务器使用它来确定是否自动生成RSA私有/公共密钥对文件中的数据目录,如果不存在。

    在启动时,服务器自动生成RSA私有/公共密钥对文件中的数据目录,如果所有这些条件都是真实的sha256_password_auto_generate_rsa_keyscaching_sha2_password_auto_generate_rsa_keys系统变量是启用;没有指定RSA RSA文件选项;从数据目录失踪。这些密钥对文件启用安全密码交换的帐户通过未加密的连接使用RSAsha256_passwordcaching_sha2_password这个插件;第6.5.1.2,“SHA-256认证”,和第6.5.1.3,“缓存SHA-2认证”

    关于RSA文件自动生成的更多信息,包括文件的名称和特点,看第6.4.3.1,“创建SSL和RSA证书和使用MySQL”键

    这个auto_generate_certs系统变量是相关但控制为安全连接需要使用SSL SSL证书和密钥文件的自动生成。

  • sha256_password_private_key_path

    财产价值
    命令行格式--sha256-password-private-key-path=file_name
    系统变量sha256_password_private_key_path
    范围全球
    动态
    看到的是_提示应用
    类型文件名
    默认值private_key.pem

    如果MySQL编译使用OpenSSL这个变量是可用的(见6.4.4部分,“OpenSSL与wolfssl”)。its value is the name of the私人RSA密钥路径文件for thesha256_password身份验证插件。如果文件被命名为相对路径,它被解释为相对于服务器的数据目录。该文件必须在PEM格式。

    重要

    因为该文件存储私钥,其接入方式应限制所以只有MySQL服务器可以读取它。

    有关sha256_password,看到第6.5.1.2,“SHA-256认证”

  • sha256_password_proxy_users

    财产价值
    命令行格式--sha256-password-proxy-users=[={OFF|ON}]
    系统变量sha256_password_proxy_users
    范围全球
    动态
    看到的是_提示应用
    类型布尔
    默认值OFF

    此变量控制器sha256_password内置的身份验证插件支持代理用户。它有没有效果,除非check_proxy_users系统变量是启用。有关用户代理信息,看第6.3.11”代理用户”

  • sha256_password_public_key_path

    财产价值
    命令行格式--sha256-password-public-key-path=file_name
    系统变量sha256_password_public_key_path
    范围全球
    动态
    看到的是_提示应用
    类型文件名
    默认值public_key.pem

    如果MySQL编译使用OpenSSL这个变量是可用的(见6.4.4部分,“OpenSSL与wolfssl”)。its value is the path name of the RSA for the public key文件sha256_password身份验证插件。如果文件被命名为相对路径,它被解释为相对于服务器的数据目录。该文件必须在PEM格式。因为该文件存储公钥,副本可以自由地分发到客户端的用户。(客户明确指定一个连接时,使用RSA公钥密码加密服务器必须使用相同的密钥,服务器使用。)

    有关sha256_password,包括关于客户指定RSA公钥信息,看第6.5.1.2,“SHA-256认证”

  • shared_memory

    财产价值
    命令行格式--shared-memory[={0,1}]
    系统变量shared_memory
    范围全球
    动态
    看到的是_提示应用
    特定平台Windows
    类型布尔
    默认值FALSE

    (仅适用于Windows。)服务器是否允许共享内存连接。

  • shared_memory_base_name

    财产价值
    命令行格式--shared-memory-base-name=name
    系统变量shared_memory_base_name
    范围全球
    动态
    看到的是_提示应用
    特定平台Windows
    类型字符串
    默认值MYSQL

    (仅适用于Windows。)使用共享内存连接的共享内存名。这是有用的当运行多个MySQL实例在一台物理机。默认名称是MYSQL。的名称是区分大小写的。

  • show_compatibility_56

    财产价值
    命令行格式--show-compatibility-56[={OFF|ON}]
    过时的是的(除去8.0.1)
    系统变量show_compatibility_56
    范围全球
    动态
    看到的是_提示应用
    类型布尔
    默认值OFF

    这个变量被用来在过渡期系统状态变量信息时INFORMATION_SCHEMA桌子被移到性能模式表。这个过渡期在MySQL 8.0.1结束,届时这个变量被删除。在迁移距离的建议information_schema表的性能架构表,看迁移到性能模式系统和状态变量表

  • show_create_table_verbosity

    财产价值
    命令行格式--show-create-table-verbosity
    介绍8.0.11
    系统变量show_create_table_verbosity
    范围全球会议
    动态
    看到的是_提示应用

    SHOW CREATE TABLE通常不显示row_format表选项如果行格式的默认格式。使这个变量的原因SHOW CREATE TABLE显示row_format无论是默认的格式

  • show_old_temporals

    财产价值
    命令行格式--show-old-temporals={OFF|ON}
    过时的
    系统变量show_old_temporals
    范围全球会议
    动态
    看到的是_提示应用
    类型布尔
    默认值OFF

    是否SHOW CREATE TABLE输出包括发现评论标志时间柱在pre-5.6.4格式(TIMEDATETIME,和TIMESTAMP没有分数秒精度支撑柱)。这个变量默认是禁用的。如果启用,SHOW CREATE TABLE输出看起来像这样:

    CREATE TABLE `mytbl` (  `ts` timestamp /* 5.5 binary format */ NOT NULL DEFAULT CURRENT_TIMESTAMP,  `dt` datetime /* 5.5 binary format */ DEFAULT NULL,  `t` time /* 5.5 binary format */ DEFAULT NULL) DEFAULT CHARSET=utf8mb4

    输出为COLUMN_TYPE列的INFORMATION_SCHEMA.COLUMNS表的影响同样

    这个变量是过时的、将在未来的MySQL版本中删除。

  • skip_external_locking

    财产价值
    命令行格式--skip-external-locking
    系统变量skip_external_locking
    范围全球
    动态
    看到的是_提示应用
    类型布尔
    默认值ON

    这是OFF如果mysqld使用外部锁定(锁定),ON如果外部锁定功能。这仅影响MyISAM表访问

    这个变量设置的--external-locking--skip-external-locking选项外锁默认是禁用的。

    外锁只影响MyISAM表访问。更多信息,包括在它可以使用的条件下,看8.11.5部分,“外锁”

  • skip_name_resolve

    财产价值
    命令行格式--skip-name-resolve
    系统变量skip_name_resolve
    范围全球
    动态
    看到的是_提示应用
    类型布尔
    默认值OFF

    这个变量设置的值--skip-name-resolve选项如果它是关闭mysqld解析主机名时检查客户端连接。如果它是ONmysqld只使用IP号码;在这种情况下,所有的Host在授权表列的值必须是IP地址或本地服务器。看到第8.12.4.2,“DNS查询优化和主机缓存”

  • skip_networking

    财产价值
    命令行格式--skip-networking
    系统变量skip_networking
    范围全球
    动态
    看到的是_提示应用

    这是ON如果服务器只允许本地(非TCP / IP)连接。在Unix上,本地连接使用Unix套接字文件。在Windows中,本地连接使用命名管道和共享内存。这个变量可以被设置为打开(放)--skip-networking选项

  • skip_show_database

    财产价值
    命令行格式--skip-show-database
    系统变量skip_show_database
    范围全球
    动态
    看到的是_提示应用

    这可以防止人们使用SHOW DATABASES声明,如果他们没有SHOW DATABASES特权。可如果你担心用户能够看到数据库属于其他用户提高安全性。其效果取决于SHOW DATABASES特权:如果变量的值打开(放),的SHOW DATABASES声明只允许用户谁有SHOW DATABASES特权和显示屏,在数据库表的名称。if the value is关闭SHOW DATABASES允许所有用户,但显示的名字只有那些数据库对用户的SHOW DATABASES或其他特权。(笔记,任何全球的特权被认为是数据库的权限。)

  • slow_launch_time

    财产价值
    命令行格式--slow-launch-time=#
    系统变量slow_launch_time
    范围全球
    动态
    看到的是_提示应用
    类型整数
    默认值2

    如果创建一个线程需要比这几秒时间,服务器的增量Slow_launch_threads状态变量

  • slow_query_log

    财产价值
    命令行格式--slow-query-log
    系统变量slow_query_log
    范围全球
    动态
    看到的是_提示应用
    类型布尔
    默认值OFF

    是否开启慢查询日志。该值可以是0(或OFF)禁用日志或1(或打开(放))启用日志。默认值取决于--slow_query_log选择了。日志输出的目标是由log_output系统变量;如果此值为,没有写入日志项即使日志启用。

    是由价值决定的long_query_time变量。看到第5.4.5、“慢查询日志”

  • slow_query_log_file

    财产价值
    命令行格式--slow-query-log-file=file_name
    系统变量slow_query_log_file
    范围全球
    动态
    看到的是_提示应用
    类型文件名
    默认值host_name-slow.log

    的慢查询日志文件的名称。默认值是host_name-slow.log,但初始值是可以改变的-慢一点选项

  • socket

    财产价值
    命令行格式--socket={file_name|pipe_name}
    系统变量socket
    范围全球
    动态
    看到的是_提示应用
    类型字符串
    默认值(其他)/tmp/mysql.sock
    默认值(Windows)MySQL

    在UNIX平台上,这个变量是用于本地客户端连接的套接字文件的名称。默认值是/tmp/mysql.sock。(一些分布格式,目录可能不同,如/var/lib/MySQL为转速)

    在Windows中,这个变量是命名管道,用于本地客户端连接的名称。默认值是MySQL(不区分大小写)

  • sort_buffer_size

    财产价值
    命令行格式--sort-buffer-size=#
    系统变量sort_buffer_size
    范围全球会议
    动态
    看到的是_提示应用
    类型整数
    默认值262144
    最小值32768
    最大值(其他的64位平台)18446744073709551615
    最大值(其他的32位平台)4294967295
    最大值(Windows)4294967295

    每次会议必须执行排序分配这样大小的缓冲区。sort_buffer_size是不特定的任何存储引擎,适用于一般的方式优化。在最小的sort_buffer_size值必须足够大以容纳15元组排序缓冲区。同时,增加价值max_sort_length可能需要增加价值sort_buffer_size。有关更多信息,参见第8.2.1.14,“优化”命令

    如果你看到很多Sort_merge_passes在第二SHOW GLOBAL STATUS输出,你可以考虑增加sort_buffer_size加快价值顺序GROUP BY操作不能提高或改进索引的查询优化。

    优化器试图找出多少空间是必要的但可以分配更多,达极限。设置大于所需的全局会慢下来,大多数查询,排序。最好是增加它作为一个会话设置,只需要一个较大规模的会议。在Linux中,有阈值的256kb 2MB,较大的值会显著放缓,内存分配,那么你应该考虑在下面的价值观之一。实验发现,对你的工作负荷的最佳值。看到第b.5.3.5,“MySQL存储临时文件”

    最大允许的设置sort_buffer_size是4GB?1。较大的值是64位平台允许(除64位Windows,为大的值将被截断为4GB?1个警告)。

  • sql_auto_is_null

    财产价值
    系统变量sql_auto_is_null
    范围全球会议
    动态
    看到的是_提示应用
    类型布尔
    默认值0

    如果这个变量设置为1,然后发表声明后,成功地将一个自动生成的AUTO_INCREMENT值,你可以通过发表声明如下形式的发现价值:

    SELECT * FROMtbl_name哪里auto_col是空的

    如果语句返回一行,返回的值是相同的如果你调用LAST_INSERT_ID()功能。有关详细信息,包括多行插入后的返回值,看12.14节,“信息功能”。如果没有AUTO_INCREMENT成功插入的值,SELECT声明没有返回任何行

    行为的检索AUTO_INCREMENT价值利用IS NULL比较了ODBC程序使用,如访问。看到获取自动增量值。这种行为可以被禁用的设置sql_auto_is_null这是0

    默认值sql_auto_is_null0

  • sql_big_selects

    财产价值
    系统变量sql_big_selects
    范围全球会议
    动态
    看到的是_提示应用
    类型布尔
    默认值1

    如果设置为0,MySQL的中止SELECT陈述,可能需要很长的时间来执行(即语句的优化器估计,检查的行数超过max_join_size)。这是有用的当不可取哪里已发表声明。对一个新连接的默认值是1,它允许所有的SELECT声明.

    如果你设置max_join_size系统变量以外的价值默认sql_big_selects设置为0

  • sql_buffer_result

    财产价值
    系统变量sql_buffer_result
    范围全球会议
    动态
    看到的是_提示应用
    类型布尔
    默认值0

    如果设置为1,sql_buffer_result力的结果SELECT语句将临时表。这有助于MySQL的表锁免费早期可在情况下,它需要很长的时间,将结果发送到客户端的有益。默认值是0。

  • sql_log_off

    财产价值
    系统变量sql_log_off
    范围全球会议
    动态
    看到的是_提示应用
    类型布尔
    默认值0

    这个变量控制全日志是否记录了。默认值是0(做记录)。更改当前会话记录,改变这个变量的值的会话。会话的用户必须有SYSTEM_VARIABLES_ADMINSUPER权限设置这个变量。默认值是0。

  • sql_mode

    财产价值
    命令行格式--sql-mode=name
    系统变量sql_mode
    范围全球会议
    动态
    看到的是_提示应用
    类型配置
    默认值(>= 8.0.11)ONLY_FULL_GROUP_BY STRICT_TRANS_TABLES NO_ZERO_IN_DATE NO_ZERO_DATE ERROR_FOR_DIVISION_BY_ZERO NO_ENGINE_SUBSTITUTION
    默认值(<= 8.0.4)ONLY_FULL_GROUP_BY STRICT_TRANS_TABLES NO_ZERO_IN_DATE NO_ZERO_DATE ERROR_FOR_DIVISION_BY_ZERO NO_AUTO_CREATE_USER NO_ENGINE_SUBSTITUTION
    有效值(>= 8.0.11)

    ALLOW_INVALID_DATES

    ANSI_QUOTES

    ERROR_FOR_DIVISION_BY_ZERO

    HIGH_NOT_PRECEDENCE

    IGNORE_SPACE

    NO_AUTO_VALUE_ON_ZERO

    NO_BACKSLASH_ESCAPES

    NO_DIR_IN_CREATE

    NO_ENGINE_SUBSTITUTION

    NO_UNSIGNED_SUBTRACTION

    NO_ZERO_DATE

    NO_ZERO_IN_DATE

    ONLY_FULL_GROUP_BY

    PAD_CHAR_TO_FULL_LENGTH

    PIPES_AS_CONCAT

    REAL_AS_FLOAT

    STRICT_ALL_TABLES

    STRICT_TRANS_TABLES

    TIME_TRUNCATE_FRACTIONAL

    有效值(>= 8.0.1, <= 8.0.4)

    ALLOW_INVALID_DATES

    ANSI_QUOTES

    ERROR_FOR_DIVISION_BY_ZERO

    HIGH_NOT_PRECEDENCE

    IGNORE_SPACE

    NO_AUTO_CREATE_USER

    NO_AUTO_VALUE_ON_ZERO

    NO_BACKSLASH_ESCAPES

    NO_DIR_IN_CREATE

    NO_ENGINE_SUBSTITUTION

    NO_FIELD_OPTIONS

    NO_KEY_OPTIONS

    NO_TABLE_OPTIONS

    NO_UNSIGNED_SUBTRACTION

    NO_ZERO_DATE

    NO_ZERO_IN_DATE

    ONLY_FULL_GROUP_BY

    PAD_CHAR_TO_FULL_LENGTH

    PIPES_AS_CONCAT

    REAL_AS_FLOAT

    STRICT_ALL_TABLES

    STRICT_TRANS_TABLES

    TIME_TRUNCATE_FRACTIONAL

    有效值(8.0.0)

    ALLOW_INVALID_DATES

    ANSI_QUOTES

    ERROR_FOR_DIVISION_BY_ZERO

    HIGH_NOT_PRECEDENCE

    IGNORE_SPACE

    NO_AUTO_CREATE_USER

    NO_AUTO_VALUE_ON_ZERO

    NO_BACKSLASH_ESCAPES

    NO_DIR_IN_CREATE

    NO_ENGINE_SUBSTITUTION

    NO_FIELD_OPTIONS

    NO_KEY_OPTIONS

    NO_TABLE_OPTIONS

    NO_UNSIGNED_SUBTRACTION

    NO_ZERO_DATE

    NO_ZERO_IN_DATE

    ONLY_FULL_GROUP_BY

    PAD_CHAR_TO_FULL_LENGTH

    PIPES_AS_CONCAT

    REAL_AS_FLOAT

    STRICT_ALL_TABLES

    STRICT_TRANS_TABLES

    当前服务器的SQL模式,可以动态设置。详情见第5.1.10,”服务器的SQL模式”

    笔记

    MySQL的安装程序会在安装过程中配置SQL模式。

    如果SQL模式不同于默认的或与你所期望的,检查在一个选项文件,服务器在启动时读取设置。

  • sql_notes

    如果设置为1(默认),警告Note水平的提高报警电话计数与服务器记录下来。如果设置为0,Note警告不增warning_count和服务器不记录mysqldump包括输出这个变量设置为0,重载转储文件不生产,不影响重新加载操作的完整事件的警告。

  • sql_quote_show_create

    如果设置为1(默认),服务器引用标识符SHOW CREATE TABLESHOW CREATE DATABASE声明.如果设置为0,禁用引号。默认启用,复制作品标识符需要引用这个选项。看到第13.7.6.10,“显示创建表的语法,和第13.7.6.6,“显示创建数据库的语法”

  • sql_require_primary_key

    财产价值
    命令行格式--sql-require-primary-key[={OFF|ON}]
    介绍8.0.13
    系统变量sql_require_primary_key
    范围全球会议
    动态
    看到的是_提示应用
    类型布尔
    默认值OFF

    无论语句创建新表或改变现有的表结构执行表有一个主键的要求。这个SYSTEM_VARIABLES_ADMINSUPER特权是需要设置全局或会话变量的值。

    使这个变量有助于避免基于行的复制时,表没有主键的性能问题。假设一个表没有主键,更新或删除修改多行。在主服务器上,此操作可以使用一个单一的表扫描而进行的,当复制使用基于行的复制,表中每一行的扫描结果是奴隶的改性。有一个主键,这些表扫描不发生。

    sql_require_primary_key适用于基表和临时表,并对其价值的变化被复制到从服务器。

    当启用,sql_require_primary_key有这些影响:

    • 尝试没有主键的失败与错误创建新表。这包括CREATE TABLE ... LIKE。它还包括创建表…选择,除非CREATE TABLE部分包含一个主键定义。

    • 试图从现有的表失败与错误滴主键,除滴主键和添加相同的主键ALTER TABLE声明是允许的

      把主键不能即使表还包含一个UNIQUE NOT NULL指数

    • 试图导入表没有主键的失败与错误。

  • sql_safe_updates

    如果设置为1,MySQL的中止UPDATEDELETE语句不在使用的关键哪里条款或LIMITclause。(具体来说,UPDATE必须有一个声明哪里条款,用一个键或LIMIT条款,或两者DELETE语句必须有。)这样就可以赶上UPDATEDELETE语句在钥匙使用不当,可能会更改或删除大量排。默认值是0。

  • sql_select_limit

    财产价值
    系统变量sql_select_limit
    范围全球会议
    动态
    看到的是_提示应用
    类型整数

    最大行数返回SELECT声明.对一个新连接的默认值是每台服务器允许的最大行数。典型的默认值(2三十二?1或(2)六十四1)?。如果你有改变的限制,默认值可以通过分配一个值恢复DEFAULT

    如果一个SELECT有一个极限的条款,LIMIT优先于价值sql_select_limit

  • sql_warnings

    这个变量控制是否单行INSERT语句产生一个警告信息的字符串如果发生。默认值是0。值设置为1,产生一个信息的字符串。

  • ssl_ca

    财产价值
    命令行格式--ssl-ca=file_name
    系统变量ssl_ca
    范围全球
    动态
    看到的是_提示应用
    类型文件名

    一个可信的SSL证书颁发机构的列表文件的路径。

  • ssl_capath

    财产价值
    命令行格式--ssl-capath=dir_name
    系统变量ssl_capath
    范围全球
    动态
    看到的是_提示应用
    类型目录名称

    一个目录包含受信任的SSL证书PEM格式的路径。

  • ssl_cert

    财产价值
    命令行格式--ssl-cert=file_name
    系统变量ssl_cert
    范围全球
    动态
    看到的是_提示应用
    类型文件名

    用于建立安全连接的SSL证书的文件的名称。

  • ssl_cipher

    财产价值
    命令行格式--ssl-cipher=name
    系统变量ssl_cipher
    范围全球
    动态
    看到的是_提示应用
    类型字符串

    允许SSL加密的密码列表。

  • ssl_crl

    财产价值
    命令行格式--ssl-crl=file_name
    系统变量ssl_crl
    范围全球
    动态
    看到的是_提示应用
    类型文件名

    一个文件包含证书吊销列表的PEM格式的路径。撤销列表的MySQL分布编译使用OpenSSL的工作(但不wolfssl)。看到6.4.4部分,“OpenSSL与wolfssl”

  • ssl_crlpath

    财产价值
    命令行格式--ssl-crlpath=dir_name
    系统变量ssl_crlpath
    范围全球
    动态
    看到的是_提示应用
    类型目录名称

    PEM格式包含证书吊销列表目录包含文件的路径。撤销列表的MySQL分布编译使用OpenSSL的工作(但不wolfssl)。看到6.4.4部分,“OpenSSL与wolfssl”

  • ssl_fips_mode

    财产价值
    命令行格式--ssl-fips-mode={OFF|ON|STRICT}
    介绍8.0.11
    系统变量ssl_fips_mode
    范围全球
    动态
    看到的是_提示应用
    类型枚举
    默认值OFF
    有效值

    OFF(或0)

    ON(1)

    STRICT(2)

    控制是否启用FIPS模式在服务器端。这个ssl_fips_mode不同于其他系统变量——SSLxxx选项,它不是用来控制服务器是否允许加密连接,而是影响加密操作是允许的。看到6.6节,“FIPS支持”

    这些ssl_fips_mode值是允许的:

    • OFF(0):禁用FIPS模式。

    • ON(1):启用FIPS模式。

    • STRICT(2):启用严格的FIPS模式

    笔记

    如果OpenSSL FIPS对象模块是不可用的,唯一被允许的值ssl_fips_mode关闭。在这种情况下,设置ssl_fips_mode打开(放)STRICT在启动时导致服务器产生一个错误信息并退出。

  • ssl_key

    财产价值
    命令行格式--ssl-key=file_name
    系统变量ssl_key
    范围全球
    动态
    看到的是_提示应用
    类型文件名

    用于建立安全连接的SSL密钥文件的名称。

  • stored_program_cache

    财产价值
    命令行格式--stored-program-cache=#
    系统变量stored_program_cache
    范围全球
    动态
    看到的是_提示应用
    类型整数
    默认值256
    最小值16
    最大值524288

    集数缓存存储程序的每个连接的上限。这个变量的值在存储程序举行一个缓存由MySQL服务器,分别维持数指定的存储过程和函数。

    当一个存储程序执行这个缓存的大小是在常规第一或顶级语句的分析检查;如果同一类型的程序的数量(存储过程或存储功能,根据正在执行的)超过该变量指定的限制,相应的缓存刷新和先前分配的缓存对象释放内存。这允许缓存刷新安全,即便是在存储程序的依赖关系。

    存储过程和存储功能的缓存存在与存储程序定义缓存分区的字典对象的缓存。存储过程和存储功能的高速缓存的每个连接,而存储程序定义缓存共享。在存储过程的对象的存在和存储功能的缓存在存储程序定义缓存对象的存在不依赖,反之亦然。有关更多信息,参见14.4节,“字典对象缓存”

  • stored_program_definition_cache

    财产价值
    命令行格式--stored-program-definition-cache=N
    系统变量stored_program_definition_cache
    范围全球
    动态
    看到的是_提示应用
    类型整数
    默认值256
    最小值256
    最大值524288

    定义用于存储程序中定义的对象数量的限制,无论是使用和未使用的,可以保存在字典对象缓存。

    未使用的存储程序定义对象只能放在字典对象缓存使用时数小于定义的能力stored_program_definition_cache

    设置0意味着存储程序定义对象只能放在字典对象缓存时使用。

    存储程序定义缓存分区并行存在的存储过程和存储功能的缓存配置使用stored_program_cache选项

    这个stored_program_cache选项设置为多少缓存存储过程或函数的每个连接的上限,并限制了每次连接执行一个存储过程或函数。存储程序定义缓存分区,另一方面,是一个共享的高速缓存存储用于其它用途的存储程序中定义的对象。在存储程序定义缓存分区对象的存在不依赖于对象的存在在存储过程缓存或存储功能的缓存,反之亦然。

    相关的信息,看14.4节,“字典对象缓存”

  • super_read_only

    财产价值
    命令行格式--super-read-only[={OFF|ON}]
    系统变量super_read_only
    范围全球
    动态
    看到的是_提示应用
    类型布尔
    默认值OFF

    如果read_only系统变量是启用的,服务器允许客户端更新只从用户谁有SUPER特权。如果super_read_only系统变量同时启用,服务器禁止客户端更新甚至从用户SUPER。看到的描述read_only系统变量用于描述只读模式和信息如何read_onlysuper_read_only互动

    变化super_read_only在主服务器没有被复制到从服务器。该值可以设置在一个独立于主服务器的设置。

  • syseventlog.facility

    财产价值
    命令行格式--syseventlog.facility=value
    介绍8.0.13
    系统变量syseventlog.facility
    范围全球
    动态
    看到的是_提示应用
    类型字符串
    默认值daemon

    错误日志输出写入设备syslog(什么类型的程序发送消息)。这个变量是不可用,除非log_sink_syseventlog安装错误日志组件。看到部分5.4.2.3,”错误记录到系统日志”

    允许的值可以改变每个操作系统;咨询系统syslog文档

    这个变量不存在于Windows。

  • syseventlog.include_pid

    财产价值
    命令行格式--syseventlog.include-pid[={0|1}]
    介绍8.0.13
    系统变量syseventlog.include_pid
    范围全球
    动态
    看到的是_提示应用
    类型布尔
    默认值ON

    是否包括服务器进程ID的每一行输出写入错误日志syslog。这个变量是不可用,除非log_sink_syseventlog安装错误日志组件。看到部分5.4.2.3,”错误记录到系统日志”

    这个变量不存在于Windows。

  • syseventlog.tag

    财产价值
    命令行格式--syseventlog.tag=tag
    介绍8.0.13
    系统变量syseventlog.tag
    范围全球
    动态
    看到的是_提示应用
    类型字符串
    默认值empty string

    标签被添加到标识错误日志输出写入到服务器syslog。这个变量是不可用,除非log_sink_syseventlog安装错误日志组件。看到部分5.4.2.3,”错误记录到系统日志”

    默认情况下,服务器标识符mysqld在与标签。如果标签值tag被指定,它被添加到带连字符的标识符的服务器,导致在一个标识符mysqld……tag

    在Windows中,使用一个标签,已经不存在,服务器必须运行一个具有管理员权限的帐户,允许为标签的注册表项,创建。提升的权限如果不需要标签已经存在。

  • system_time_zone

    财产价值
    系统变量system_time_zone
    范围全球
    动态
    看到的是_提示应用
    类型字符串

    服务器系统的时区。当服务器开始执行,它继承了一个时区,从机器的默认设置,用于运行服务器或启动脚本的帐户的环境可能修改。使用该值设置system_time_zone。通常是由指定的时区TZ环境变量。它也可以指定使用的--timezone期权的_ mysqld safe脚本

    这个system_time_zone不同于变量time_zone。虽然他们可能有相同的价值,后者的变量是用来初始化时间为每个客户端连接。看到第5.1.12,MySQL服务器的时区支持”

  • table_definition_cache

    财产价值
    系统变量table_definition_cache
    范围全球
    动态
    看到的是_提示应用
    类型整数
    默认值-1(意味着调整;不转让本文字值)
    最小值400
    最大值524288

    表的定义,可以存储在定义缓存数量。如果你使用了大量的表格,你可以创建一个大表定义缓存加速开放表。表定义缓存占用空间小和不使用文件描述符,不像普通表缓存。最小值为400。默认值是基于以下公式,封顶上限为2000:

    MIN(400 + table_open_cache / 2, 2000)
    

    InnoDBtable_definition_cache作为在打开表的实例数软限制InnoDB数据字典缓存。如果打开表的实例数超过table_definition_cache设置,LRU机制开始标记为驱逐表实例并最终将其从数据字典缓存。限制有助于解决的情况下,大量的内存量,可以用来缓存很少用表实例直到下一次重新启动服务器。与缓存元数据表实例的数量可能超过规定的极限table_definition_cache,因为父母和孩子与外键关系表实例不是放在LRU列表和不受驱逐的记忆。

    此外,table_definition_cache定义了一些软极限InnoDB文件表的表空间,可以在同一时间开放,这也是控制innodb_open_files。如果两table_definition_cacheinnodb_open_files设置,最高值为。如果没有变量设置,table_definition_cache,具有更高的默认值,使用。如果打开的表文件句柄超过定义的限制数量table_definition_cacheinnodb_open_files,LRU机制检索表空间文件,充分冲洗LRU列表并不是目前正在扩展文件。这个过程是每次一个新的表空间被打开。如果没有无效表空间,表空间文件关闭不。

    表定义缓存的存在与表定义缓存分区的字典对象的缓存。两者的缓存存储表的定义但为MySQL服务器的不同部分。在一个缓存对象对其他对象的存在不依赖。有关更多信息,参见14.4节,“字典对象缓存”

  • table_open_cache

    财产价值
    系统变量table_open_cache
    范围全球
    动态
    看到的是_提示应用
    类型整数
    默认值(>= 8.0.4)4000
    默认值(<= 8.0.3)2000
    最小值1
    最大值524288

    为所有线程打开的表的数量。增加这个值增加文件描述符的数量mysqld要求.您可以检查您是否需要增加表缓存通过检查Opened_tables状态变量。这第5.1.9,“服务器状态变量”。如果价值Opened_tables大,你不使用FLUSH TABLES(这只部队的所有表经常被关闭并重新打开),那么你应该增加的价值table_open_cache变量。关于表缓存的更多信息,参见第8.4.3.1,“MySQL如何打开和关闭表”

  • table_open_cache_instances

    财产价值
    系统变量table_open_cache_instances
    范围全球
    动态
    看到的是_提示应用
    类型整数
    默认值16
    最小值1
    最大值64

    开桌的缓存实例的数量。为了减少争用会话中提高可扩展性,开放表缓存可以被分成几个较小的缓存实例的大小table_open_cache/table_open_cache_instances。会话需要锁只有一个实例来访问它的DML语句。这段访问缓存的情况下,允许更高的性能,操作使用缓存的时候有许多会话访问表。(DDL语句仍然需要对整个缓存、锁但这样的语句比DML语句。更频繁)

    值8或16推荐系统,通常使用16个或更多的内核。

  • temptable_max_ram

    财产价值
    命令行格式--temptable-max-ram=#
    介绍8.0.2
    系统变量temptable_max_ram
    范围全球
    动态
    看到的是_提示应用
    类型整数
    默认值1073741824
    最小值2097152
    最大值2^64-1

    定义可占用的最大内存量TempTable存储引擎启动磁盘上存储数据之前。默认值是1073741824字节(1gib)。有关更多信息,参见第8.4.4,“MySQL”使用内部临时表

  • thread_cache_size

    财产价值
    命令行格式--thread-cache-size=#
    系统变量thread_cache_size
    范围全球
    动态
    看到的是_提示应用
    类型整数
    默认值-1(意味着调整;不转让本文字值)
    最小值0
    最大值16384

    服务器应该缓存重用多少线程。当客户端断开时,放入缓存如果有较少比客户端的线程thread_cache_size螺纹有。请求线程重用如果可能从缓存中取出线程满意,只有当缓存是空的是一个新的线程创建。该变量可以如果你有很多新的连接,提高性能。通常,这不如果你有一个好的线程实现提供了显著的性能改进。然而,如果你的服务器是连接每秒你通常应该设置数百thread_cache_size够高,最新的连接使用缓存的线程。之间的差异研究ConnectionsThreads_created状态变量,你可以看到线程缓存的效率如何。详情见第5.1.9,“服务器状态变量”

    默认值是基于以下公式,封顶限制百:

    8 + (max_connections / 100)
    
  • thread_handling

    财产价值
    命令行格式--thread-handling=name
    系统变量thread_handling
    范围全球
    动态
    看到的是_提示应用
    类型枚举
    默认值one-thread-per-connection
    有效值

    no-threads

    one-thread-per-connection

    loaded-dynamically

    线程处理模型的连接线程的服务器使用。允许的值no-threads(服务器使用单线程处理一个连接),每个连接一个线程(服务器使用一个线程来处理每个客户端连接)。no-threads调试linux下是有用的;看28.5节,“调试和移植MySQL”

  • thread_pool_algorithm

    财产价值
    命令行格式--thread-pool-algorithm=#
    介绍8.0.11
    系统变量thread_pool_algorithm
    范围全球
    动态
    看到的是_提示应用
    类型整数
    默认值0
    最小值0
    最大值1

    这个变量的控制算法的线程池插件使用:

    • 值(默认)使用一个保守的低并发算法是最行之有效的,是已知的产生很好的效果。

    • 1值增加了并发性和采用更激进的方法有时被称为执行5–10%最佳线程数更好,但降解性能随着连接数量的增加。它的使用应该被视为实验不支持。

    这个变量是只有当线程池的可用插件启用。看到第5.6.3,MySQL企业线程池”

  • thread_pool_high_priority_connection

    财产价值
    命令行格式--thread-pool-high-priority-connection=#
    介绍8.0.11
    系统变量thread_pool_high_priority_connection
    范围全球会议
    动态
    看到的是_提示应用
    类型整数
    默认值0
    最小值0
    最大值1

    这个变量会影响新的语句执行之前排队。如果该值为0(假,默认),声明排队使用低优先级和高优先级队列。如果该值为1(真),排队的语句总是高优先级队列。

    这个变量是只有当线程池的可用插件启用。看到第5.6.3,MySQL企业线程池”

  • thread_pool_max_unused_threads

    财产价值
    命令行格式--thread-pool-max-unused-threads=#
    介绍8.0.11
    系统变量thread_pool_max_unused_threads
    范围全球
    动态
    看到的是_提示应用
    类型整数
    默认值0
    最小值0
    最大值4096

    允许的最大线程池中未使用的线程数。这个变量可以限制睡眠线程占用的内存量。

    值0(默认)意味着对一些睡眠线程没有限制。一个值N哪里N大于0意味着1的消费线N?订线。在这种情况下,如果一个线程准备睡觉,但睡眠线程数已达到最大值,该线程退出而不是睡觉。

    一个沉睡的线程或者作为一个消费者线程或线程睡眠储备。线程池允许一个线程被消费者线程睡眠时。如果一个线程进入睡眠状态,没有任何现有的消费线,它将作为一个消费者线程睡眠。当一个线程必须被唤醒,一个消费者线程如果有一个选择。储备线程只选择了当没有消费者线程醒来。

    这个变量是只有当线程池的可用插件启用。看到第5.6.3,MySQL企业线程池”

  • thread_pool_prio_kickup_timer

    财产价值
    命令行格式--thread-pool-prio-kickup-timer=#
    介绍8.0.11
    系统变量thread_pool_prio_kickup_timer
    范围全球会议
    动态
    看到的是_提示应用
    类型整数
    默认值1000
    最小值0
    最大值4294967294

    这个变量会影响报表在低优先级队列执行。价值是在等待语句移动到高优先级队列的毫秒数。默认是一千(1秒)。值的范围是0到2三十二?2

    这个变量是只有当线程池的可用插件启用。看到第5.6.3,MySQL企业线程池”

  • thread_pool_size

    财产价值
    命令行格式--thread-pool-size=#
    介绍8.0.11
    系统变量thread_pool_size
    范围全球
    动态
    看到的是_提示应用
    类型整数
    默认值16
    最小值1
    最大值64

    在线程池线程组数。这是控制线程池的性能最重要的参数。它影响了多少语句可以同时执行。默认值是16,从1到64的允许值的范围。如果指定了超出此范围的值,线程池插件不负载和服务器将消息写入错误日志。

    这个变量是只有当线程池的可用插件启用。看到第5.6.3,MySQL企业线程池”

  • thread_pool_stall_limit

    财产价值
    命令行格式--thread-pool-stall-limit=#
    介绍8.0.11
    系统变量thread_pool_stall_limit
    范围全球
    动态
    看到的是_提示应用
    类型整数
    默认值6
    最小值4
    最大值600

    这个变量会影响执行语句。价值是时间的语句完成之前开始就定义为停止执行后的量,此时线程池允许线程组开始执行一个语句。该值是10毫秒为单位来衡量的,所以6(默认)意味着60ms。值的范围是4到600(40 ms 6S)。短暂的等待值允许线程启动更快。短值也避免死锁情况较好。漫长的等待值是有用的工作负载,包括长期的陈述,避免太多新的声明而目前的执行。

    这个变量是只有当线程池的可用插件启用。看到第5.6.3,MySQL企业线程池”

  • thread_stack

    财产价值
    命令行格式--thread-stack=#
    系统变量thread_stack
    范围全球
    动态
    看到的是_提示应用
    类型整数
    默认值(64位平台)262144
    默认值(32位平台)196608
    最小值131072
    最大值(64位平台)18446744073709551615
    最大值(32位平台)4294967295
    块的大小1024

    每个线程的堆栈大小。对192kb默认(256KB的64位系统)是足够大的正常运行。如果线程的堆栈大小太小,限制了SQL语句,服务器可以处理的复杂性,存储过程的递归深度,和其他内存消费行为。

  • time_format

    这个系统变量是MySQL 8.0.3删除。

  • time_zone

    财产价值
    系统变量time_zone
    范围全球会议
    动态
    看到的是_提示应用
    类型字符串

    当前时区。这个变量是用来初始化时间为每个客户端连接。默认情况下,这个初始值'SYSTEM'(这意味着,使用价值system_time_zone)。价值可以明确指定在服务器启动--default-time-zone选项。这第5.1.12,MySQL服务器的时区支持”

    笔记

    如果设置为SYSTEMMySQL的函数调用,都需要一个时区的计算进行了系统库的调用来确定当前系统的时区。这个电话可以通过全局互斥保护,从而在竞争。

  • timestamp

    财产价值
    系统变量timestamp
    范围会话
    动态
    看到的是_提示应用
    类型数字

    设置该客户的时间。这是用来如果你使用二进制日志恢复到原来的时间戳列。timestamp_value应该是一个Unix纪元时间戳(A值,返回UNIX_TIMESTAMP(),没有价值“YYYY-MM-DD HH:MM:SS”格式)或DEFAULT

    设置timestamp一个恒定值,使其保留值直到它再次改变。设置timestamp默认使其价值是当前的日期和时间作为时间访问它。

    在MySQL 8,timestamp是一个而不是BIGINT因为它的价值包括一微秒的一部分。

    SET timestamp影响返回的值NOW()但不SYSDATE()。这意味着,在二进制日志的时间戳设置对调用没有影响SYSDATE()。该服务器可以开始与--sysdate-is-now选择的原因SYSDATE()是一个别名NOW()在这种情况下,设置时间戳影响功能

  • tls_version

    财产价值
    命令行格式--tls-version=protocol_list
    系统变量tls_version
    范围全球
    动态
    看到的是_提示应用
    类型字符串
    默认值(>= 8.0.11)TLSv1,TLSv1.1,TLSv1.2
    默认值(<= 8.0.4)

    TLSv1,TLSv1.1,TLSv1.2(OpenSSL)

    TLSv1,TLSv1.1(yassl)

    该协议允许通过加密连接服务器。价值是一个逗号分隔的列表包含一个或多个协议名称。这可以称之为这个变量取决于用来编译MySQL的SSL库的协议。详情见第6.4.6,“加密连接协议和密码”

  • tmp_table_size

    财产价值
    命令行格式--tmp-table-size=#
    系统变量tmp_table_size
    范围全球会议
    动态
    看到的是_提示应用
    类型整数
    默认值16777216
    最小值1024
    最大值18446744073709551615

    内存中的临时表内的最大大小。这个变量不适用于用户创建的MEMORY

    实际的限制是从任何一个确定的值tmp_table_sizemax_heap_table_size小。如果内存中的临时表超过限制,MySQL会自动将它转换成磁盘临时表。这个internal_tmp_disk_storage_engine选项定义用于在磁盘临时表的存储引擎。

    增加值tmp_table_size(和max_heap_table_size如果必要的话)如果你做了许多先进的查询和你有很多的记忆。

    你可以比较内部的数量的磁盘临时表创建内部临时表通过对价值创造的总数Created_tmp_disk_tablesCreated_tmp_tables变量.

    参见第8.4.4,“MySQL”使用内部临时表

  • tmpdir

    财产价值
    命令行格式--tmpdir=dir_name
    系统变量tmpdir
    范围全球
    动态
    看到的是_提示应用
    类型目录名称

    目录用于临时文件和临时表。这个变量可以设置一系列的路径是用于循环的方式。路径应该是由冒号分隔(:)在UNIX和分号()是Windows操作系统。

    多目录功能可以用来传播的几个物理磁盘之间的负载。如果MySQL服务器作为复制的奴隶,你不应该tmpdir指基于内存的文件系统或目录的目录被清除时,服务器主机重启。复制的奴隶需要一些临时文件的生存机器,它可以复制临时表或重启LOAD DATA INFILE运营如果在临时文件目录下的文件丢失时,重新启动服务器,复制失败。你可以设置你的奴隶的临时目录中使用slave_load_tmpdir变量。在这种情况下,奴隶不使用一般tmpdir值,你可以设置tmpdir一个非常任理事国的位置。

  • transaction_alloc_block_size

    财产价值
    命令行格式--transaction-alloc-block-size=#
    系统变量transaction_alloc_block_size
    范围全球会议
    动态
    看到的是_提示应用
    类型整数
    默认值8192
    最小值1024
    最大值131072
    块的大小1024

    在字节量的增加每一个事务内存池需要记忆。看到的描述transaction_prealloc_size

  • transaction_isolation

    财产价值
    命令行格式--transaction-isolation=name
    系统变量transaction_isolation
    范围全球会议
    动态
    看到的是_提示应用
    类型枚举
    默认值REPEATABLE-READ
    有效值

    READ-UNCOMMITTED

    READ-COMMITTED

    REPEATABLE-READ

    SERIALIZABLE

    默认的事务隔离级别。默认值为REPEATABLE-READ

    这个变量可以直接或间接使用SET TRANSACTION声明。看到第13.3.7,“事务语法”。如果你设置transaction_isolation直接到隔离级别名称包含空格,名称应括在引号内,与空间用破折号代替。例如:

    SET transaction_isolation = 'READ-COMMITTED';

    任何独特的前缀的有效值可以用来设置这个变量的值。

    默认的事务隔离级别,也可以设置在启动时使用--transaction-isolation服务器选项

    这个变量的非标准的语义为运行时更改会话值使用SET声明。对于大多数会议系统变量,这些陈述是等价的:

    集@ @var_name=value集@ @会议var_name=value

    transaction_isolation这些语义应用,而不是:

    • SET @@transaction_isolation = value

      • 不允许在交易

      • 集值仅为下一单交易在会话。

    • SET @@session.transaction_isolation = value

      • 允许范围内的交易

      • 集所有后续交易的价值在会话。

      • 不影响当前正在进行的交易。

      • 如果执行之间的交易,凌驾于任何前SET @@transaction_isolation声明制定下一个交易的价值。

  • transaction_prealloc_size

    财产价值
    命令行格式--transaction-prealloc-size=#
    系统变量transaction_prealloc_size
    范围全球会议
    动态
    看到的是_提示应用
    类型整数
    默认值4096
    最小值1024
    最大值131072
    块的大小1024

    有一个每个交易的内存池,各种交易相关的分配占用内存。在字节的池的初始大小transaction_prealloc_size。每一个分配,不能从池满意因为没有足够的可用内存,池增加transaction_alloc_block_size字节。当交易结束,游泳池被截断transaction_prealloc_size字节

    通过使transaction_prealloc_size大到足以容纳在一个事务中的所有语句,你可以避免很多马洛克电话.

  • transaction_read_only

    财产价值
    命令行格式--transaction-read-only
    系统变量transaction_read_only
    范围全球会议
    动态
    看到的是_提示应用
    类型布尔
    默认值OFF

    默认事务访问模式。该值可以是OFF(读/写,默认)或打开(放)(只读)

    这个变量可以直接或间接使用SET TRANSACTION声明。看到第13.3.7,“事务语法”

    设置默认的交易接入方式在启动时,使用--transaction-read-only服务器选项

    这个变量的非标准的语义为运行时更改会话值使用SET声明。对于大多数会议系统变量,这些陈述是等价的:

    集@ @var_name=value集@ @会议var_name=value

    transaction_read_only这些语义应用,而不是:

    • SET @@transaction_read_only = value

      • 不允许在交易

      • 集值仅为下一单交易在会话。

    • SET @@session.transaction_read_only = value

      • 允许范围内的交易

      • 集所有后续交易的价值在会话。

      • 不影响当前正在进行的交易。

      • 如果执行之间的交易,凌驾于任何前SET @@transaction_read_only声明制定下一个交易的价值。

  • tx_isolation

    财产价值
    过时的是的(除去8.0.3)
    系统变量tx_isolation
    范围全球会议
    动态
    看到的是_提示应用
    类型枚举
    默认值REPEATABLE-READ
    有效值

    READ-UNCOMMITTED

    READ-COMMITTED

    REPEATABLE-READ

    SERIALIZABLE

    这个系统变量是MySQL 8.0.3删除。使用transaction_isolation相反

  • tx_read_only

    财产价值
    过时的是的(除去8.0.3)
    系统变量tx_read_only
    范围全球会议
    动态
    看到的是_提示应用
    类型布尔
    默认值OFF

    这个系统变量是MySQL 8.0.3删除。使用transaction_read_only相反

  • unique_checks

    财产价值
    系统变量unique_checks
    范围全球会议
    动态
    看到的是_提示应用
    类型布尔
    默认值1

    如果设置为1(默认),唯一性检查,次要指标InnoDB表进行。如果设置为0,存储引擎允许假设复制的钥匙不在输入数据。如果你知道你的数据不包含性行为,你可以设置0为加快大表进口InnoDB

    设置此变量为0不要求存储引擎忽略重复键。发动机仍允许检查和重复键错误问题,如果它检测到。

  • updatable_views_with_limit

    财产价值
    命令行格式--updatable-views-with-limit=#
    系统变量updatable_views_with_limit
    范围全球会议
    动态
    看到的是_提示应用
    类型布尔
    默认值1

    这个变量控制是否可更新视图时,视图不包含所有列在下表中定义主键,如果update语句包含一个LIMIT条款.(这样的更新往往是由GUI工具生成一个更新的。)UPDATEDELETE声明。这意味着一个主键主键,或UNIQUE指数在没有列可以包含无效的

    变量可以有两个值:

    • 1:只发出警告(没有错误信息)。这是默认值。

    • 0:禁止更新

  • use_secondary_engine

    财产价值
    介绍8.0.13
    系统变量use_secondary_engine
    范围会话
    动态
    看到的是_提示应用
    类型枚举
    默认值OFF
    有效值

    OFF

    ON

    FORCE

    为将来使用

  • validate_password.xxx

    这个validate_password组件实现了一套系统变量在表格的名称_验证密码xxx。这些变量的影响,部分密码测试;看第6.5.3.2,“密码验证选项和变量”

  • validate_user_plugins

    财产价值
    系统变量validate_user_plugins
    范围全球
    动态
    看到的是_提示应用
    类型布尔
    默认值ON

    如果启用(默认),服务器会检查每个用户帐户并产生一个警告,如果发现条件,使帐户不可用:

    • 帐户需要认证的插件,不加载。

    • 帐户要求sha256_passwordcaching_sha2_password认证插件,但启动服务器没有启用SSL和RSA的插件需要。

    有可能validate_user_plugins减慢服务器初始化和同花顺的特权。如果你不需要额外的检查,您可以禁用此变量在启动时避免性能下降。

  • version

    该服务器上的版本号。价值可能还包含一个后缀指示服务器构建或配置信息。-debug指示服务器和调试支持建成启用。

  • version_comment

    财产价值
    系统变量version_comment
    范围全球
    动态
    看到的是_提示应用
    类型字符串

    这个CMake配置程序有一个COMPILATION_COMMENT选项允许指定MySQL时,建筑评论。这个变量包含评论的价值。看到第2.8.4节,“MySQL源-配置选项”

  • version_compile_machine

    财产价值
    系统变量version_compile_machine
    范围全球
    动态
    看到的是_提示应用
    类型字符串

    服务器的二进制类型

  • version_compile_os

    财产价值
    系统变量version_compile_os
    范围全球
    动态
    看到的是_提示应用
    类型字符串

    操作系统上的MySQL建造类型。

  • version_compile_zlib

    财产价值
    介绍8.0.11
    系统变量version_compile_zlib
    范围全球
    动态
    看到的是_提示应用
    类型字符串

    的编译版本zlib图书馆

  • wait_timeout

    财产价值
    命令行格式--wait-timeout=#
    系统变量wait_timeout
    范围全球会议
    动态
    看到的是_提示应用
    类型整数
    默认值28800
    最小值1
    最大值(其他)31536000
    最大值(Windows)2147483

    数秒的服务器上等待一个非交互式连接活动之前关闭它。

    在线程启动,会话wait_timeout值初始化的全局wait_timeout值或从全球interactive_timeout价值,取决于客户的类型(如定义的client_interactive连接选项mysql_real_connect())。see alsointeractive_timeout

  • warning_count

    错误,警告的数量,并指出,由于生成的消息的最后一个语句。这个变量是只读的。看到第13.7.6.40,“显示警告语法”

  • windowing_use_high_precision

    财产价值
    命令行格式--windowing-use-high-precision=#
    介绍8.0.2
    系统变量windowing_use_high_precision
    范围全球会议
    动态
    看到的是_提示应用
    类型布尔
    默认值ON

    是否计算窗口操作而不损失精度。看到第8.2.1.19,窗口函数优化”

5.1.8使用系统变量

MySQL服务器维护许多系统变量,表明它是如何配置。第5.1.7,服务器“系统变量”,说明这些变量的意义。每一个系统变量有默认值。系统变量可以设置使用选项在命令行或在一个选项文件服务器启动。他们中的大多数可以动态改变而服务器通过运行SET声明,它使您能够修改服务器的运行而不需要停止并重新启动它。你也可以在表达式中使用系统变量的值。

系统变量的服务器组件实现的是暴露在组件安装和名与特定组件的前缀开始。例如,在log_filter_dragnet错误日志过滤器组件实现系统变量命名log_error_filter_rules,它的全称是dragnet.log_error_filter_rules。引用这个变量,用全名。

有两个范围,系统存在变数。全局变量会影响服务器的整体运行。会话变量影响其运行单个客户端的连接。一个给定的系统变量可以有一个全局和会话值。全球会议系统变量的关系如下:

  • 当服务器启动时,它的每一个全局变量初始化为默认值。这些默认值可以通过命令行或在一个选项文件中指定的选项改变。(见4.2.3节”指定程序选项”。)

  • 服务器维护一组会话变量为每个客户端连接。客户端的会话变量初始化连接时使用相应的全局变量的当前值。例如,一个客户端的SQL模式的会话控制sql_mode价值,这是初始化,当客户端连接到全球价值sql_mode价值

    对于一些系统变量,会话值不初始化相应的全局值;如果是这样,那是在变量说明。

系统变量的值可以设置全局在用选项在命令行或在一个选项文件服务器启动。当你使用启动选项来设置一个变量,一个数字值,值可以是一个给定的后缀KM,或G(大写或小写)来表示一个乘数为1024、1024或1024;那是,单位是千字节,兆字节或字节,分别。因此,下面的命令启动服务器的InnoDB16 MB的日志文件大小和一个字节的最大数据包大小:

mysqld --innodb_log_file_size=16M --max_allowed_packet=1G

在一个选项文件,这样设置这些变量:

[mysqld]
innodb_log_file_size=16M
max_allowed_packet=1G

后缀字母lettercase并不重要;16M16m是等价的,如1G1g

限制最大值,系统变量可以在运行时设置的SET声明中,利用形式的选项指定最大-最高var_name=value在服务器启动。例如,为了防止价值innodb_log_file_size被增加到超过32mb在运行时,使用选项--maximum-innodb_log_file_size=32M

许多系统变量是动态的,可以在运行时改变用SET声明。一个清单,看看第5.1.8.3,动态的“系统变量”。改变系统变量SET,指的是它的名字,或者在前面加一个修饰词:

  • 表示一个变量是全局变量,它的名字之前GLOBAL关键词或@ @全球资格赛:

    SET GLOBAL max_connections = 1000;
    SET @@global.max_connections = 1000;
    

    这个SYSTEM_VARIABLES_ADMINSUPER特权是需要设置全局变量。

  • 另一种方式来设置一个全局变量的名字是领先的PERSIST关键词或@ @坚持资格赛:

    SET PERSIST max_connections = 1000;
    SET @@persist.max_connections = 1000;
    

    SET语法让你在那还坚持在服务器运行时进行配置更改重启。喜欢SET GLOBALSET PERSIST更改运行时变量的值,但也写变量设置一个选项,文件名为mysqld-auto.cnf在数据目录(取代任何现有的变量设置,如果有一个)。在启动时,服务器处理这个文件的所有其他选项文件后。这个SYSTEM_VARIABLES_ADMINSUPER特权必须坚持全局变量。

    对于一个系统变量列表,不能坚持,看第5.1.8.1,“非持久性系统变量”

    笔记

    管理的mysqld-auto.cnf文件应该留给服务器而不是手动执行:

    • 该文件将导致丢失所有坚持设置在下次启动服务器的去除。(如果你的目的是重新配置服务器没有设置。这是允许的)删除所有设置在文件没有删除文件本身,使用此语句:

      RESET PERSIST;
      
    • 该文件手册的变化可能会导致在服务器启动一个语法错误。在这种情况下,服务器报告错误并退出。如果发生此问题,以启动服务器persisted_globals_load系统变残疾或与没有默认值选项另外,去除mysqld-auto.cnf文件,但是,如前所述,除亏损在持续设置该文件的结果。

    一个插件变量可以坚持如果插件安装时SET PERSIST执行。在坚持插件变量赋值生效后重新启动服务器插件是否仍安装。如果插件不再是安装插件变量不存在时,服务器读取mysqld-auto.cnf文件在这种情况下,服务器写入错误日志警告,继续:

    currently unknown variable 'var_name'
    was read from the persisted config file
    
  • 这个PERSIST_ONLY关键词或@ @ persist_only。限定符是相似的PERSIST

    SET PERSIST_ONLY back_log = 1000;SET @@persist_only.back_log = 1000;

    喜欢PERSISTpersist_only将变量设置mysqld-auto.cnf。然而,不像坚持PERSIST_ONLY不修改运行时系统全局变量的值,使其适合配置只读系统变量只能被设置在服务器启动。这个PERSIST_RO_VARIABLES_ADMIN特权是需要使用persist_only

  • 这个mysqld-auto.cnf文件使用这样的格式(略修改):

    {“版本”:1,“mysql_server”:{“max_connections”:{“价值”:“152”、“元数据”:{“时间戳”:1.519921356e 15,“用户”:“根”、“主机”:“localhost”} },“transaction_isolation”:{“价值”:“read-committed”、“元数据”:{“时间戳”:1.519921553e 15,“用户”:“根”、“主机”:“localhost”} },“mysql_server_static_options”:{“innodb_api_enable_mdl”:{“价值”:“0”、“元数据”:{“时间戳”:1.519921573e 15“用户”:“根”、“主机”:“localhost”} },“log_slave_updates”:{“价值”:“1”、“元数据”:{“时间戳”:1.519921582e 15,“用户”:“根”、“主机”:“localhost”} } } } }

    只有坚持使用只读变量PERSIST_ONLY写入“_ MySQL服务器_静态_选项”分节。所有变数都在这里"mysql_server_static_options"部分追加到命令行服务器启动时。所有剩余的持续变量的设置通过执行SET GLOBAL声明

  • 表示一个变量是一个session变量,在它的名字的SESSION关键词或@ @ @ @ @ @ @ @@@资格赛:

    SET SESSION sql_mode = 'TRADITIONAL';SET @@session.sql_mode = 'TRADITIONAL';SET @@sql_mode = 'TRADITIONAL';

    设置会话变量通常不需要特殊的特权,虽然也有例外,要求SYSTEM_VARIABLES_ADMINSUPER特权(如sql_log_bin)。客户可以自己更改会话变量,但不与任何其他客户。

    会议系统变量不能坚持。他们不能设置在服务器启动,所以没有理由把它们列入mysqld-auto.cnf

  • LOCAL@ @的地方是同义词SESSION@ @ @ @ @ @ @ @

  • 如果没有改性剂是目前,SET会话变量的变化

  • 发生错误的情况下:

    • 使用SET GLOBAL(或@ @全球),SET PERSIST(或@ @坚持),或SET PERSIST_ONLY(或@ @ persist_only。),设置一个变量,只有一个会话值时:

      mysql> SET GLOBAL sql_log_bin = ON;
      ERROR 1228 (HY000): Variable 'sql_log_bin' is a SESSION
      variable and can't be used with SET GLOBAL
      
    • 省略GLOBAL(或@ @全球),PERSIST(或@ @坚持),或PERSIST_ONLY(或@ @ persist_only。)设置一个变量,只有当全球价值:

      mysql> SET max_connections = 1000;
      ERROR 1229 (HY000): Variable 'max_connections' is a
      GLOBAL variable and should be set with SET GLOBAL
      
    • 使用SET PERSIST(或@ @坚持),或SET PERSIST_ONLY(或@ @ persist_only。),设置一个变量,不能坚持的时候:

      mysql> SET PERSIST port = 3307;
      ERROR 1238 (HY000): Variable 'port' is a read only variable
      mysql> SET PERSIST_ONLY port = 3307;
      ERROR 1238 (HY000): Variable 'port' is a non persistent read only variable
      
    • 使用SET SESSION(或@ @ @ @ @ @ @ @)设置一个变量,只有当全球价值:

      mysql> SET SESSION max_connections = 1000;
      ERROR 1229 (HY000): Variable 'max_connections' is a
      GLOBAL variable and should be set with SET GLOBAL
      

前面的修饰词只适用于系统变量。发生错误,试图将其应用到用户定义的变量,存储过程或函数的参数,或存储程序的局部变量。

SET报表可以包含多个变量赋值,以逗号分隔。这个语句将值赋给一个用户定义的变量和系统变量:

SET @x = 1, SESSION sql_mode = '';

如果你设置了多个系统变量,最近GLOBAL坚持PERSIST_ONLY,或会话在声明中,改性剂是用于以下没有修饰符指定作业。

多变量赋值的例子:

SET GLOBAL sort_buffer_size = 1000000, SESSION sort_buffer_size = 1000000;
SET @@global.sort_buffer_size = 1000000, @@local.sort_buffer_size = 1000000;
SET GLOBAL max_connections = 1000, sort_buffer_size = 1000000;

如果任何一个变量赋值SET语句失败,整个语句失败,没有变量的改变,也不是mysqld-auto.cnf文件更改

如果你改变一个会话的系统变量值仍然有效,在你的会议直到你变为一个不同的值或结束会话。的变化对其他治疗没有效果。

如果你改变了一个全球性的系统变量的值,被用于新会话直到你改变的变量不同的值或服务器退出。变化是任何客户端访问全局变量,可见。然而,变化影响相应的会话变量仅用于客户端连接后的变化。全局变量的变化不会影响任何现有的客户端会话的会话变量(甚至不在其中SET GLOBAL声明发生)

做一个全球性的系统变量设置永久性使其应用在服务器重新启动时,修改它SET PERSISTpersist_only记录在mysqld-auto.cnf文件也可以使用SET GLOBAL手动修改my.cnf文件,但更多的是繁琐的,在手动输入设定错误可能要到后来发现。SET PERSISTpersist_only更为方便和避免畸形设置的可能性。

性能模式persisted_variables表提供的SQL接口mysqld-auto.cnf文件,使其内容可在运行时通过检查SELECT声明.看到第25.11.13.1,“性能模式persisted_variables表”

性能模式variables_info表包含的信息显示在每个用户的系统变量的最近设置。看到第25.11.13.2,“性能模式variables_info表”

设置一个GLOBAL在编译MySQL的默认值或值会话变为相应的电流GLOBAL值,设置变量的值默认。例如,以下语句设置会话的值是相同的max_join_size当前的全球价值:

SET @@session.max_join_size=DEFAULT;SET @@session.max_join_size=@@global.max_join_size;

不是所有的系统变量可以被设置为DEFAULT。在这种情况下,分配默认在一个错误的结果

SET PERSIST(或@ @坚持),设置一个全局变量DEFAULT或其文字默认值指定变量的默认值和添加的变量设置mysqld-auto.cnf。从文件删除的变量,使用RESET PERSIST

一个错误发生试图分配DEFAULT用户定义的变量,存储过程或函数的参数,或存储程序的局部变量。

指在表达系统变量的值,使用其中的@@(except -编辑修改器@ @坚持,这是不允许的表情)。例如,你可以在检索值SELECT这样的陈述:

选择“@global.sql_mode,@ @session.sql_mode,@ @ sql_mode;

一个参考表达式中的系统变量@@var_name(而不是@ @全球@@session.),如果它的存在和全球价值否则MySQL返回会话值。这不同于集@ @var_name=expr,这往往是指会话值

指定一个值的乘数可以用来设置一个变量在服务器启动的后缀,而不是设定值SET在运行时。另一方面,随着SET你可以指定一个变量的值使用的一种表达,这是不是真的当你设置一个变量在服务器启动。例如,下面的第一条是法律在服务器启动,但二不:

内核&#62;mysql --max_allowed_packet=16M内核&#62;mysql --max_allowed_packet=16*1024*1024

相反,该行第二是法律在运行,但首先是不:

mysql> SET GLOBAL max_allowed_packet=16M;
mysql> SET GLOBAL max_allowed_packet=16*1024*1024;
笔记

有些系统变量可以使用SET通过设置他们的声明打开(放)1通过设置,或禁用它们关闭0。然而,建立这样的一个变量在命令行或在一个选项文件,你必须将它设置为0;设置为打开(放)OFF将不工作。例如,在命令行,--delay_key_write=1的作品,但--delay_key_write=ON

显示系统变量的名称和值,使用SHOW VARIABLES声明:

MySQL的&#62;SHOW VARIABLES;--------------------------------- _ name变量值| ----------------------------------- | | --------------------------------- ----------------------------------- | _增量增量1车车_ | | | _ _偏移增量| | |自动_ SP 1我们_ Privileges | | |背_日志| | | BASEDIR | 151 /家/ MySQL / | | binlog _ _ | 32768 | |缓存大小大容量插入缓冲区大小_ _ _ | 8388608 |字符集的客户| _ _ | UTF8字符集| | _ _ | UTF8字符连接数据库| | _集_ | utf8mb4 | |字符集的二进制文件系统_ _ | |字符集| _ _ results| utf8字符集| | _ _ Server | utf8mb4 | |字符集系统_ _ | UTF8字符集| | _ _ dir | /家/ MySQL /分享/ MySQL /零食/ | charsets | _连接词一般| UTF8 _ _ | |小吃_数据库| utf8mb4 _ _ _词有点| |小吃_ Server | utf8mb4 _ _ _词有点|……| InnoDB _ autoextend _增量| 8 | | InnoDB缓冲池大小_ _ _ | 8388608 | | InnoDB _ _并发提交| 0票| | InnoDB _并发_ | 500 | | InnoDB数据文件的路径| _ _ _ ibdata1:10M | InnoDB数据:autoextend | _ _ Home目录版本_ | |……| | 8.0.1-dmr-log | |版本_怎么|源分布我们| | _编译版本_机械| i686 | |编译版本_ SuSE Linux操作系统| _ | |等_超时| 28800 | --------------------------------- -----------------------------------

用一个LIKE条款,声明只显示那些变量匹配模式。获得一个特定的变量名,使用LIKE条款如下所示:

显示变量的max_join_size”;显示会话变量如max_join_size”;

得到一系列的变量的名称匹配的模式,使用%在通配符LIKE条款:

显示变量&#39;&#39;%1大小%;显示全局变量是“大小%;

通配符可以用在任何位置的匹配模式。严格地说,因为_是一个通配符,匹配任何单个字符,你要逃避它“_把它随便。在实践中,这是没有必要的。

SHOW VARIABLES,如果没有指定全球也没有SESSION,MySQL返回会话价值观

之所以要求GLOBAL关键词设定全球只有变量而不是当检索是预防未来的问题:

  • 我们要删除SESSION变量具有相同的名称作为全球变量,客户端与SYSTEM_VARIABLES_ADMINSUPER特权可能意外的改变全球变量而不是SESSION对于自己的连接变量

  • 我们添加一个SESSION具有相同名称的变量作为全球变,客户拟变更GLOBAL变量可能只找到自己会话变量的变化

5.1.8.1 nonpersistent系统变量

SET PERSISTSET PERSIST_ONLY使系统变量被保存到mysqld-auto.cnf在数据目录选项文件(见第13.7.5.1,”句法变量赋值”)。然而,并不是所有的系统变量可以坚持:

  • 这些系统变量不能坚持:

    auto_generate_certs
    basedir
    bind_address
    character_set_system
    character_sets_dir
    core_file
    datadir
    default_authentication_plugin
    ft_stopword_file
    have_statement_timeout
    have_symlink
    hostname
    init_file
    keyring_operations
    large_files_support
    large_page_size
    lc_messages_dir
    license
    locked_in_memory
    log_bin
    log_bin_basename
    log_bin_index
    log_bin_use_v1_row_events
    log_error
    lower_case_file_system
    named_pipe
    persisted_globals_load
    pid_file
    plugin_dir
    port
    protocol_version
    relay_log
    relay_log_basename
    relay_log_index
    relay_log_info_file
    secure_file_priv
    server_uuid
    shared_memory
    shared_memory_base_name
    skip_external_locking
    skip_networking
    slave_load_tmpdir
    socket
    ssl_ca
    ssl_capath
    ssl_cert
    ssl_crl
    ssl_crlpath
    ssl_key
    system_time_zone
    tmpdir
    version_comment
    version_compile_machine
    version_compile_os
    version_compile_zlib
    
  • 这些插件系统变量不能坚持:

    audit_log_current_session
    audit_log_file
    audit_log_filter_id
    audit_log_format
    caching_sha2_password_auto_generate_rsa_keys
    caching_sha2_password_private_key_path
    caching_sha2_password_public_key_path
    daemon_memcached_engine_lib_name
    daemon_memcached_engine_lib_path
    daemon_memcached_option
    innodb_buffer_pool_load_at_startup
    innodb_data_file_path
    innodb_data_home_dir
    innodb_dedicated_server
    innodb_directories
    innodb_force_load_corrupted
    innodb_log_group_home_dir
    innodb_page_size
    innodb_read_only
    innodb_temp_data_file_path
    innodb_undo_directory
    innodb_undo_tablespaces
    innodb_version
    keyring_encrypted_file_data
    keyring_encrypted_file_password
    mecab_rc_file
    sha256_password_auto_generate_rsa_keys
    sha256_password_private_key_path
    sha256_password_public_key_path
    version_tokens_session
    

5.1.8.2结构化的系统变量

结构变量的不同于常规系统变量在两方面:

  • 它的值是一个组件,指定服务器参数是密切相关的结构。

  • 有可能是一个给定类型的结构变量的几个例子。每个人都有一个不同的名称,指的是一个不同的资源由服务器维护。

MySQL支持一个结构变量的类型,它指定密钥缓存的操作参数的控制。一个关键的缓存结构变量有这些组件:

本节描述指结构变量的语法。键缓存变量用于语法的例子,但关键是如何在其他地方找到缓存操作的具体细节,在部分8.10.2,“myisam Key Cache”

指结构化变量实例的一个组件,你可以使用一个复合的名字instance_name.component_name格式。实例:

hot_cache.key_buffer_sizehot_cache.key_cache_block_sizecold_cache.key_cache_block_size

每个结构变量,名字与实例default总是预定。如果你指的是一个结构变量的一部分没有任何实例名称的默认实例应用。因此,default.key_buffer_sizekey_buffer_size都指的是同一个系统变量。

结构化变量实例和组件遵循这些命名规则:

  • 对于一个给定类型的结构变量,每个实例都必须有一个名字,是独一无二的在内部这个类型的变量。不管怎样,我不需要独处穿过结构化变量类型。例如,每个结构变量有一个命名实例default,所以默认是不是唯一的变量类型。

  • 对每个结构变量类型的组件的名称必须在所有的系统变量的名称是独一无二的。如果这是真的(即,如果结构两种不同类型变量可以分享组成员的名字),也不清楚它默认的结构化变量用来不受限定的成员名称引用实例名称。

  • 如果一个结构变量实例名不合法的不带引号的标识符,称它为一个带引号的标识符使用引号。例如,hot-cache是不合法的,但` `热缓存是.

  • global阶段,和local没有法律诉讼。This avoids a conflict with评级Such as as as as a@ @全球var_name引用非结构化的系统变量。

目前,前两个规则已经不可能被侵犯因为只有结构变量的类型是一个关键的高速缓存。这些规则将有其他类型的结构变量是建立在未来承担更大的意义。

有一个例外,你可以参考结构化变量元件采用复合名称在任何情况下,简单的变量名可以发生。例如,你可以指定一个值,结构变量的使用命令行选项:

shell> mysqld --hot_cache.key_buffer_size=64K

在本文件中的选项,使用语法:

[mysqld]
hot_cache.key_buffer_size=64K

如果你启动服务器使用此选项,它创建了一个名为密钥缓存hot_cache一种尺寸除了默认的密钥缓存,默认大小64kb 8MB。

假设你启动服务器如下:

shell> mysqld --key_buffer_size=256K \
         --extra_cache.key_buffer_size=128K \
         --extra_cache.key_cache_block_size=2048

在这种情况下,服务器设置默认缓存大小256KB的关键。(你也可以写--default.key_buffer_size=256K。)此外,服务器会创建一个第二密钥缓存命名超高速缓存有一个大小与块128KB,缓冲大小的缓存表的索引块设置为2048字节。

下面的示例启动服务器的三个不同的密钥缓存在一个可比的大小:

shell> mysqld --key_buffer_size=6M \
         --hot_cache.key_buffer_size=2M \
         --cold_cache.key_buffer_size=2M

结构变量的值可以在运行时设置和检索以及。例如,设置一个密钥缓存命名hot_cache一个大小为10MB,使用这些语句:

MySQL的&#62;SET GLOBAL hot_cache.key_buffer_size = 10*1024*1024;MySQL的&#62;SET @@global.hot_cache.key_buffer_size = 10*1024*1024;

检索缓存大小,这样做:

mysql> SELECT @@global.hot_cache.key_buffer_size;

然而,下面的语句不工作。变量不解释为一个复合的名字,而是作为一个简单的字符串LIKE模式匹配运算:

MySQL的&#62;SHOW GLOBAL VARIABLES LIKE 'hot_cache.key_buffer_size';

这是不能够使用结构化变量名称的任何一个简单的变量名可能发生。

5.1.8.3动态系统变量

许多服务器系统变量是动态的,可以在运行时设置使用SET GLOBALSET SESSION。你也可以获得它们的值使用SELECT。看到5.1.8节,“使用系统变量”

下表显示了所有动态系统变量的完整列表。最后一列表示每个变量是否GLOBAL会话(或两者)的应用。该表还列出了会话的选项,可以设置与SET声明第5.1.7,服务器“系统变量”讨论这些选项

有一个变量的类型字符串把一个字符串值。有一个变量的类型数字以一个数值。有一个变量的类型布尔可以设置为0, 1,ON关闭。被标记为变量枚举通常应该设置为一个变量的有效值,但也可以设置为对应于所需的枚举值的个数。枚举系统变量,首先枚举值对应于0。这不同于ENUM列,其中第一个枚举值对应于1。

表5.4总结了动态变量

变量名变量类型变量范围
activate_all_roles_on_login布尔GLOBAL
audit_log_connection_policy枚举GLOBAL
audit_log_exclude_accounts字符串GLOBAL
audit_log_flush布尔GLOBAL
audit_log_include_accounts字符串GLOBAL
audit_log_read_buffer_size整数GLOBAL|会话
audit_log_rotate_on_size整数GLOBAL
audit_log_statement_policy枚举GLOBAL
authentication_ldap_sasl_auth_method_name字符串GLOBAL
authentication_ldap_sasl_bind_base_dn字符串GLOBAL
authentication_ldap_sasl_bind_root_dn字符串GLOBAL
authentication_ldap_sasl_bind_root_pwd字符串GLOBAL
authentication_ldap_sasl_ca_path字符串GLOBAL
authentication_ldap_sasl_group_search_attr字符串GLOBAL
authentication_ldap_sasl_group_search_filter字符串GLOBAL
authentication_ldap_sasl_init_pool_size整数GLOBAL
authentication_ldap_sasl_log_status整数GLOBAL
authentication_ldap_sasl_max_pool_size整数GLOBAL
authentication_ldap_sasl_server_host字符串GLOBAL
authentication_ldap_sasl_server_port整数GLOBAL
authentication_ldap_sasl_tls布尔GLOBAL
authentication_ldap_sasl_user_search_attr字符串GLOBAL
authentication_ldap_simple_auth_method_name字符串GLOBAL
authentication_ldap_simple_bind_base_dn字符串GLOBAL
authentication_ldap_simple_bind_root_dn字符串GLOBAL
authentication_ldap_simple_bind_root_pwd字符串GLOBAL
authentication_ldap_simple_ca_path字符串GLOBAL
authentication_ldap_simple_group_search_attr字符串GLOBAL
authentication_ldap_simple_group_search_filter字符串GLOBAL
authentication_ldap_simple_init_pool_size整数GLOBAL
authentication_ldap_simple_log_status整数GLOBAL
authentication_ldap_simple_max_pool_size整数GLOBAL
authentication_ldap_simple_server_host字符串GLOBAL
authentication_ldap_simple_server_port整数GLOBAL
authentication_ldap_simple_tls布尔GLOBAL
authentication_ldap_simple_user_search_attr字符串GLOBAL
auto_increment_increment整数GLOBAL|会话
auto_increment_offset整数GLOBAL|会话
autocommit布尔GLOBAL|会话
automatic_sp_privileges布尔GLOBAL
avoid_temporal_upgrade布尔GLOBAL
big_tables布尔GLOBAL|会话
binlog_cache_size整数GLOBAL
binlog_checksum字符串GLOBAL
binlog_direct_non_transactional_updates布尔GLOBAL|会话
binlog_error_action枚举GLOBAL
binlog_expire_logs_seconds整数GLOBAL
binlog_format枚举GLOBAL|会话
binlog_group_commit_sync_delay整数GLOBAL
binlog_group_commit_sync_no_delay_count整数GLOBAL
binlog_max_flush_queue_time整数GLOBAL
binlog_order_commits布尔GLOBAL
binlog_row_image=image_type枚举GLOBAL|会话
binlog_row_metadata=metadata_type枚举GLOBAL
binlog_row_value_options配置GLOBAL|会话
binlog_rows_query_log_events布尔GLOBAL|会话
binlog_stmt_cache_size整数GLOBAL
binlog_transaction_dependency_history_size整数GLOBAL
binlog_transaction_dependency_tracking枚举GLOBAL
block_encryption_mode字符串GLOBAL|会话
bulk_insert_buffer_size整数GLOBAL|会话
character_set_client字符串GLOBAL|会话
character_set_connection字符串GLOBAL|会话
character_set_database字符串GLOBAL|会话
character_set_filesystem字符串GLOBAL|会话
character_set_results字符串GLOBAL|会话
character_set_server字符串GLOBAL|会话
check_proxy_users布尔GLOBAL
collation_connection字符串GLOBAL|会话
collation_database字符串GLOBAL|会话
collation_server字符串GLOBAL|会话
completion_type枚举GLOBAL|会话
concurrent_insert枚举GLOBAL
connect_timeout整数GLOBAL
connection_control_failed_connections_threshold整数GLOBAL
connection_control_max_connection_delay整数GLOBAL
connection_control_min_connection_delay整数GLOBAL
cte_max_recursion_depth整数GLOBAL|会话
debug字符串GLOBAL|会话
debug_sync字符串SESSION
default_collation_for_utf8mb4枚举GLOBAL|会话
default_password_lifetime整数GLOBAL
default_storage_engine枚举GLOBAL|会话
default_tmp_storage_engine枚举GLOBAL|会话
default_week_format整数GLOBAL|会话
delay_key_write枚举GLOBAL
delayed_insert_limit整数GLOBAL
delayed_insert_timeout整数GLOBAL
delayed_queue_size整数GLOBAL
div_precision_increment整数GLOBAL|会话
dragnet.log_error_filter_rules字符串GLOBAL
end_markers_in_json布尔GLOBAL|会话
enforce_gtid_consistency枚举GLOBAL
enforce_gtid_consistency枚举GLOBAL
eq_range_index_dive_limit整数GLOBAL|会话
event_scheduler枚举GLOBAL
executed_gtids_compression_period整数GLOBAL
expire_logs_days整数GLOBAL
explicit_defaults_for_timestamp布尔GLOBAL|会话
flush布尔GLOBAL
flush_time整数GLOBAL
foreign_key_checks布尔GLOBAL|会话
ft_boolean_syntax字符串GLOBAL
general_log布尔GLOBAL
general_log_file文件名GLOBAL
group_concat_max_len整数GLOBAL|会话
group_replication_allow_local_disjoint_gtids_join布尔GLOBAL
group_replication_allow_local_lower_version_join布尔GLOBAL
group_replication_auto_increment_increment整数GLOBAL
group_replication_bootstrap_group布尔GLOBAL
group_replication_communication_debug_options字符串GLOBAL
group_replication_components_stop_timeout整数GLOBAL
group_replication_compression_threshold整数GLOBAL
group_replication_enforce_update_everywhere_checks布尔GLOBAL
group_replication_exit_state_action枚举GLOBAL
group_replication_flow_control_applier_threshold整数GLOBAL
group_replication_flow_control_certifier_threshold整数GLOBAL
group_replication_flow_control_hold_percent整数GLOBAL
group_replication_flow_control_min_quota整数GLOBAL
group_replication_flow_control_member_quota_percent整数GLOBAL
group_replication_flow_control_min_quota整数GLOBAL
group_replication_flow_control_min_recovery_quota整数GLOBAL
group_replication_flow_control_mode枚举GLOBAL
group_replication_flow_control_period整数GLOBAL
group_replication_flow_control_release_percent整数GLOBAL
group_replication_force_members字符串GLOBAL
group_replication_group_name字符串GLOBAL
group_replication_group_seeds字符串GLOBAL
group_replication_gtid_assignment_block_size整数GLOBAL
group_replication_ip_whitelist字符串GLOBAL
group_replication_local_address字符串GLOBAL
group_replication_member_weight整数GLOBAL
group_replication_poll_spin_loops整数GLOBAL
group_replication_recovery_complete_at枚举GLOBAL
group_replication_recovery_get_public_key布尔GLOBAL
group_replication_recovery_public_key_path文件名GLOBAL
group_replication_recovery_reconnect_interval整数GLOBAL
group_replication_recovery_retry_count整数GLOBAL
group_replication_recovery_ssl_ca字符串GLOBAL
group_replication_recovery_ssl_capath字符串GLOBAL
group_replication_recovery_ssl_cert字符串GLOBAL
group_replication_recovery_ssl_cipher字符串GLOBAL
group_replication_recovery_ssl_crl字符串GLOBAL
group_replication_recovery_ssl_crlpath字符串GLOBAL
group_replication_recovery_ssl_key字符串GLOBAL
group_replication_recovery_ssl_verify_server_cert布尔GLOBAL
group_replication_recovery_use_ssl布尔GLOBAL
group_replication_single_primary_mode布尔GLOBAL
group_replication_ssl_mode枚举GLOBAL
group_replication_start_on_boot布尔GLOBAL
group_replication_transaction_size_limit整数GLOBAL
group_replication_unreachable_majority_timeout整数GLOBAL
gtid_executed_compression_period整数GLOBAL
gtid_mode枚举GLOBAL
gtid_mode枚举GLOBAL
gtid_next枚举SESSION
gtid_purged字符串GLOBAL
histogram_generation_max_mem_size整数GLOBAL|会话
host_cache_size整数GLOBAL
identity整数SESSION
information_schema_stats_expiry整数GLOBAL|会话
init_connect字符串GLOBAL
init_slave字符串GLOBAL
innodb_adaptive_flushing布尔GLOBAL
innodb_adaptive_flushing_lwm整数GLOBAL
innodb_adaptive_hash_index布尔GLOBAL
innodb_adaptive_max_sleep_delay整数GLOBAL
innodb_api_bk_commit_interval整数GLOBAL
innodb_api_trx_level整数GLOBAL
innodb_autoextend_increment整数GLOBAL
innodb_background_drop_list_empty布尔GLOBAL
innodb_buffer_pool_dump_at_shutdown布尔GLOBAL
innodb_buffer_pool_dump_now布尔GLOBAL
innodb_buffer_pool_dump_pct整数GLOBAL
innodb_buffer_pool_filename文件名GLOBAL
innodb_buffer_pool_load_abort布尔GLOBAL
innodb_buffer_pool_load_now布尔GLOBAL
innodb_buffer_pool_size整数GLOBAL
innodb_change_buffer_max_size整数GLOBAL
innodb_change_buffering枚举GLOBAL
innodb_change_buffering_debug整数GLOBAL
innodb_checkpoint_disabled布尔GLOBAL
innodb_checksum_algorithm枚举GLOBAL
innodb_cmp_per_index_enabled布尔GLOBAL
innodb_commit_concurrency整数GLOBAL
innodb_compress_debug枚举GLOBAL
innodb_compression_failure_threshold_pct整数GLOBAL
innodb_compression_level整数GLOBAL
innodb_compression_pad_pct_max整数GLOBAL
innodb_concurrency_tickets整数GLOBAL
innodb_ddl_log_crash_reset_debug布尔GLOBAL
innodb_deadlock_detect布尔GLOBAL
innodb_default_row_format枚举GLOBAL
innodb_disable_sort_file_cache布尔GLOBAL
innodb_fast_shutdown整数GLOBAL
innodb_fil_make_page_dirty_debug整数GLOBAL
innodb_file_per_table布尔GLOBAL
innodb_fill_factor整数GLOBAL
innodb_flush_log_at_timeout整数GLOBAL
innodb_flush_log_at_trx_commit枚举GLOBAL
innodb_flush_neighbors枚举GLOBAL
innodb_flush_sync布尔GLOBAL
innodb_flushing_avg_loops整数GLOBAL
innodb_ft_aux_table字符串GLOBAL
innodb_ft_enable_diag_print布尔GLOBAL
innodb_ft_enable_stopword布尔GLOBAL
innodb_ft_num_word_optimize整数GLOBAL
innodb_ft_result_cache_limit整数GLOBAL
innodb_ft_server_stopword_table字符串GLOBAL
innodb_ft_user_stopword_table字符串GLOBAL|会话
innodb_io_capacity整数GLOBAL
innodb_io_capacity_max整数GLOBAL
innodb_limit_optimistic_insert_debug整数GLOBAL
innodb_lock_wait_timeout整数GLOBAL|会话
innodb_log_buffer_size整数GLOBAL
innodb_log_checksums布尔GLOBAL
innodb_log_compressed_pages布尔GLOBAL
innodb_log_spin_cpu_abs_lwm整数GLOBAL
innodb_log_spin_cpu_pct_hwm整数GLOBAL
innodb_log_wait_for_flush_spin_hwm整数GLOBAL
innodb_log_write_ahead_size整数GLOBAL
innodb_lru_scan_depth整数GLOBAL
innodb_max_dirty_pages_pct数字GLOBAL
innodb_max_dirty_pages_pct_lwm数字GLOBAL
innodb_max_purge_lag整数GLOBAL
innodb_max_purge_lag_delay整数GLOBAL
innodb_max_undo_log_size整数GLOBAL
innodb_merge_threshold_set_all_debug整数GLOBAL
innodb_monitor_disable字符串GLOBAL
innodb_monitor_enable字符串GLOBAL
innodb_monitor_reset字符串GLOBAL
innodb_monitor_reset_all字符串GLOBAL
innodb_old_blocks_pct整数GLOBAL
innodb_old_blocks_time整数GLOBAL
innodb_online_alter_log_max_size整数GLOBAL
innodb_optimize_fulltext_only布尔GLOBAL
innodb_print_all_deadlocks布尔GLOBAL
innodb_print_ddl_logs布尔GLOBAL
innodb_purge_batch_size整数GLOBAL
innodb_purge_rseg_truncate_frequency整数GLOBAL
innodb_random_read_ahead布尔GLOBAL
innodb_read_ahead_threshold整数GLOBAL
innodb_redo_log_encrypt布尔GLOBAL
innodb_replication_delay整数GLOBAL
innodb_rollback_segments整数GLOBAL
innodb_saved_page_number_debug整数GLOBAL
innodb_spin_wait_delay整数GLOBAL
innodb_stats_auto_recalc布尔GLOBAL
innodb_stats_include_delete_marked布尔GLOBAL
innodb_stats_method枚举GLOBAL
innodb_stats_on_metadata布尔GLOBAL
innodb_stats_persistent布尔GLOBAL
innodb_stats_persistent_sample_pages整数GLOBAL
innodb_stats_transient_sample_pages整数GLOBAL
innodb_status_output布尔GLOBAL
innodb_status_output_locks布尔GLOBAL
innodb_strict_mode布尔GLOBAL|会话
innodb_sync_spin_loops整数GLOBAL
innodb_table_locks布尔GLOBAL|会话
innodb_thread_concurrency整数GLOBAL
innodb_thread_sleep_delay整数GLOBAL
innodb_tmpdir目录名GLOBAL|会话
innodb_trx_purge_view_update_only_debug布尔GLOBAL
innodb_trx_rseg_n_slots_debug整数GLOBAL
innodb_undo_log_encrypt布尔GLOBAL
innodb_undo_log_truncate布尔GLOBAL
innodb_undo_logs整数GLOBAL
innodb_undo_tablespaces整数GLOBAL
insert_id整数SESSION
interactive_timeout整数GLOBAL|会话
internal_tmp_disk_storage_engine枚举GLOBAL
internal_tmp_mem_storage_engine枚举GLOBAL|会话
join_buffer_size整数GLOBAL|会话
keep_files_on_create布尔GLOBAL|会话
key_buffer_size整数GLOBAL
key_cache_age_threshold整数GLOBAL
key_cache_block_size整数GLOBAL
key_cache_division_limit整数GLOBAL
keyring_aws_cmk_id字符串GLOBAL
keyring_aws_region枚举GLOBAL
keyring_encrypted_file_data文件名GLOBAL
keyring_encrypted_file_passwordGLOBAL
keyring_file_data文件名GLOBAL
keyring_okv_conf_dir目录名GLOBAL
keyring_operations布尔GLOBAL
last_insert_id整数SESSION
lc_messages字符串GLOBAL|会话
lc_time_names字符串GLOBAL|会话
local_infile布尔GLOBAL
lock_wait_timeout整数GLOBAL|会话
log_bin_trust_function_creators布尔GLOBAL
log_builtin_as_identified_by_password布尔GLOBAL
log_error_filter_rules字符串GLOBAL
log_error_services字符串GLOBAL
log_error_suppression_list字符串GLOBAL
log_error_verbosity整数GLOBAL
log_output配置GLOBAL
log_queries_not_using_indexes布尔GLOBAL
log_slow_admin_statements布尔GLOBAL
log_slow_slave_statements布尔GLOBAL
log_statements_unsafe_for_binlog布尔GLOBAL
log_syslog布尔GLOBAL
log_syslog_facility字符串GLOBAL
log_syslog_include_pid布尔GLOBAL
log_syslog_tag字符串GLOBAL
log_throttle_queries_not_using_indexes整数GLOBAL
log_timestamps枚举GLOBAL
log_warnings整数GLOBAL
long_query_time数字GLOBAL|会话
low_priority_updates布尔GLOBAL|会话
mandatory_roles字符串GLOBAL
master_info_repository字符串GLOBAL
master_verify_checksum布尔GLOBAL
max_allowed_packet整数GLOBAL|会话
max_binlog_cache_size整数GLOBAL
max_binlog_size整数GLOBAL
max_binlog_stmt_cache_size整数GLOBAL
max_connect_errors整数GLOBAL
max_connections整数GLOBAL
max_delayed_threads整数GLOBAL|会话
max_error_count整数GLOBAL|会话
max_execution_time整数GLOBAL|会话
max_heap_table_size整数GLOBAL|会话
max_insert_delayed_threads整数GLOBAL|会话
max_join_size整数GLOBAL|会话
max_length_for_sort_data整数GLOBAL|会话
max_points_in_geometry整数GLOBAL|会话
max_prepared_stmt_count整数GLOBAL
max_relay_log_size整数GLOBAL
max_seeks_for_key整数GLOBAL|会话
max_sort_length整数GLOBAL|会话
max_sp_recursion_depth整数GLOBAL|会话
max_tmp_tables整数GLOBAL|会话
max_user_connections整数GLOBAL|会话
max_write_lock_count整数GLOBAL
min_examined_row_limit整数GLOBAL|会话
multi_range_count整数GLOBAL|会话
myisam_data_pointer_size整数GLOBAL
myisam_max_sort_file_size整数GLOBAL
myisam_repair_threads整数GLOBAL|会话
myisam_sort_buffer_size整数GLOBAL|会话
myisam_stats_method枚举GLOBAL|会话
myisam_use_mmap布尔GLOBAL
mysql_firewall_mode布尔GLOBAL
mysql_firewall_trace布尔GLOBAL
mysql_native_password_proxy_users布尔GLOBAL
mysqlx-connect-timeout整数GLOBAL
mysqlx_connect_timeout整数GLOBAL
mysqlx_document_id_unique_prefix整数GLOBAL
mysqlx-idle-worker-thread-timeout整数GLOBAL
mysqlx_idle_worker_thread_timeout整数GLOBAL
mysqlx-interactive-timeout整数GLOBAL
mysqlx_interactive_timeout整数GLOBAL
mysqlx-max-allowed-packet整数GLOBAL
mysqlx_max_allowed_packet整数GLOBAL
mysqlx-max-connections整数GLOBAL
mysqlx_max_connections整数GLOBAL
mysqlx-min-worker-threads整数GLOBAL
mysqlx_min_worker_threads整数GLOBAL
mysqlx-read-timeout整数SESSION
mysqlx_read_timeout整数SESSION
mysqlx_wait_timeout整数SESSION
mysqlx_wait_timeout整数SESSION
mysqlx_write_timeout整数SESSION
mysqlx_write_timeout整数SESSION
ndb_blob_write_batch_bytes整数GLOBAL|会话
ndb_deferred_constraints整数GLOBAL|会话
ndb_deferred_constraints整数GLOBAL|会话
ndb_distribution枚举GLOBAL
ndb_distribution={KEYHASH|LINHASH}枚举GLOBAL
ndb_eventbuffer_free_percent整数GLOBAL
ndb_eventbuffer_max_alloc整数GLOBAL
ndb_force_send布尔GLOBAL|会话
ndb_index_stat_enable布尔GLOBAL|会话
ndb_index_stat_option字符串GLOBAL|会话
ndb_join_pushdown布尔GLOBAL|会话
ndb_log_binlog_index布尔GLOBAL
ndb_log_empty_epochs布尔GLOBAL
ndb_log_empty_update布尔GLOBAL
ndb_log_updated_only布尔GLOBAL
ndb_optimization_delay整数GLOBAL
ndb_recv_thread_cpu_mask位图GLOBAL
ndb_report_thresh_binlog_epoch_slip整数GLOBAL
ndb_report_thresh_binlog_mem_usage整数GLOBAL
ndb_show_foreign_key_mock_tables布尔GLOBAL
ndb_table_no_logging布尔SESSION
ndb_use_transactions布尔GLOBAL|会话
ndbinfo_max_rows整数GLOBAL|会话
ndbinfo_show_hidden布尔GLOBAL|会话
net_buffer_length整数GLOBAL|会话
net_read_timeout整数GLOBAL|会话
net_retry_count整数GLOBAL|会话
net_write_timeout整数GLOBAL|会话
new布尔GLOBAL|会话
offline_mode布尔GLOBAL
old_alter_table布尔GLOBAL|会话
old_passwords枚举GLOBAL|会话
optimizer_prune_level布尔GLOBAL|会话
optimizer_search_depth整数GLOBAL|会话
optimizer_switch配置GLOBAL|会话
optimizer_trace字符串GLOBAL|会话
optimizer_trace_features字符串GLOBAL|会话
optimizer_trace_limit整数GLOBAL|会话
optimizer_trace_max_mem_size整数GLOBAL|会话
optimizer_trace_offset整数GLOBAL|会话
original_commit_timestamp数字SESSION
parser_max_mem_size整数GLOBAL|会话
password_history整数GLOBAL
password_require_current布尔GLOBAL
password_reuse_interval整数GLOBAL
performance_schema_max_digest_sample_age整数GLOBAL
preload_buffer_size整数GLOBAL|会话
profiling布尔GLOBAL|会话
profiling_history_size整数GLOBAL|会话
pseudo_slave_mode整数SESSION
pseudo_thread_id整数SESSION
query_alloc_block_size整数GLOBAL|会话
query_cache_limit整数GLOBAL
query_cache_min_res_unit整数GLOBAL
query_cache_size整数GLOBAL
query_cache_type枚举GLOBAL|会话
query_cache_wlock_invalidate布尔GLOBAL|会话
query_prealloc_size整数GLOBAL|会话
rand_seed1整数SESSION
rand_seed2整数SESSION
range_alloc_block_size整数GLOBAL|会话
range_optimizer_max_mem_size整数GLOBAL|会话
rbr_exec_mode枚举GLOBAL|会话
read_buffer_size整数GLOBAL|会话
read_only布尔GLOBAL
read_rnd_buffer_size整数GLOBAL|会话
regexp_stack_limit整数GLOBAL
regexp_time_limit整数GLOBAL
relay_log_info_repository字符串GLOBAL
relay_log_purge布尔GLOBAL
require_secure_transport布尔GLOBAL
resultset_metadata枚举SESSION
rewriter_enabled布尔GLOBAL
rewriter_verbose整数GLOBAL
rpl_read_size整数GLOBAL
rpl_semi_sync_master_enabled布尔GLOBAL
rpl_semi_sync_master_timeout整数GLOBAL
rpl_semi_sync_master_trace_level整数GLOBAL
rpl_semi_sync_master_wait_for_slave_count整数GLOBAL
rpl_semi_sync_master_wait_no_slave布尔GLOBAL
rpl_semi_sync_master_wait_point枚举GLOBAL
rpl_semi_sync_slave_enabled布尔GLOBAL
rpl_semi_sync_slave_trace_level整数GLOBAL
rpl_stop_slave_timeout整数GLOBAL
schema_definition_cache整数GLOBAL
secure_auth布尔GLOBAL
server_id整数GLOBAL
session_track_gtids枚举GLOBAL|会话
session_track_schema布尔GLOBAL|会话
session_track_state_change布尔GLOBAL|会话
session_track_system_variables字符串GLOBAL|会话
sha256_password_proxy_users布尔GLOBAL
show_compatibility_56布尔GLOBAL
show_create_table_verbosityGLOBAL|会话
show_old_temporals布尔GLOBAL|会话
slave_allow_batching布尔GLOBAL
slave_checkpoint_group=#整数GLOBAL
slave_checkpoint_period=#整数GLOBAL
slave_compressed_protocol布尔GLOBAL
slave_exec_mode枚举GLOBAL
slave_max_allowed_packet整数GLOBAL
slave_net_timeout整数GLOBAL
slave_parallel_type枚举GLOBAL
slave_parallel_workers整数GLOBAL
slave_pending_jobs_size_max整数GLOBAL
slave_preserve_commit_order布尔GLOBAL
slave_rows_search_algorithms=list配置GLOBAL
slave_sql_verify_checksum布尔GLOBAL
slave_transaction_retries整数GLOBAL
slow_launch_time整数GLOBAL
slow_query_log布尔GLOBAL
slow_query_log_file文件名GLOBAL
sort_buffer_size整数GLOBAL|会话
sql_auto_is_null布尔GLOBAL|会话
sql_big_selects布尔GLOBAL|会话
sql_buffer_result布尔GLOBAL|会话
sql_log_bin布尔SESSION
sql_log_off布尔GLOBAL|会话
sql_mode配置GLOBAL|会话
sql_notes布尔GLOBAL|会话
sql_quote_show_create布尔GLOBAL|会话
sql_require_primary_key布尔GLOBAL|会话
sql_safe_updates布尔GLOBAL|会话
sql_select_limit整数GLOBAL|会话
sql_slave_skip_counter整数GLOBAL
sql_warnings布尔GLOBAL|会话
ssl_fips_mode枚举GLOBAL
stored_program_cache整数GLOBAL
stored_program_definition_cache整数GLOBAL
super_read_only布尔GLOBAL
sync_binlog整数GLOBAL
sync_master_info整数GLOBAL
sync_relay_log整数GLOBAL
sync_relay_log_info整数GLOBAL
syseventlog.facility字符串GLOBAL
syseventlog.include_pid布尔GLOBAL
syseventlog.tag字符串GLOBAL
table_definition_cache整数GLOBAL
table_open_cache整数GLOBAL
tablespace_definition_cache整数GLOBAL
temptable_max_ram整数GLOBAL
thread_cache_size整数GLOBAL
thread_pool_high_priority_connection整数GLOBAL|会话
thread_pool_max_unused_threads整数GLOBAL
thread_pool_prio_kickup_timer整数GLOBAL|会话
thread_pool_stall_limit整数GLOBAL
time_zone字符串GLOBAL|会话
timestamp数字SESSION
tmp_table_size整数GLOBAL|会话
transaction_alloc_block_size整数GLOBAL|会话
transaction_allow_batching布尔SESSION
transaction_isolation枚举GLOBAL|会话
transaction_prealloc_size整数GLOBAL|会话
transaction_read_only布尔GLOBAL|会话
transaction_write_set_extraction枚举GLOBAL|会话
tx_isolation枚举GLOBAL|会话
tx_read_only布尔GLOBAL|会话
unique_checks布尔GLOBAL|会话
updatable_views_with_limit布尔GLOBAL|会话
use_secondary_engine枚举SESSION
validate_password_check_user_name布尔GLOBAL
validate_password_dictionary_file文件名GLOBAL
validate_password_length整数GLOBAL
validate_password_mixed_case_count整数GLOBAL
validate_password_number_count整数GLOBAL
validate_password_policy枚举GLOBAL
validate_password_special_char_count整数GLOBAL
validate_password.check_user_name布尔GLOBAL
validate_password.dictionary_file文件名GLOBAL
validate_password.length整数GLOBAL
validate_password.mixed_case_count整数GLOBAL
validate_password.number_count整数GLOBAL
validate_password.policy枚举GLOBAL
validate_password.special_char_count整数GLOBAL
version_tokens_session字符串GLOBAL|会话
wait_timeout整数GLOBAL|会话
windowing_use_high_precision布尔GLOBAL|会话

5.1.9服务器状态变量

MySQL服务器维护许多状态变量提供有关运行信息。你可以查看这些变量和它们的值使用SHOW [GLOBAL | SESSION] STATUS声明(见第13.7.6.35,“显示状态语法”)。在可选GLOBAL关键词总量的值在所有连接,并会话显示当前连接的价值

mysql> SHOW GLOBAL STATUS;
+-----------------------------------+------------+
| Variable_name                     | Value      |
+-----------------------------------+------------+
| Aborted_clients                   | 0          |
| Aborted_connects                  | 0          |
| Bytes_received                    | 155372598  |
| Bytes_sent                        | 1176560426 |
...
| Connections                       | 30023      |
| Created_tmp_disk_tables           | 0          |
| Created_tmp_files                 | 3          |
| Created_tmp_tables                | 2          |
...
| Threads_created                   | 217        |
| Threads_running                   | 88         |
| Uptime                            | 1389872    |
+-----------------------------------+------------+

几个变量提供报表数。确定执行的语句数,利用这些关系:

  SUM(Com_xxx)
= Questions + statements executed within stored programs
= Queries

许多状态变量设置为0的FLUSH STATUS声明

本节提供了一个描述每个状态变量。一个状态变量的总结,看第5.1.5、“服务器状态变量引用”

状态变量具有以下含义。

5.1.10服务器SQL模式

MySQL服务器可以在不同的SQL模式操作,并能应用这些模式的不同,不同的客户,根据不同的价值sql_mode系统变量。数据库管理员可以设置全局SQL模式相匹配的网站服务器的操作要求,每个应用程序可以设置会话的SQL模式自身的要求。

的方式影响MySQL支持SQL语法和数据验证检查执行。这使得它更容易在不同的环境中使用MySQL,使用MySQL和其他数据库服务器。

问题的答案常常问MySQL服务器的SQL模式,看第A.3,MySQL 8常见问题:服务器的SQL模式”

工作时InnoDB桌子,consider also theinnodb_strict_mode系统变量。一个可能的错误InnoDB

设置SQL模式

在MySQL 8中默认的SQL模式包括这些模式:ONLY_FULL_GROUP_BYSTRICT_TRANS_TABLESNO_ZERO_IN_DATENO_ZERO_DATEERROR_FOR_DIVISION_BY_ZERO,和NO_ENGINE_SUBSTITUTION

设置SQL模式在服务器启动时,使用--sql-mode="modes"在命令行选项,或sql-mode="modes"在一个如选项文件my.cnf(UNIX操作系统)或my.ini(Windows)modes是一个不同的模式,以逗号分隔。清除SQL模式明确,将它设置为空字符串的使用--sql-mode=""在命令行上,或sql-mode=""在一个文件的选择

笔记

MySQL的安装程序会在安装过程中配置SQL模式。

如果SQL模式不同于默认的或与你所期望的,检查在一个选项文件,服务器在启动时读取设置。

在运行时更改SQL模式,设置全局或会话sql_mode使用系统变量SET声明:

SET GLOBAL sql_mode = 'modes';SET SESSION sql_mode = 'modes&#39;;

设置GLOBAL可变的要求SYSTEM_VARIABLES_ADMINSUPER特权和影响所有客户端连接从那次手术。设置会话变量只影响当前客户。每个客户端可以改变其会话sql_mode在任何时间价值

确定当前全局或会话sql_mode设置,选择它的价值:

选择@ @ @ @session.sql_mode sql_mode;选择全球;
重要

SQL模式和用户自定义分区。在创建和插入数据到表分区可以使这些表的行为改变服务器的SQL模式的重大变化,并可能导致数据丢失或损坏。我们强烈建议您不要更改SQL模式一旦创建使用自定义分区表。

当复制分区表,不同的SQL模式对主人和奴隶也能导致问题。为达到最佳效果,你应该总是使用相同的SQL Server模式对主人和奴隶。

有关更多信息,参见22.6节,“分区”的约束和限制

最重要的SQL模式

最重要的sql_mode这些值可能是:

  • ANSI

    更符合标准的SQL语法和行为模式的变化。它是一种特殊的组合模式列在本节结束

  • STRICT_TRANS_TABLES

    如果无法将值插入到一个给定的事务表,终止语句。对于非事务表,如果值出现在一行或多行语句声明的第一行终止语句。给出更多的细节在本节稍后。

  • TRADITIONAL

    让MySQL像传统SQL数据库系统。一个简单的这种模式的描述给一个错误而不是警告当插入不正确的值的列。它是一种特殊的组合模式列在本节结束

    笔记

    TRADITIONAL模式下,一个INSERTUPDATE当发生错误时。如果您使用的是非事务性存储引擎,这可能不是你想要的因为数据的错误之前不能回滚的变化,导致部分完成的更新

本手册是指当严格模式,这意味着与一个或两个模式STRICT_TRANS_TABLESSTRICT_ALL_TABLES启用.

SQL模式的完整列表

下面的列表描述了所有支持的SQL模式:

  • ALLOW_INVALID_DATES

    不执行全面检查日期。只检查,每月在范围从1到12天的范围是从1到31。这可以为Web应用程序获得年、月、日是有用的,在三个不同的领域和商店正是用户插入的,没有日期的确认。这种模式适用于DATEDATETIME专栏它不适用TIMESTAMP列,总是需要一个有效的日期。

    ALLOW_INVALID_DATES启用,服务器要求,月和日的值是合法的,而不仅仅是在范围1到12和1到31,分别。严格的模式,无效的日期如“2004-04-31”转换为'0000-00-00'生成一个警告。严格的模式下,无效的日期生成错误。允许这样的日期,使ALLOW_INVALID_DATES

  • ANSI_QUOTES

    治疗"作为标识符引用字符(如`引号字符)而不是作为一个字符串的引号字符。你仍然可以使用`引用标识符的这种模式。与ANSI_QUOTES启用后,您不能使用双引号引用字符串因为他们解释为标识符。

  • ERROR_FOR_DIVISION_BY_ZERO

    这个ERROR_FOR_DIVISION_BY_ZERO模式影响的零处理部门,包括MOD(N,0)。数据更改操作(INSERTUPDATE),其效果也取决于严格的SQL模式启用。

    • 如果这个模式不启用,由零插入分NULL有没有和预警

    • 如果这个模式被启用,通过零插入分NULL你在和预警

    • 如果这个模式和严格模式已启用,被零除产生一个错误,除非IGNORE也给出了。为将忽略UPDATE IGNORE零插入部,无效的你在和预警

    SELECT,通过零收益分无效的。有可能ERROR_FOR_DIVISION_BY_ZERO原因是生产以及警告,无论是否启用严格模式。

    ERROR_FOR_DIVISION_BY_ZERO不推荐使用ERROR_FOR_DIVISION_BY_ZERO不严格的模式,但应采用严格的方式连接和默认启用。警告如果发生ERROR_FOR_DIVISION_BY_ZERO启用严格模式也没有使反之亦然。

    因为ERROR_FOR_DIVISION_BY_ZERO不推荐使用,它将作为一个独立的模式及其影响纳入严格的SQL模式的影响在未来的MySQL版本中删除。

  • HIGH_NOT_PRECEDENCE

    的优先NOT操作是这样的,表情如不是在B和C解析为NOT (a BETWEEN b AND c)。在一些老版本的MySQL,表达解析(不是)之间的B和C。旧的高优先级的行为可以通过使HIGH_NOT_PRECEDENCESQL模式

    MySQL的&#62;SET sql_mode = '';MySQL的&#62;SELECT NOT 1 BETWEEN -5 AND 5;-> 0mysql>SET sql_mode = 'HIGH_NOT_PRECEDENCE';MySQL的&#62;SELECT NOT 1 BETWEEN -5 AND 5;&#62; 1
  • IGNORE_SPACE

    允许一个函数名和空间之间(人物这使得内置函数的名称是保留字。作为一个结果,标识符,函数名称相同的必须引述了9.2节,“架构对象名称”。例如,因为有一个COUNT()功能,使用计数如下面的语句表名导致错误:

    mysql> CREATE TABLE count (i INT);
    ERROR 1064 (42000): You have an error in your SQL syntax
    

    表名应报:

    mysql> CREATE TABLE `count` (i INT);
    Query OK, 0 rows affected (0.00 sec)
    

    这个IGNORE_SPACESQL模式适用于内置功能,没有用户定义的函数或存储功能。这一个UDF或存储函数名后总是允许有空格,不管IGNORE_SPACE启用

    进一步的探讨IGNORE_SPACE,看到9.2.4节,“函数名称解析和解决”

  • NO_AUTO_VALUE_ON_ZERO

    NO_AUTO_VALUE_ON_ZERO影响处理汽车专栏通常情况下,你的下一个序列号生成的列装NULL为它NO_AUTO_VALUE_ON_ZERO可抑制这种行为所以,只有NULL生成下一个序列号

    这模式可以是完美的0被存储在一个表中的汽车专栏(存储0不推荐的做法,顺便。)例如,如果你把桌子mysqldump然后加载,MySQL通常产生新的序列号,当它遇到0值,导致在一个表的不同从一个被抛弃了的内容。有可能NO_AUTO_VALUE_ON_ZERO在重载转储文件解决了这个问题。因为这个原因,mysqldump自动包括在其输出语句,使NO_AUTO_VALUE_ON_ZERO

  • NO_BACKSLASH_ESCAPES

    禁止使用反斜杠字符(\)在字符串转义字符。这种模式下,反斜杠变成像其他普通字符。

  • NO_DIR_IN_CREATE

    创建一个表时,忽略所有INDEX DIRECTORY数据目录指令。这个选项是有用的,我们从复制服务器。

  • NO_ENGINE_SUBSTITUTION

    控制自动替换默认的存储引擎,当这样一个语句CREATE TABLEALTER TABLE指定的存储引擎,禁用或不编制。

    默认情况下,NO_ENGINE_SUBSTITUTION启用

    因为存储引擎可插拔时,可用发动机相同的方式处理:

    NO_ENGINE_SUBSTITUTION残疾人,为CREATE TABLE使用默认的搜索引擎,如果所需的发动机不可用时警告。为ALTER TABLE,发生了警告和桌子是不会改变的。

    NO_ENGINE_SUBSTITUTION启用后,发生了一个错误,该表不能创建或修改如果需要的发动机是不可用的。

  • NO_UNSIGNED_SUBTRACTION

    之间的整数值相减,其中一个是类型UNSIGNED,默认情况下产生一个无符号的结果。如果结果会是负面的,一个错误的结果:

    MySQL的&#62;SET sql_mode = '';查询行,0行受影响(0秒)MySQL &#62;SELECT CAST(0 AS UNSIGNED) - 1;错误1690(22003):bigint无符号值超出范围”(铸造(0为无符号)- 1)”

    如果NO_UNSIGNED_SUBTRACTIONSQL模式被启用,结果为阴性:

    MySQL的&#62;SET sql_mode = 'NO_UNSIGNED_SUBTRACTION';MySQL的&#62;SELECT CAST(0 AS UNSIGNED) - 1;------------------------- |铸造(0为无符号)-1 | ------------------------- | -1 | -------------------------

    如果这样操作的结果是用来更新UNSIGNED整数列,结果是夹到的列类型的最大值,或夹在0如果NO_UNSIGNED_SUBTRACTION启用。严格的SQL模式启用时,发生了一个错误,列不变。

    什么时候NO_UNSIGNED_SUBTRACTION启用,减法的结果签署,即使任何操作数是无符号。例如,比较列的类型c2T1与柱c2T2

    mysql> SET sql_mode='';
    mysql> CREATE TABLE test (c1 BIGINT UNSIGNED NOT NULL);
    mysql> CREATE TABLE t1 SELECT c1 - 1 AS c2 FROM test;
    mysql> DESCRIBE t1;
    +-------+---------------------+------+-----+---------+-------+
    | Field | Type                | Null | Key | Default | Extra |
    +-------+---------------------+------+-----+---------+-------+
    | c2    | bigint(21) unsigned | NO   |     | 0       |       |
    +-------+---------------------+------+-----+---------+-------+
    
    mysql> SET sql_mode='NO_UNSIGNED_SUBTRACTION';
    mysql> CREATE TABLE t2 SELECT c1 - 1 AS c2 FROM test;
    mysql> DESCRIBE t2;
    +-------+------------+------+-----+---------+-------+
    | Field | Type       | Null | Key | Default | Extra |
    +-------+------------+------+-----+---------+-------+
    | c2    | bigint(21) | NO   |     | 0       |       |
    +-------+------------+------+-----+---------+-------+
    

    这意味着,BIGINT UNSIGNED在任何情况下不可用100 %。看到12.10节,“铸函数和操作符”

  • NO_ZERO_DATE

    这个NO_ZERO_DATE模式影响服务器是否允许“0000-00-00”作为一种有效的日期。其效果还取决于严格的SQL模式启用。

    • 如果这个模式不启用,'0000-00-00'允许插入不产生警告

    • 如果这个模式启用,'0000-00-00'是允许的,将产生一个警告。

    • 如果这个模式和严格模式已启用,'0000-00-00'是不允许的,将产生一个错误,除非忽略也给出了。为INSERT IGNORE更新忽略'0000-00-00'是允许的,将产生一个警告。

    NO_ZERO_DATE不推荐使用NO_ZERO_DATE不严格的模式,但应采用严格的方式连接和默认启用。警告如果发生NO_ZERO_DATE启用严格模式也没有使反之亦然。

    因为NO_ZERO_DATE不推荐使用,它将作为一个独立的模式及其影响纳入严格的SQL模式的影响在未来的MySQL版本中删除。

  • NO_ZERO_IN_DATE

    这个NO_ZERO_IN_DATE模式影响服务器是否允许的日期,一年是非零,但一个月或一天的部分是0。(这种模式影响的日期如“2010-00-01”'2010-01-00',但不“0000-00-00”。控制服务器是否允许'0000-00-00',使用NO_ZERO_DATE模式的影响。)NO_ZERO_IN_DATE也取决于是否严格的SQL模式启用。

    • 如果这个模式不启用,零配件日期允许插入不产生警告。

    • 如果这个模式被启用,零配件日期插入'0000-00-00'并生产Warning。

    • 如果这个模式和严格模式的启用,零配件的日期是不允许的,将产生一个错误,除非IGNORE也给出了。为将忽略UPDATE IGNORE零配件,日期是插入“0000-00-00”产生一个警告

    NO_ZERO_IN_DATE不推荐使用NO_ZERO_IN_DATE不严格的模式,但应采用严格的方式连接和默认启用。警告如果发生NO_ZERO_IN_DATE启用严格模式也没有使反之亦然。

    因为NO_ZERO_IN_DATE不推荐使用,它将作为一个独立的模式及其影响纳入严格的SQL模式的影响在未来的MySQL版本中删除。

  • ONLY_FULL_GROUP_BY

    拒绝查询的选择列表,HAVING条件,或顺序列表是指非汇总,既不指定列中的GROUP BY条款和功能取决于(唯一确定的)专栏

    在标准的SQL允许引用一个mysql扩展HAVING在选择列表中的别名表达式子句。这个条款可以参考别名不管ONLY_FULL_GROUP_BY启用

    额外的讨论和例子,看第12.19.3,MySQL处理组”

  • PAD_CHAR_TO_FULL_LENGTH

    默认情况下,尾随空格装饰CHARC柱过程中检索值。如果PAD_CHAR_TO_FULL_LENGTH启用,微调不会发生和检索CHAR值填充到它们的全长。这种模式不适用于VARCHAR列的尾随空格被检索

    笔记

    世纪之mysql 8.0.13,PAD_CHAR_TO_FULL_LENGTH不推荐使用。它将在未来版本的MySQL移除。

    MySQL的&#62;CREATE TABLE t1 (c1 CHAR(10));查询行,0行受影响(0.37秒)MySQL &#62;INSERT INTO t1 (c1) VALUES('xy');查询行,1行的影响(0.01秒)MySQL &#62;SET sql_mode = '';查询行,0行受影响(0秒)MySQL &#62;SELECT c1, CHAR_LENGTH(c1) FROM t1;------ ----------------- | C1 | char_length(C1)| ------ ----------------- | XY | 2 | ------ ----------------- 1行集(0秒)MySQL &#62;SET sql_mode = 'PAD_CHAR_TO_FULL_LENGTH';查询行,0行受影响(0秒)MySQL &#62;SELECT c1, CHAR_LENGTH(c1) FROM t1;------------ ----------------- | C1 | char_length(C1)| ------------ ----------------- | XY | 10 | ------------ ----------------- 1行集(0秒)
  • PIPES_AS_CONCAT

    治疗||作为一个字符串串联运算符(同CONCAT())而不是作为一个同义词OR

  • REAL_AS_FLOAT

    治疗REAL作为一个同义词FLOAT。默认情况下,MySQL将REAL作为一个同义词DOUBLE

  • STRICT_ALL_TABLES

    使所有的存储引擎严格的SQL模式。无效的数据值被拒绝。详情见严格的SQL模式

  • STRICT_TRANS_TABLES

    使事务性存储引擎严格的SQL模式,当可能的非事务性存储引擎。详情见严格的SQL模式

  • TIME_TRUNCATE_FRACTIONAL

    控制是否舍入或截断时插入TIMEDATE,或TIMESTAMP值与小数秒到具有相同类型但减少小数位数列。的行为是使用舍入。如果这个模式被激活,发生截断代替。下面的语句序列说明了:

    CREATE TABLE t (id INT, tval TIME(1));SET sql_mode='';INSERT INTO t (id, tval) VALUES(1, 1.55);SET sql_mode='TIME_TRUNCATE_FRACTIONAL';INSERT INTO t (id, tval) VALUES(2, 1.55);

    结果表的内容是这样的,其中第一个值被舍入和截断二:

    mysql> SELECT id, tval FROM t ORDER BY id;
    +------+------------+
    | id   | tval       |
    +------+------------+
    |    1 | 00:00:01.6 |
    |    2 | 00:00:01.5 |
    +------+------------+
    

结合SQL模式

下列特殊模式提供从前面的列表模式值的组合速记。

严格的SQL模式

严格模式控制MySQL如何处理无效或丢失的数据更改语句如值INSERTUPDATE。可以将一个值无效的几个原因。例如,它可能该列的数据类型错误,或者它可能会超出范围。一个价值缺失时,可以插入新的一行不包含非价值—无效的柱,没有显式的DEFAULT在定义条款。(一无效的柱,NULL如果该值是失踪的插入。)严格的模式也影响了DDL语句,如CREATE TABLE

如果严格模式是无效的,MySQL插入调整无效或丢失的价值观产生的警告(见第13.7.6.40,“显示警告语法”)。在严格的模式,你可以通过使用产生这种行为INSERT IGNOREUPDATE IGNORE

对于这样的语句SELECT不更改数据,无效值产生严格模式的一个警告,而不是错误。

严格模式产生一个错误,试图创建一个密钥,密钥长度超过最大。当没有启用严格模式,这样的结果是一个警告和关键截断的最大密钥长度。

严格的模式不影响是否外键约束检查。foreign_key_checks可用于。(见第5.1.7,服务器“系统变量”。)

严格的SQL模式有效如果STRICT_ALL_TABLESSTRICT_TRANS_TABLES启用,尽管这些模式的影响有所不同:

  • 事务表,错误发生在数据无效或缺失值变动表时STRICT_ALL_TABLESSTRICT_TRANS_TABLES启用。声明中止和回滚。

  • 对于非事务表,如果坏值发生在第一行被插入或更新的行为或方式相同:声明中止和桌子保持不变。如果表中插入或修改多行和坏值发生在第二或晚行,结果取决于严格模式已启用:

    • STRICT_ALL_TABLES,MySQL返回一个错误而忽略其余的行。然而,由于早期行已插入或更新,其结果是一个局部更新。为了避免这种情况,使用单排报表,可以在不改变表被中止。

    • STRICT_TRANS_TABLES将一个无效的值,MySQL为柱最近的有效值将调整值。如果一个值是缺失的,MySQL插入的列的数据类型的隐式的默认值。在任何情况下,MySQL会生成一个警告而不是错误并继续处理语句。隐式的默认了11.7节,“数据类型的默认值”

严格的模式影响处理除数为零,零和零的日期,日期如下:

  • 严格的模式影响零处理部门,包括MOD(N,0)

    数据更改操作(INSERTUPDATE):

    • 如果没有启用严格模式,零插入分NULL有没有和预警

    • 如果严格模式已启用,被零除产生一个错误,除非IGNORE也给出了。为将忽略UPDATE IGNORE零插入部,无效的你在和预警

    SELECT,通过零收益分无效的。启用严格模式的原因是生产以及警告。

  • 严格的方式影响服务器是否允许'0000-00-00'作为一种有效的日期:

    • 如果没有启用严格模式,'0000-00-00'允许插入不产生警告

    • 如果启用严格模式,'0000-00-00'是不允许的,将产生一个错误,除非忽略也给出了。为INSERT IGNORE更新忽略'0000-00-00'是允许的,将产生一个警告。

  • 严格的方式影响服务器是否允许的日期,一年是非零,但一个月或一天的部分是0(日期等'2010-00-01'“2010-01-00”):

    • 如果没有启用严格模式,零配件日期允许插入不产生警告。

    • 如果启用严格模式,零配件的日期是不允许的,将产生一个错误,除非IGNORE也给出了。为将忽略UPDATE IGNORE零配件,日期是插入“0000-00-00”(这被认为是有效的IGNOREand生成Warning .

为更多的信息关于严格模式相对于IGNORE,看到在忽略关键词和严格的SQL模式比较

严格的模式影响处理除数为零,零的日期,并会同日期零点ERROR_FOR_DIVISION_BY_ZERONO_ZERO_DATE,和NO_ZERO_IN_DATE模式

在忽略关键词和严格的SQL模式比较

本节对语句的执行效果IGNORE关键词(即降级错误警告)和严格的SQL模式(升级警告错误)。它所描述的陈述他们的影响,而错误适用于。

下表列出了陈述行为总结比较时,默认是产生错误与警告。一个例子,默认是产生一个错误插入NULL为一个不为空专栏一个例子,默认是产生一个警告是插入一个值的数据类型不成一列(如插入字符串'abc'成整数列)

操作模式当声明默认是错误的当默认的警告声明
没有IGNORE或严格的SQL模式误差警告
IGNORE警告警告(同无IGNORE或严格的SQL模式)
严格的SQL模式误差(同无IGNORE或严格的SQL模式)误差
IGNORE严格的SQL模式警告警告

从表中得出一个结论是,当IGNORE关键词和严格的SQL模式都在影响,忽略优先。这意味着,虽然IGNORE严格的SQL模式可以被认为是对错误处理的影响相反,他们不取消一起使用时。

的影响,忽视对语句执行

在MySQL中几个语句支持可选IGNORE关键词这个关键词导致服务器降级的某些类型的错误和警告而产生。一个多行语句,忽略导致语句跳到下一行,而不是放弃。

例如,如果表t有一个主键列I,试图插入相同的值i成多行通常产生一个重复键错误:

MySQL的&#62;INSERT INTO t (i) VALUES(1),(1);错误1062(23000):重复录入&#39; 1 &#39;关键&#39;主&#39;

IGNORE,包含复制的钥匙还没有插入的行,但发生了警告而不是错误:

MySQL的&#62;INSERT IGNORE INTO t (i) VALUES(1),(1);查询行,1行的影响,1报警(0.01秒)记录:2份:1警告:1mysql &#62;SHOW WARNINGS;--------- ------ --------------------------------------- |水平|代码|消息| --------- ------ --------------------------------------- |警告| 1062 |重复录入&#39; 1 &#39;关键&#39;主&#39; | --------- ------ --------------------------------------- 1行集(0秒)

这些声明支持IGNORE关键词

  • CREATE TABLE ... SELECT忽略不适用于CREATE TABLESELECT部分的声明,但插入的表格的行SELECT。行复制现有的排在一个独特的核心价值被丢弃。

  • DELETE忽略使MySQL忽略错误删除行的过程中。

  • INSERT用:忽略复制现有的排,排在一个独特的核心价值被丢弃。行设置值会导致数据转换错误设置为最接近的有效值代替。

    对于分区表没有匹配一个给定值的分区被发现,IGNORE使插入操作失败默默的为含有无与伦比的价值排。

  • LOAD DATALOAD XML用:忽略复制现有的排,排在一个独特的核心价值被丢弃。

  • UPDATE用:忽略,行重复一个独特的核心价值发生冲突不是更新的关键。行更新的值会导致数据转换错误更新到最接近的有效值代替。

这个IGNORE关键词适用于以下错误:

ER_BAD_NULL_ERRORER_DUP_ENTRYER_DUP_ENTRY_WITH_KEY_NAMEER_DUP_KEYER_NO_PARTITION_FOR_GIVEN_VALUEER_NO_PARTITION_FOR_GIVEN_VALUE_SILENTER_NO_REFERENCED_ROW_2ER_ROW_DOES_NOT_MATCH_GIVEN_PARTITION_SETER_ROW_IS_REFERENCED_2ER_SUBQUERY_NO_1_ROWER_VIEW_CHECK_FAILED
严格的SQL语句的执行模式的影响

MySQL服务器可以在不同的SQL模式操作,并能应用这些模式的不同,不同的客户,根据不同的价值sql_mode系统变量。进入严格的SQL模式,服务器升级某些警告错误。

例如,在非严格的SQL模式,插入字符串'abc'在价值转换为一个整数列的结果和一个警告:

MySQL的&#62;SET sql_mode = '';查询行,0行受影响(0秒)MySQL &#62;INSERT INTO t (i) VALUES('abc');查询行,1行的影响,1报警(0.01秒)MySQL &#62;SHOW WARNINGS;--------- ------ -------------------------------------------------------- |水平|代码|消息| --------- ------ -------------------------------------------------------- |警告| 1366 |错误值:ABC柱&#39;我&#39;在连续1 | --------- ------ -------------------------------------------------------- 1行集(0秒)

严格的SQL模式,无效的值被拒绝的错误:

mysql> SET sql_mode = 'STRICT_ALL_TABLES';
Query OK, 0 rows affected (0.00 sec)

mysql> INSERT INTO t (i) VALUES('abc');
ERROR 1366 (HY000): Incorrect integer value: 'abc' for column 'i' at row 1

更多关于可能的设置的信息sql_mode系统变量,看第5.1.10,”服务器的SQL模式”

严格的SQL模式适用于以下陈述的条件下,一些值可能超出范围或无效的行插入或从表中删除:

在存储程序,刚上市的类型个别报表严格执行SQL模式如果程序被定义在严格的模式实际上是。

严格的SQL模式适用于以下错误,代表了一类错误,输入的值无效或丢失。如果该列的数据类型错误或可能超出范围的值是无效的。值,如果要插入新的一行不包含一个价值缺失NOT NULL柱,没有显式的默认在定义条款

ER_BAD_NULL_ERROR
ER_CUT_VALUE_GROUP_CONCAT
ER_DATA_TOO_LONG
ER_DATETIME_FUNCTION_OVERFLOW
ER_DIVISION_BY_ZERO
ER_INVALID_ARGUMENT_FOR_LOGARITHM
ER_NO_DEFAULT_FOR_FIELD
ER_NO_DEFAULT_FOR_VIEW_FIELD
ER_TOO_LONG_KEY
ER_TRUNCATED_WRONG_VALUE
ER_TRUNCATED_WRONG_VALUE_FOR_FIELD
ER_WARN_DATA_OUT_OF_RANGE
ER_WARN_NULL_TO_NOTNULL
ER_WARN_TOO_FEW_RECORDS
ER_WRONG_ARGUMENTS
ER_WRONG_VALUE_FOR_TYPE
WARN_DATA_TRUNCATED

5.1.11 IPv6支持

IPv6在MySQL支持包括这些能力:

以下各节描述如何设置MySQL,客户端可以通过IPv6连接到服务器。

5.1.11.1验证系统对IPv6的支持

在MySQL服务器可以接受的IPv6连接,在你的服务器主机操作系统必须支持IPv6。一个简单的测试,以确定是否是真的,试试这个命令:

shell> ping6 ::1
16 bytes from ::1, icmp_seq=0 hlim=64 time=0.171 ms
16 bytes from ::1, icmp_seq=1 hlim=64 time=0.077 ms
...

产生一个描述你的系统的网络接口,调用ifconfig A寻找在输出的IPv6地址。

如果你的主机不支持IPv6,征询对使它指示你的系统文件。也许你只需要重新配置现有的网络接口添加一个IPv6地址。或更广泛的改变可能是需要的,如IPv6选项重建内核启用。

这些链接可能建立在不同的平台上的IPv6是有帮助的:

5.1.11.2配置MySQL服务器允许IPv6连接

MySQL服务器监听一个网络套接字的TCP / IP连接。此套接字绑定到一个单一的地址,但它可能映射到多个网络接口的地址。指定一个地址,使用--bind-address=addr在服务器启动选项,在addr是一个IPv4或IPv6地址或主机名。详情见--bind-address描述第5.1.6、“服务器选项”

5.1.11.3使用IPv6连接本地主机地址

以下过程说明如何配置MySQL允许IPv6连接的客户端连接到本地服务器使用::1本地主机地址。这里给出的说明假设你的系统支持IPv6。

  1. 一个合适的启动MySQL服务器--bind-address选项允许它接受IPv6连接。例如,把下面的线在服务器选项文件并重新启动服务器:

    [mysqld]bind-address = *

    或者,你可以绑定服务器::1,但使服务器更严格的TCP/IP连接。它只接受IPv6连接,单地址与IPv4连接拒绝。更多信息,见--bind-address描述第5.1.6、“服务器选项”

  2. 作为管理员,连接到服务器并创建一个本地用户将连接从一个帐户::1本地IPv6主机地址:

    MySQL的&#62;CREATE USER 'ipv6user'@'::1' IDENTIFIED BY 'ipv6pass';

    对于在帐户名称IPv6地址允许语法,看第6.2.4,“指定的帐户名”。除了对CREATE USER你可以发布声明,GRANT陈述,给出具体的权限的帐户,虽然这是没有必要在这一过程中剩下的步骤。

  3. 调用MySQL客户端连接到服务器使用新帐户:

    shell> mysql -h ::1 -u ipv6user -pipv6pass
    
  4. 尝试一些简单的报表显示连接信息:

    mysql> STATUS
    ...
    Connection:   ::1 via TCP/IP
    ...
    
    mysql> SELECT CURRENT_USER(), @@bind_address;
    +----------------+----------------+
    | CURRENT_USER() | @@bind_address |
    +----------------+----------------+
    | ipv6user@::1   | ::             |
    +----------------+----------------+
    

5.1.11.4外地连接使用IPv6主机地址

以下过程说明如何配置MySQL通过远程客户端许可证的IPv6连接。当地的客户是类似于前面的过程,但服务器和客户端的主机是不同的,每个人都有自己的本地IPv6地址。该示例使用这些地址:

Server host: 2001:db8:0:f101::1
Client host: 2001:db8:0:f101::2

这些地址是从nonroutable地址范围推荐选择IANA文件的目的和满足测试在您的本地网络。接受来自局域网外部客户的IPv6连接,服务器主机必须有一个公共地址。如果您的网络提供商分配给你一个IPv6地址,你可以使用。否则,另一种方式来获得一个地址是使用IPv6代理;看第5.1.11.5,“从券商获取IPv6地址”

  1. 一个合适的启动MySQL服务器--bind-address选项允许它接受IPv6连接。例如,把下面的线在服务器选项文件并重新启动服务器:

    [mysqld]bind-address = *

    或者,你可以绑定服务器2001:db8:0:f101::1,但使服务器更严格的TCP/IP连接。它只接受IPv6连接,单地址与IPv4连接拒绝。更多信息,见--bind-address描述第5.1.6、“服务器选项”

  2. 在服务器主机(2001:db8:0:f101::1),创建一个用户将从客户端主机连接一个帐户(2001年:::::::::F101 db8 0 2):

    mysql> CREATE USER 'remoteipv6user'@'2001:db8:0:f101::2' IDENTIFIED BY 'remoteipv6pass';
    
  3. 在客户端主机(2001:db8:0:f101::2),调用MySQL客户端连接到服务器使用新帐户:

    shell> mysql -h 2001:db8:0:f101::1 -u remoteipv6user -premoteipv6pass
    
  4. 尝试一些简单的报表显示连接信息:

    mysql> STATUS
    ...
    Connection:   2001:db8:0:f101::1 via TCP/IP
    ...
    
    mysql> SELECT CURRENT_USER(), @@bind_address;
    +-----------------------------------+----------------+
    | CURRENT_USER()                    | @@bind_address |
    +-----------------------------------+----------------+
    | remoteipv6user@2001:db8:0:f101::2 | ::             |
    +-----------------------------------+----------------+
    

5.1.11.5获取IPv6地址从一个经纪人

如果你没有一个公共的IPv6地址,使您的系统在您的本地网络之外,IPv6的沟通,你可以获得一个从IPv6的经纪人。这个维基百科IPv6隧道代理页面列出了几个经纪人和他们的特点,例如他们是否提供静态地址和路由协议的支持。

配置您的服务器主机使用提供的IPv6地址的经纪人后,用适当的启动MySQL服务器--bind-address选择许可证服务器接受的IPv6连接。例如,把下面的线在服务器选项文件并重新启动服务器:

[mysqld]bind-address = *

或者,你可以绑定服务器由经纪人提供的特定的IPv6地址,但使服务器更严格的TCP/IP连接。它只接受IPv6连接,单地址与IPv4连接拒绝。更多信息,见--bind-address描述第5.1.6、“服务器选项”。此外,如果经纪人分配动态地址,为您提供系统的地址可能改变您下一次连接到代理。如果是这样的话,任何帐户您创建名称原文地址无效。绑定到一个特定的地址,但避免这个地址问题的变化,你可以安排一个静态IPv6地址的经纪人。

下面的示例演示如何使用freenet6作为经纪人和gogocIPv6客户端包在Gentoo Linux。

  1. 创建一个帐户,在freenet6访问这个URL和签约:

    http://gogonet.gogo6.com
    
  2. 在创建帐户,登录到这个URL,并创建一个IPv6代理的用户ID和密码:

    http://gogonet.gogo6.com/page/freenet6-registration
    

  3. 作为root、安装gogoc

    shell> emerge gogoc
    
  4. 编辑/etc/gogoc/gogoc.conf设置用户标识符password的值。例如:

    userid=gogouserpasswd=gogopass
  5. 开始gogoc

    shell> /etc/init.d/gogoc start
    

    开始gogoc每次启动您的系统,执行此命令:

    shell> rc-update add gogoc default
    
  6. 使用ping6尝试ping主机:

    shell> ping6 ipv6.google.com
    
  7. 看到你的IPv6地址:

    shell> ifconfig tun
    

5.1.12 MySQL服务器的时区支持

MySQL服务器维护多个时区设置:

  • 系统时区。当服务器启动时,它试图确定主机的时区和使用它来设置system_time_zone系统变量。该值不改变之后。

    你可以在启动MySQL服务器的设置系统时区--timezone=timezone_name选项_ mysqld safe。你也可以把它设置TZ环境变量,在你开始之前mysqld。。。。。。。《permissible值--timezoneTZ系统依赖性。咨询你的操作系统文档看价值是什么可以接受。

  • 服务器的当前时区。全球time_zone系统变量指示时区服务器目前运行在。初始值time_zone“系统”,这表明服务器的时区是作为系统的时区相同。

    笔记

    如果设置为SYSTEMMySQL的函数调用,都需要一个时区的计算进行了系统库的调用来确定当前系统的时区。这个电话可以通过全局互斥保护,从而在竞争。

    最初的全球服务器时区值可以显式地指定在启动与--default-time-zone=timezone在命令行选项,或者你可以在选项文件中使用下面的线:

    default-time-zone='timezone&#39;

    如果你有SYSTEM_VARIABLES_ADMINSUPER特权,你可以设置全局服务器时区值在这个语句运行时:

    MySQL的&#62;SET GLOBAL time_zone = timezone;
  • 每个连接的时区。每个客户端连接都有自己的时区设置,通过该次会议time_zone变量。最初,会话变量的值从全球time_zone变,但客户可以用这句话改变自己的时区:

    MySQL的&#62;SET time_zone = timezone;

当前会话的时区设置影响,区域敏感的时间值的显示和存储。这包括功能如显示的值NOW()CURTIME(),并存储和检索的值TIMESTAMP专栏值TIMESTAMP列是从当前时区转换为UTC UTC存储,并对当前时区检索。

当前时区设置不影响的功能如显示值UTC_TIMESTAMP()或值DATETIME,或DATETIME专栏也不是值的数据类型存储在UTC时区的申请;只有在转换时间戳值。如果你想要局部特异性arithmetic forDATETIME,或DATETIME值,将它们转换为UTC,执行运算,然后转换回。

全球的客户特定的时区可以检索这样的电流值:

mysql> SELECT @@global.time_zone, @@session.time_zone;

timezone值可以在多种格式,没有一个是敏感的:

  • 的价值'SYSTEM'表明时间区应作为系统的时区相同。

  • 该值可以作为一个字符串指示从UTC偏移,如'+10:00'“6”

  • 该值可以作为命名的时区,如'Europe/Helsinki'“我们/东方”,或'MET'。指定时区只能如果时区信息表中的应用MySQL数据库已创建和填充

填充时区表

在几个表mysql系统数据库存在维持时区信息(见5.3节,“MySQL数据库”)。MySQL的安装程序时区表造成的,但不加载。你必须手动使用以下指令。

笔记

加载时区信息未必是一次性操作因为信息的变化有时。当发生这样的变化,应用程序使用旧的规则已经过时了,你会发现有必要重新加载时区表保持信息在你的MySQL服务器当前使用的。见注释本节末尾。

如果你的系统有它自己的中经银讯数据库(描述时区文件集),你应该使用MySQL _ tzinfo _到_ SQL填充时区表程序。这样的系统的例子是Linux,FreeBSD,Solaris,MacOS。这些文件的一个可能的位置是/usr/share/zoneinfo目录如果你的系统没有中经银讯数据库,您可以使用本节中介绍后,下载包。

这个MySQL _ tzinfo _到_ SQL程序是用来加载时区表。在命令行中,通过中经银讯目录路径名MySQL _ tzinfo _到_ SQL并将输出发送到MySQL程序。例如:

shell> mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root mysql

MySQL _ tzinfo _到_ SQL读你的系统的时区文件和生成SQL语句从他们。MySQL处理这些报表加载时区表。

MySQL _ tzinfo _到_ SQL也可用于加载一个时区文件或生成闰秒信息:

  • 加载一个时区文件tz_file对应于一个时区名称tz_name,调用MySQL _ tzinfo _到_ SQL这样地:

    shell> mysql_tzinfo_to_sql tz_file tz_name | mysql -u root mysql
    

    用这种方法,你必须执行一个单独的命令来加载时间为每名区,服务器需要知道区域文件。

  • 如果你的时区需要考虑闰秒,初始化闰秒信息这样,哪里tz_file是您的时区文件的名称:

    内核&#62;mysql_tzinfo_to_sql --leap tz_file | mysql -u root mysql
  • 运行后MySQL _ tzinfo _到_ SQL,最好是重新启动服务器,以便它不会继续使用以前缓存的时区数据。

如果你的系统是一个没有中经银讯数据库(例如,Windows),你可以使用一个在MySQL开发区可供下载的软件包:

http://dev.mysql.com/downloads/timezones.html

下载一个时区的包中包含的SQL语句,打开它,然后加载包文件内容到时区表:

shell> mysql -u root mysql < file_name

然后重新启动服务器

警告

使用一个可下载的包中包含MyISAM表MySQL的使用InnoDB对于时区表。试图取代他们MyISAM表会产生问题

警告

不如果你的系统有一个数据库使用一个可下载的包中经银讯。使用MySQL _ tzinfo _到_ SQL效用相反。否则,你可能导致差异的处理MySQL和其他应用程序之间的时间在您的系统。

信息在复制设置时区设置,请参阅17.4.1节,“复制的特点和问题”

5.1.12.1住在时区改变电流

当时间规则的变化,使用老规则成为过时的应用。在当前,要确保你的系统使用当前时区信息的使用。MySQL,有两个因素在保持目前的考虑:

  • 操作系统的时间影响到MySQL服务器使用的时间如果其时区设置的值SYSTEM。确保你的操作系统是利用最新的时区信息。对于大多数的操作系统,最新更新或服务包在你的系统时间的变化。检查网站的操作系统供应商的更新地址的时间变化。

  • 如果更换系统/etc/localtime一个版本使用不同的时区在规则文件的影响mysqld启动时,你必须重新启动mysqld所以,它使用的更新规则。否则,mysqld可能没有注意到当系统变化的时间。

  • 如果你使用指定的时区与MySQL,确保在时区表mysql数据库是最新的。如果你的系统有其自身的中经银讯数据库,你应该重新加载mysql的时区表,每当中经银讯数据库的更新。因为没有自己的中经银讯数据库系统,检查更新MySQL开发区。当有新的更新可用,下载它,用它来取代您的当前时区表的内容。对于这两种方法的说明,见填充时区表mysqld缓存的时区信息,看起来,所以更新的时区表后,您必须重新启动mysqld以确保它不会继续为过时的时区数据。

如果你不确定是否指定时区是可用的,作为服务器的时区设置或由客户自行设定时间区,检查是否您的时区表是空的。下面的查询确定表是否包含时区名称有任何行:

mysql> SELECT COUNT(*) FROM mysql.time_zone_name;
+----------+
| COUNT(*) |
+----------+
|        0 |
+----------+

数到零表示表是空的。在这种情况下,没有人可以使用命名的时区,你不需要更新表。一个计数大于零表明表不是空的,它的内容可用于指定时区支持。在这种情况下,你应该重新加载你的时区表,任何人谁使用命名的时区会得到正确的查询结果。

检查是否你的MySQL安装在日光节约时间规则的变化适当地更新,使用测试像下面。该示例使用,适合DST小时变化2007年发生在美国的3月11日在凌晨两点的值

测试使用的这两个查询:

SELECT CONVERT_TZ('2007-03-11 2:00:00','US/Eastern','US/Central');
SELECT CONVERT_TZ('2007-03-11 3:00:00','US/Eastern','US/Central');

两个时间值表示的时间在DST发生改变,并命名的时区需要使用时区表的使用。预期的结果是,查询返回相同的结果(输入时间,转换为等价的美国/中央时区)。

更新时区表之前,你会看到这样一个不正确的结果:

mysql> SELECT CONVERT_TZ('2007-03-11 2:00:00','US/Eastern','US/Central');
+------------------------------------------------------------+
| CONVERT_TZ('2007-03-11 2:00:00','US/Eastern','US/Central') |
+------------------------------------------------------------+
| 2007-03-11 01:00:00                                        |
+------------------------------------------------------------+

mysql> SELECT CONVERT_TZ('2007-03-11 3:00:00','US/Eastern','US/Central');
+------------------------------------------------------------+
| CONVERT_TZ('2007-03-11 3:00:00','US/Eastern','US/Central') |
+------------------------------------------------------------+
| 2007-03-11 02:00:00                                        |
+------------------------------------------------------------+

更新表后,你应该看到正确的结果:

mysql> SELECT CONVERT_TZ('2007-03-11 2:00:00','US/Eastern','US/Central');
+------------------------------------------------------------+
| CONVERT_TZ('2007-03-11 2:00:00','US/Eastern','US/Central') |
+------------------------------------------------------------+
| 2007-03-11 01:00:00                                        |
+------------------------------------------------------------+

mysql> SELECT CONVERT_TZ('2007-03-11 3:00:00','US/Eastern','US/Central');
+------------------------------------------------------------+
| CONVERT_TZ('2007-03-11 3:00:00','US/Eastern','US/Central') |
+------------------------------------------------------------+
| 2007-03-11 01:00:00                                        |
+------------------------------------------------------------+

5.1.12.2时区闰秒的支持

闰秒值返回一部分时间结束:59:59。这意味着一个功能如NOW()可以返回闰秒期间两或三秒钟相同的值。它仍然是真实的,文字的时间值有部分时间结束:59:60:59:61被认为是无效的

如果有必要寻找TIMESTAMP值前一秒闰秒,反常的结果可能是如果你使用一个比较得到的“YYYY-MM-DD HH:MM:SS”价值观。下面的例子演示了这。它改变了当地的时区为UTC之间有着内在的价值没有区别(这是在UTC)和显示值(哪有时间带校正)。

mysql> CREATE TABLE t1 (
         a INT,
         ts TIMESTAMP DEFAULT NOW(),
         PRIMARY KEY (ts)
       );
Query OK, 0 rows affected (0.01 sec)

mysql> -- change to UTC
mysql> SET time_zone = '+00:00';
Query OK, 0 rows affected (0.00 sec)

mysql> -- Simulate NOW() = '2008-12-31 23:59:59'
mysql> SET timestamp = 1230767999;
Query OK, 0 rows affected (0.00 sec)

mysql> INSERT INTO t1 (a) VALUES (1);
Query OK, 1 row affected (0.00 sec)

mysql> -- Simulate NOW() = '2008-12-31 23:59:60'
mysql> SET timestamp = 1230768000;
Query OK, 0 rows affected (0.00 sec)

mysql> INSERT INTO t1 (a) VALUES (2);
Query OK, 1 row affected (0.00 sec)

mysql> -- values differ internally but display the same
mysql> SELECT a, ts, UNIX_TIMESTAMP(ts) FROM t1;
+------+---------------------+--------------------+
| a    | ts                  | UNIX_TIMESTAMP(ts) |
+------+---------------------+--------------------+
|    1 | 2008-12-31 23:59:59 |         1230767999 |
|    2 | 2008-12-31 23:59:59 |         1230768000 |
+------+---------------------+--------------------+
2 rows in set (0.00 sec)

mysql> -- only the non-leap value matches
mysql> SELECT * FROM t1 WHERE ts = '2008-12-31 23:59:59';
+------+---------------------+
| a    | ts                  |
+------+---------------------+
|    1 | 2008-12-31 23:59:59 |
+------+---------------------+
1 row in set (0.00 sec)

mysql> -- the leap value with seconds=60 is invalid
mysql> SELECT * FROM t1 WHERE ts = '2008-12-31 23:59:60';
Empty set, 2 warnings (0.00 sec)

为了解决这个问题,你可以使用一个比较基于UTC值实际上存储在列,其中有闰秒校正应用:

mysql> -- selecting using UNIX_TIMESTAMP value return leap value
mysql> SELECT * FROM t1 WHERE UNIX_TIMESTAMP(ts) = 1230768000;
+------+---------------------+
| a    | ts                  |
+------+---------------------+
|    2 | 2008-12-31 23:59:59 |
+------+---------------------+
1 row in set (0.00 sec)

5.1.13服务器端的帮助

MySQL服务器支持HELP语句返回的信息从MySQL参考手册(见第13.8.3,“语法”)。在几个表mysql系统数据库包含需要支持这一声明的信息(见5.3节,“MySQL数据库”)。这句话的正确运行需要这些帮助表被初始化,这是由处理的内容了fill_help_tables.sql脚本

如果你安装MySQL使用二进制或源分布在Unix上,帮助表格内容初始化发生在你初始化数据目录(见第2.9.1,“初始化数据目录”)。在Linux或Windows二进制分布对RPM的分布、内容初始化发生的MySQL安装过程的一部分。

如果你升级MySQL使用二进制分布,帮助表内容不自动升级,但是你可以手动升级。定位fill_help_tables.sql文件在分享share/mysql目录改变位置,目录和进程与文件MySQL客户如下:

shell> mysql -u root mysql < fill_help_tables.sql

你也可以获得最新的fill_help_tables.sql随时升级你的帮助表。下载您的版本的MySQL的适当的文件dev.mysql.com http:/ / / / index-other.html DOC。下载后解压文件,处理它MySQL如前所述

如果你用git和MySQL开发源码树的工作,你必须使用一个下载的fill_help_tables.sql文件,因为源代码树只包含一个树桩版本

笔记

为参与复制的服务器,帮助表格内容升级过程涉及多个服务器。详情见第17.4.1.27,“复制服务器端的帮助表”

5.1.14服务器响应信号

在Unix系统中,可以将信号传送过程。mysqld响应发送给它的信号如下:

  • SIGTERM导致服务器关闭

  • SIGHUP导致服务器重新加载授权表、冲表、日志、线程缓存和缓存。这些行为就像是各种形式的FLUSH声明。服务器同时写入错误日志,这种格式状态报告:

    状态信息:当前目录:/无功/数据库/数据/运行的线程的堆栈大小:0:196608current锁:关键的缓存:defaultbuffer_size:8388600block_size:1024division_limit:100age_limit:300blocks使用:0not冲洗:0w_requests:0writes:0r_requests:0reads:0handler状态:read_key:0read_next:0read_rnd 0read_first:1write:0delete 0update:0table状态:打开表:5open表:0open文件:7open流:0alarm状态:主动报警:1max用报警:2next报警时间:67

5.1.15服务器关机过程

服务器停机过程中发生如下:

  1. 启动关机过程

    这会引发的几种方法。例如,一个用户用的SHUTDOWN特权可以执行关闭命令mysqladmin可以用在任何平台支持MySQL。其他特定于操作系统的关机启动方法也是可能的:服务器关闭Unix当它接收到一个SIGTERM信号。一个服务器作为服务运行在Windows关闭时服务经理告诉它。

  2. 服务器创建一个线程如果需要关闭。

    这取决于如何关机启动,服务器会创建一个线程来处理关机过程。如果关闭客户端请求的线程被创建,关闭。如果关闭接收结果SIGTERM信号,信号线可能处理关闭本身,或它可能会创建一个单独的线程来做。如果服务器试图创建一个线程并不能关闭(例如,如果内存耗尽),它的问题诊断消息出现在错误日志:

    错误:无法创建线程杀死服务器
  3. 服务器停止接收新的连接。

    为了防止新的活动从发起关机时,服务器停止的网络接口,通常听连接关闭处理程序接受新的客户端连接:TCP/IP端口,Unix套接字文件,Windows命名管道和共享内存,在Windows。

  4. 服务器终止当前的活动。

    与客户端的连接相关的每个线程,服务器将客户端的连接和标记线程死亡。螺纹模具时,注意到它们是很明显的。空闲的连接螺纹很快死去。目前正在处理报表,定期检查他们的状态需要更长的时间来模线。关于终止线程的更多信息,参见第13.7.7.4,“杀语法”,特别是有关死亡的指令REPAIR TABLEOPTIMIZE TABLE操作MyISAM

    对于已经打开的事务线程,则回滚事务。如果一个线程更新非事务表,操作如多排UPDATEINSERT可以把表部分更新因为操作可以终止之前完成。

    如果服务器是主复制服务器,它将线程与当前连接的奴隶像其他客户端线程。那就是,每一个标记为死亡、退出时的状态下检查。

    如果服务器是一个奴隶的复制服务器,它停止的I / O和SQL线程,如果他们是活跃的,标记客户端线程死亡之前。SQL线程被允许完成当前语句(以避免造成复制问题),然后停止。如果SQL线程在一个事务中在这一点上,服务器等待直到当前复制事件组(如果有)已完成执行,或在用户的问题KILL QUERYKILL CONNECTION声明。参见第13.4.2.7“停止从语法”。从非事务语句不能回滚,为了保证安全的复制,只有事务表应使用。

    笔记

    为了保证对奴隶的碰撞安全性,您必须运行的奴隶--relay-log-recovery启用.

    参见第17.2.4,“复制继电器和状态日志”

  5. 服务器关闭或关闭存储引擎。

    在这个阶段,服务器刷新表缓存并关闭所有打开的表。

    每个存储引擎执行表,它管理必要的任何行动。InnoDB冲到磁盘(除非其缓冲池innodb_fast_shutdown2),将当前LSN的表空间,以及其自身的内部线程终止。MyISAM冲一个表将任何挂起的指数。

  6. 服务器退出

在管理过程中提供的信息,服务器返回一个在下面的列表描述了退出代码。括号中的词表示的系统响应代码的作用,为平台,系统是用来管理服务器。

  • 0 = successful termination (no restart done)

  • 1 = unsuccessful termination (no restart done)

  • 2 = unsuccessful termination (restart done)

5.2 MySQL数据目录

信息由MySQL服务器管理存储的目录称为数据目录下。下面简要地介绍了通常在数据目录中的项目,与其他信息的交叉引用:

  • 数据目录的子目录。每个子目录的数据目录是一个数据库目录和对应一个数据库服务器管理。所有的MySQL的安装有一定的标准数据库:

    • 这个mysql目录对应的MySQL系统的数据库,其中包含由MySQL服务器所需的运行时信息。这个数据库包含数据字典表和系统表。看到5.3节,“MySQL数据库”

    • 这个performance_schema目录对应的性能架构,它提供了用于检查运行时服务器内部的执行信息。看到第25章,MySQL性能模式

    • 这个sys目录对应的系统图式,这帮助解释绩效模式信息更容易提供了一组对象。看到26章,MySQL系统架构

    其他子目录对应于由用户或应用程序所创建的数据库。

    笔记

    INFORMATION_SCHEMA是一个标准的数据库,但它的实现使用没有相应的数据库目录。

  • 日志文件由服务器写。看到5.4节,“MySQL服务器日志”

  • InnoDB表空间和日志文件。看到15章,InnoDB存储引擎

  • 默认/自动生成的SSL证书和密钥文件和RSA。看到第6.4.3,“创建SSL和RSA证书和密钥”

  • 服务器进程的ID文件(当服务器运行)。

  • 这个mysqld-auto.cnf文件存储坚持全局系统变量设置。看到5.1.8节,“使用系统变量”

前面列表中的一些项目可以迁往别处的重新配置服务器。此外,该--datadir选项可以使数据目录本身的位置改变。对于一个给定的MySQL的安装,检查服务器配置来确定项目已被移动。

5.3 MySQL数据库系统

这个mysql数据库是系统数据库。它包含表中存储信息的MySQL服务器需要运行。一个广泛的分类是:MySQL数据库包含数据字典表中存储的数据库对象的元数据,以及系统表用于其他操作的目的。下面的讨论进一步细分为更小的类系统表的设置。

本节列举了表中的每一个范畴,与额外的信息交叉引用。数据字典表和系统表的使用InnoDB存储引擎除非另有说明。

mysql系统表和数据字典表驻留在一个单一的InnoDB表空间文件命名mysql.ibd在MySQL数据目录。此前,这些表是建立在个人空间中的文件MySQL数据库目录

数据字典表

这些表包含数据字典,其中包含数据库对象的元数据。更多信息,参见14章,MySQL数据词典

重要

数据字典是新的MySQL 8。数据字典功能的服务器需要一些操作上的差异比以前的MySQL版本。详情见第14,“数据字典的用法的差异”。同时,升级到MySQL 8从MySQL 5.7,升级程序有所不同从以前的MySQL版本,要求您验证您的安装升级准备通过检查特定的先决条件。有关更多信息,参见2.10.1节,“升级MySQL”,特别是验证你的MySQL 5.7安装升级的先决条件

  • catalogs:目录信息

  • character_sets有关可用的字符集信息。

  • collations有关排序规则:每个字符集。

  • column_statistics:列值直方图统计。看到第8.9.6,“优化统计”

  • column_type_elements:信息类型使用的列

  • columns在表列的信息

  • dd_properties:表标识数据字典的性质,如它的版本。服务器使用此判断数据字典必须升级到新版本。

  • events关于Event Schdule Events的信息。见23.4节,“使用事件调度程序”。服务器负载的事件列在表中的启动顺序,除非开始的--skip-grant-tables选项

  • foreign_keysforeign_key_column_usage信息:关于外商的钥匙。

  • index_column_usage关于columns used by索引信息。

  • index_partitions资料来源:联合国人权事务高级专员办事处(人权高专办)。

  • index_stats:用来存储动态指标统计时产生的ANALYZE TABLE执行

  • indexes:关于表的索引信息

  • innodb_ddl_log店:碰撞安全日志for DDL DDL操作。

  • parameter_type_elements:信息的存储过程和函数的参数,返回值和存储功能。

  • parameters:信息的存储过程和函数。看到第23,“使用存储子程序(过程和函数)”

  • resource_groups资源组的信息。看到第8.12.5,“资源组”

  • routines:信息的存储过程和函数。看到第23,“使用存储子程序(过程和函数)”

  • schemata信息图示。在MySQL中,架构是一个数据库,所以此表提供信息数据库。

  • st_spatial_reference_systems:信息可用的空间参考系统的空间数据。

  • table_partition_valuesused by information about:收益表的分区。

  • table_partitionshttp : / / www.un.org / Depts / dpts / db.htm。

  • table_stats:信息时产生的动态统计表ANALYZE TABLE执行

  • tables对数据库中的表的信息。

  • tablespace_fileshttp : / / www.un.org / Depts / dpts / db.htm。

  • tablespaces关于tablespaces:活跃。

  • triggers:信息触发

  • view_routine_usage:关于观点和他们所使用的存储功能之间的依赖关系信息。

  • view_table_usage:用于跟踪视图和基本表之间的依赖关系。

数据字典表是看不见的。他们不能读SELECT,不会出现在输出SHOW TABLES,不列入information_schema.tables表,等等。然而,在大多数情况下都有相应的INFORMATION_SCHEMA表格可以查询。从概念上讲,该information_schema提供了一个视图通过MySQL暴露数据字典元数据。例如,你不能选择从mysql.schemata表直接:

MySQL的&#62;SELECT * FROM mysql.schemata;错误3554(hy000):访问数据字典表的MySQL。图式”被拒绝。

相反,选择从相应的信息INFORMATION_SCHEMA

MySQL的&#62;SELECT * FROM INFORMATION_SCHEMA.SCHEMATA\G*************************** 1。行*************************** catalog_name:def schema_name:mysqldefault_character_set_name:utf8mb4 default_collation_name:utf8mb4_0900_ai_ci sql_path:空*************************** 2。行*************************** catalog_name:def schema_name:information_schemadefault_character_set_name:UTF8 default_collation_name:utf8_general_ci sql_path:空…

没有INFORMATION_SCHEMA表完全对应mysql.indexes,但INFORMATION_SCHEMA.STATISTICS包含相同的信息

由于还没有INFORMATION_SCHEMA完全对应表mysql.foreign _群岛mysql.foreign_key_column_usage。标准SQL的方式来获得国外的关键信息是通过information_schemaREFERENTIAL_CONSTRAINTSKEY_COLUMN_USAGE表;这些表现为意见的实施外商_群岛foreign_key_column_usage数据字典的表,和其他。

一些系统表在MySQL 8已经通过数据字典表取代,不再出现在mysql系统数据库:

  • 这个events数据字典表取代事件表在MySQL 8

  • 这个parameters日常工作数据字典表一起supersede theproc表在MySQL 8

格兰特系统表

这些系统表包含关于用户帐户授予他们所持有的特权信息。关于结构,附加的信息内容和目的的这些表,看第6.2.3,“Grant Tables”

在MySQL 8,授权表InnoDB(交易)表。以前,这些都是MyISAM(非事务性)表。格兰特表存储引擎是MySQL 8伴随的变化对账户管理报表等行为的变化CREATE USERGRANT。此前,账户管理报表,命名为多个用户成功和失败的人对一些用户。陈述现在的交易和成功的所有指定用户或回滚,如果出现任何错误没有影响。

笔记

如果MySQL是从旧版本但授权表没有被升级的升级MyISAMInnoDB,服务器认为他们只读和账户管理语句产生一个错误。升级的说明,见2.10.1节,“升级MySQL”

  • user:用户帐户、全球的特权,和其他非特权列。

  • global_grants:动态权限的用户看到的作业;6.2.2、静态与动态的特权”

  • db数据库:层次privileges。

  • tables_priv表:层次privileges。

  • columns_privprivileges:柱过程中的层次。

  • procs_priv功能:可存储程序和权利。

  • proxies_priv代理:用户privileges。

  • default_roles:此表列出默认的角色是一个用户连接和验证后激活,或执行SET ROLE DEFAULT

  • role_edges:本表列出的角色图的边缘。

    一个给定的user表行可能是指一个用户帐户或角色。服务器可以识别是否一行代表一个用户帐户,一个角色,或通过咨询role_edges为验证ID信息表之间的关系。

  • password_history关于密码修改信息

对象信息系统表

这些系统表包含信息存储的程序,组件,用户定义函数和服务器端插件:

日志系统表

服务器使用这些系统表记录:

  • general_log:通用查询日志表

  • slow_log慢查询日志:表

日志表的使用CSV存储引擎

有关更多信息,参见5.4节,“MySQL服务器日志”

服务器端的帮助系统表

这些系统表包含服务器端的帮助信息:

  • help_category关于帮助类信息

  • help_keyword关键词:与相关的帮助主题。

  • help_relation关键词:服务之间的映射和主题。

  • help_topic帮助主题的内容

有关更多信息,参见第5.1.13,“服务器端”

时区系统表

这些系统表包含时区信息:

  • time_zone:时区ID和他们是否使用闰秒。

  • time_zone_leap_second:当闰秒发生

  • time_zone_name之间的映射时区:ID和名称。

  • time_zone_transitiontime_zone_transition_type《时间区描述》

有关更多信息,参见第5.1.12,MySQL服务器的时区支持”

复制系统表

服务器使用这些系统表来支持复制:

优化系统表

这些系统表使用的优化器:

  • innodb_index_stats_ _ InnoDB数据表:用于InnoDB持续优化统计。看到第15.6.11.1”配置,持续优化统计参数

  • server_costengine_cost:优化器成本模型使用包含成本估计的操作信息在查询执行过程中发生的表。server_cost包含通用服务器操作优化的成本估算。engine_cost包含特定的存储引擎的操作估计。看到第8.9.5,“优化成本模型”

杂系统表

其他系统表不符合前面的分类:

  • audit_log_filteraudit_log_user:如果安装MySQL企业审计,这些表提供持久存储审计日志过滤器定义和用户帐户。看到第6.5.5.8.1,审计日志表”

  • firewall_usersfirewall_whitelist:如果安装MySQL企业防火墙,这些表提供的防火墙使用的信息存储。看到第6.5.6,MySQL企业防火墙”

  • servers:使用的联邦存储引擎。看到第16.8.2.2,使用创建服务器创建一个联合表

  • innodb_dynamic_metadata:使用的InnoDB存储引擎存储的快速变化的数据表如自动增加计数器的值和索引树腐败的旗帜。替换数据字典缓冲区表,居住在InnoDB系统表空间

5.4 MySQL服务器的日志

MySQL服务器有几个日志,可以帮助你找出什么活动的地方。

日志类型写入日志信息
错误日志遇到的问题开始,运行,或停止mysqld
通用查询日志建立的客户端连接和语句从客户机接收到的
二进制日志语句更改数据(也可复制)
中继日志从复制主服务器接收到的数据变化
慢查询日志查询超过了long_query_time时间执行
DDL日志(元数据日志)元数据操作执行的DDL语句

默认情况下,日志不启用,除了Windows错误日志。(DDL日志总是创造的需要时,并没有看到用户可配置的选项;第5.4.6,“DDL日志”。)以下日志的特定部分提供关于服务器的选项,使测井信息。

默认情况下,服务器将所有启用的日志文件中的数据目录。你可以强制服务器关闭并重新打开日志文件(或在某些情况下,切换到一个新的日志文件)通过刷新日志。冲洗时出现问题的日志FLUSH LOGS执行语句;mysqladmin用一个flush-logs刷新争论;或执行mysqldump用一个--flush-logs--master-data选项看到第13.7.7.3“同花顺语法”4.5.2“,”mysqladmin客户管理MySQL服务器”,和4.5.4、”mysqldump一个数据库的备份计划”。此外,二进制日志刷新当其规模达到的价值max_binlog_size系统变量

你可以在运行时的一般查询和慢查询日志控制。您可以启用或禁用日志记录,或者更改日志文件的名称。你可以告诉服务器写一般查询和慢查询条目日志表,日志文件,或。详情见5.4.1部分,“选择通用查询和慢查询日志输出目的地”5.4.3节,“通用查询日志”,和第5.4.5、“慢查询日志”

中继日志仅用于从复制服务器,把从主服务器,还必须对从数据的变化。对于中继日志的内容和结构的讨论,见第17.2.4.1,“从中继日志”

有关日志维护操作如旧日志文件过期,看第5.4.7,服务器日志维护”

为保持日志安全信息,看第6.1.2.3,“密码登录”

5.4.1选择通用查询和慢查询日志输出目的地

MySQL服务器提供了对输出的通用查询日志和慢查询日志的目的灵活的控制,如果这些日志启用。日志条目可能的目的地是日志文件或general_logslow_log表中的mysql数据库一个或两个目的地可以选择。

在服务器启动日志控制。这个--log-output选项指定日志输出目的地。这个选项本身并不使日志。它的语法是--log-output[=value,...]

  • 如果--log-output给出了一个值,该值应该是一个逗号分隔的一个或更多的单词列表(log to表)FILE(日志文件),或(不记录到表或文件)。NONE,如果存在,优先于其他任何说明符。

  • 如果--log-output被省略,默认的日志记录的目的地是文件

这个general_log系统变量控制测井为选定的日志目的地的通用查询日志。如果在服务器启动时指定的,general_log以1或0来启用或禁用日志可选参数。指定以外的记录文件的默认文件名,设置general_log_file可变。同样,slow_query_log变量控制记录为选定的目的地慢查询日志和设置slow_query_log_file指定文件日志文件名。如果日志启用,服务器打开相应的日志文件写入启动信息了。然而,进一步记录查询文件不发生除非文件日志的目的是选择

实例:

在运行日志控制日志表和文件相关的系统变量,使测井运行控制:

  • 全球log_output系统变量表示当前记录的目的地。它可以在运行时修改改变目的地。

  • 全球general_logslow_query_log变量是否表明通用查询日志和慢查询日志启用(打开(放))或禁用(OFF)。你可以在运行时设置这些变量来控制是否启用的日志。

  • 全球general_log_fileslow_query_log_file变量说明的一般查询日志和慢查询日志文件的名称。您可以设置这些变量在服务器启动或在运行时更改日志文件的名称。

  • 禁用或启用通用查询当前连接日志,设置会话sql_log_off变量打开(放)OFF

日志输出表的使用提供了以下好处:

  • 日志条目有一个标准的格式。显示日志表的当前结构,使用这些语句:

    SHOW CREATE TABLE mysql.general_log;
    SHOW CREATE TABLE mysql.slow_log;
    
  • 日志的内容都可以通过SQL语句。这使得查询日志条目,只选择那些符合特定条件的使用。例如,选择日志的内容与特定客户相关的(可以识别有问题的查询从客户端)是有用的,它是更容易使用日志表比一个日志文件做这个。

  • 日志都可以远程通过任何客户端可以连接到服务器发出查询(如果客户有相应的日志表的特权)。不需要登录到服务器主机直接访问文件系统。

日志表的实现具有以下特点:

  • 总的来说,对数表的主要目的是提供用户观察服务器的运行时执行一个接口,不干扰其运行时执行。

  • CREATE TABLEALTER TABLE,和DROP TABLE在一个有效的操作日志表。为ALTER TABLEDROP TABLE日志表,不能使用,必须禁用,如后所述。

  • 默认情况下,日志表的使用CSV存储引擎将数据写入在逗号分隔值格式。谁可以访问用户.csv日志文件包含表数据的文件,方便导入到其他程序如电子表格,可以处理CSV输入。

    日志表可以改变使用MyISAM存储引擎。你不能使用ALTER TABLE改变日志表,使用。日志必须禁用第一。没有引擎以外CSVMyISAM日志法律are for the tables。

  • 禁用日志记录,你可以改变(或下降)的日志表,你可以使用下面的策略。该示例使用通用查询日志;对慢查询日志的过程是相似的但使用slow_logslow_query_log系统变量

    SET @old_log_state = @@global.general_log;SET GLOBAL general_log = 'OFF';ALTER TABLE mysql.general_log ENGINE = MyISAM;SET GLOBAL general_log = @old_log_state;
  • TRUNCATE TABLE在一个有效的操作日志表。它可用于过期日志条目。

  • RENAME TABLE在一个有效的操作日志表。你可以自动重命名日志表(执行日志轮转,例如)使用以下策略:

    使用MySQL;如果表滴存在general_log2;创建表general_log2像general_log;重命名表general_log到general_log_backup,general_log2到general_log;
  • CHECK TABLE在一个有效的操作日志表。

  • LOCK TABLES不能用于一个日志表

  • INSERTDELETE,和UPDATE不能用于一个日志表。这些操作只允许内部服务器本身。

  • FLUSH TABLES WITH READ LOCK和的状态read_only系统变量对日志表没有影响。服务器可以写入日志表。

  • 写入日志表的条目不写入二进制日志,因此没有被复制到从服务器。

  • 冲洗记录表或日志文件,使用FLUSH TABLESFLUSH LOGS,分别

  • 对数表的分区是不允许的。

  • mysqldump转储包括报表创建这些表让他们不在重载转储文件丢失。日志表内容不倾倒。

5.4.2 the error log

本节讨论如何为诊断信息记录到错误日志配置MySQL服务器。有关选择错误消息的字符集和语言信息,看10.6节,“错误信息字符集”,或10.11节,“设置错误消息的语言”

错误日志包含一个记录mysqld启动和关闭的时间。它也包含诊断信息,如错误、警告和服务器的启动和关闭过程中出现的音符,而服务器运行。例如,如果mysqld注意到一个表需要自动检查或修理,它将消息写入错误日志。

在一些操作系统错误日志包含堆栈跟踪如果mysqld非正常退出。可用于确定跟踪mysqld退出。看到28.5节,“调试和移植MySQL”

如果用于启动mysqld_ mysqld safe可以将消息写入错误日志。例如,当_ mysqld safe注意异常mysqld退出,重新启动mysqld写一个mysqld restarted消息错误日志

下面的章节讨论了配置错误日志记录方面。

5.4.2.1错误日志组件配置

在MySQL 8中,错误日志中使用了在MySQL组件架构第五,MySQL服务器组件”。错误日志子系统包括执行日志事件过滤和写作部分,以及系统变量配置组件能够实现所需的测井结果。

本节讨论如何选择错误日志记录组件。具体到系统日志和JSON日志作家的说明,见部分5.4.2.3,”错误记录到系统日志”,和第5.4.2.4,“错误日志以JSON格式”。有关所有可用的日志组件的更多细节,参见第5.5.1,“错误日志组件”

基于错误日志提供这些功能的组件:

  • 事件日志可以通过过滤元件过滤影响信息可用于写作。

  • 事件日志输出的水槽(作家)组件。多片组件可以启用,写错误日志输出到多个目的地。

  • 内置过滤器和作家的成分组合的默认错误日志格式的实现。

  • 一个加载的作家能够记录到系统日志。

  • 可加载的作家使测井JSON格式。

  • 系统变量控制日志组件启用和过滤日志事件规则。

这个log_error_services系统变量控制日志组件错误日志记录启用。变量可以包含一个列表0, 1,或多个元素。在后一种情况下,元件可以用分号或分隔(如MySQL 8.0.12)逗号,后跟空间。一个给定的设置不能使用分号和逗号分隔符。组件的顺序很重要因为服务器执行元件的顺序列出。

默认情况下,log_error_services有这样的价值:

MySQL的&#62;SELECT @@global.log_error_services;---------------------------------------- | @ @global.log_error_services | ---------------------------------------- | log_filter_internal;log_sink_internal | ----------------------------------------

该值指示日志事件首先通过内置的过滤器组件,log_filter_internal,然后通过内置的日志写入组件,log_sink_internal。过滤器修改日志事件的组件命名后在看log_error_services价值。水槽是一个日志事件的目的地。通常,一个下沉过程日志事件日志消息,有一个特定的格式并将这些消息到相应的输出,如文件或系统日志。

笔记

如果log_error_services分配一个值,不包含作家组成,没有日志输出写的是从这一点。

在最后的部分log_error_services值应该是一个作家。如果最终的组件是一个过滤器,它有没有效果,因为过滤事件不会被发送到任何作家。

结合log_filter_internallog_sink_internal默认的错误日志过滤输出行为实现。这些组件的作用是通过其他服务器选项和系统变量的影响:

更改用于记录错误日志组件集,负载组件是必要的修改log_error_services价值。添加或删除日志组件是受这些约束:

例如,使用系统日志写入(log_sink_syseventlog)而不是默认的作家(log_sink_internal第一作者),载分量,然后修改log_error_services价值:

INSTALL COMPONENT 'file://component_log_sink_syseventlog';SET GLOBAL log_error_services = 'log_filter_internal; log_sink_syseventlog';
笔记

瓮使用加载日志组件INSTALL COMPONENT是组件名称的前缀_文件组件。例如,对于log_sink_syseventlog组成部分,相应的骨灰盒日志文件_ _ _ syseventlog组件库

可以配置多个日志作家将输出发送到多个目的地。为使本系统除了写日志(而不是默认的作家,集)log_error_services这样的价值:

SET GLOBAL log_error_services = 'log_filter_internal; log_sink_internal; log_sink_syseventlog';

恢复使用只有默认的作家和卸载系统日志写入,执行这些语句:

SET GLOBAL log_error_services = 'log_filter_internal; log_sink_internal;
UNINSTALL COMPONENT 'file://component_log_sink_syseventlog';

配置日志组件将在每个服务器启动时启用,使用此程序:

  1. 如果组件被加载,加载使用INSTALL COMPONENT。加载组件注册的mysql.component系统表使服务器自动加载它随后的初创公司。

  2. 设置log_error_services值在启动包括组件名称。设置的值在服务器my.cnf文件,或使用SET PERSIST,以运行MySQL实例的值并保存值将用于随后的重新启动服务器;看第13.7.5.1,”句法变量赋值”。在一个价值my.cnf在下次重新启动生效。一个值集的使用SET PERSIST立即生效,和随后的重新启动。

假设你想配置,为每一个服务器启动时,使用JSON写日志(log_sink_json)除了内置日志过滤器和作家(log_filter_internallog_sink_internal)。第一次加载JSON的作家如果不加载:

安装的组件的组件_日志文件_ _ JSON库”;

然后设置log_error_services在服务器启动时生效。你可以将它设置在my.cnf

[mysqld]
log_error_services='log_filter_internal; log_sink_internal; log_sink_json'

或者你可以使用SET PERSIST

SET PERSIST log_error_services = 'log_filter_internal; log_sink_internal; log_sink_json';

组件命名的顺序log_error_services是重要的,特别是对于过滤器和作家的相对顺序。考虑这个log_error_services价值:

_ _内燃机过滤日志;日志_沉_ 1;2 _沉_日志

在这种情况下,日志事件通过内置的过滤器,然后以第一作者,然后第二作者。作家收到过滤日志事件。

相比之下,这log_error_services价值:

_沉_ 1日志;日志过滤器内部_ _;日志_沉_ 2

在这种情况下,日志事件传递给第一作者,再到内置的过滤器,然后第二作者。第一作者接收未经过滤的事件。第二作者接收过滤事件。你可以配置错误日志这种方式,如果你想要一个日志包含所有日志事件的消息,而另一个只含消息日志事件的一个子集。

5.4.2.2默认错误日志的目的配置

本节讨论服务器选项配置默认的错误日志的目的,可以是控制台或文件名。这也表明,日志写入元件库自己的输出目的地的预设目的。

在这次讨论中,控制台方法stderr,标准错误输出。这是你的终端或控制台窗口除非标准错误输出被重定向到不同的目的地。

服务器解释选项,确定默认的错误日志的目的有所不同,Windows和Unix系统。一定要使用适合你的平台配置信息的目的:

在服务器错误日志的目的解释的默认选项,它集log_error系统变量来表示默认目标,从而影响几个写日志组件编写错误消息。看到有默认的错误日志的目的影响日志的作家

在Windows的默认错误日志的目的

在Windows,mysqld使用--log-error--pid-file,和--console选择确定默认的错误日志的目的是控制台或文件,并且,如果一个文件,文件名:

  • 如果--console是给定的,默认的目的地是控制台。(--console优先于--log-error如果都是给定的,与以下事项--log-error不适用。)

  • 如果--log-error不给,或者没有命名一个文件,默认的目的地是一个文件名为host_name错误在数据目录,除非--pid-file指定选项。在这种情况下,文件名是PID文件基本名和后缀错误在数据目录

  • 如果--log-error给一个文件名,默认的是文件(与目的地错误后缀,如果名字没有后缀),位于数据目录下,除非绝对路径名指定一个不同的位置。

如果默认的错误日志的目的是控制台,服务器设置log_error系统变量标准错误。否则,默认的目标是文件和服务器设置log_error为文件名

在UNIX和类UNIX系统的默认错误日志的目的

在UNIX和类UNIX系统,mysqld使用--log-error选择确定默认的错误日志的目的是控制台或文件,并且,如果一个文件,文件名:

  • 如果--log-error没有给出,默认目标是控制台。

  • 如果--log-error没有命名的文件,默认的目的地是一个文件名为host_name错误在数据目录

  • 如果--log-error给一个文件名,默认的是文件(与目的地错误后缀,如果名字没有后缀),位于数据目录下,除非绝对路径名指定一个不同的位置。

  • 如果--log-error是在一个选项文件[ mysqld ][server],或[ _ mysqld safe ]部分,_ mysqld safe发现和利用期权,并通过它mysqld

笔记

百胜或APT包安装配置错误日志文件位置下是很常见的/var/log有一个选项,如log-error=/var/log/mysqld.log在服务器配置文件。从选项删除文件名的原因host_name.err在数据目录下的文件被使用。

如果默认的错误日志的目的是控制台,服务器设置log_error系统变量标准错误。否则,默认的目标是文件和服务器设置log_error为文件名

有默认的错误日志的目的影响日志的作家

在服务器的错误日志的目的解释的配置选项,它集log_error系统变量显示默认的错误日志的目的。写日志组件可以依据自己的输出目的地的log_error值,或确定目的地独立log_error

如果log_error标准错误,默认的错误日志的目的是控制台和日志作家基地输出目的地的默认目标也写入控制台:

  • log_sink_internallog_sink_jsonlog_sink_test:这些作家写的控制台。这是作家如是真的log_sink_json可以启用多个倍;所有实例写入控制台。

  • log_sink_syseventlog:笔者写入系统日志,不管的log_error价值

如果log_error是不是标准错误,默认的错误日志的目的是一个文件,log_error表示文件名。日志作家基地输出目的地的默认目标库输出文件命名,文件名。(一个作家可能会使用完全的名字,也可以使用一些变体的假设。)log_error价值file_name。然后日志作家用这样的名字:

  • log_sink_internallog_sink_test这些作家写的:file_name

  • log_sink_json:这个作家叫在连续的实例log_error_services值写入文件的命名file_name再加上一个编号NNJSON后缀:file_name00.jssonfile_name01.jsson我知道,和等等

  • log_sink_syseventlog:笔者写入系统日志,不管的log_error价值

5.4.2.3错误记录到系统日志

这是可能的mysqld写错误日志,系统日志(事件记录在Windows,和syslog在UNIX和类UNIX系统)。

本节介绍了如何配置使用内置过滤记录错误,log_filter_internal,和系统日志的作家,log_sink_syseventlog,立即生效,随后服务器启动。有关配置错误日志记录的一般信息,看第5.4.2.1,“错误日志组件配置”

为了使系统日志的作者,第一作者部分负荷,然后修改log_error_services价值:

INSTALL COMPONENT 'file://component_log_sink_syseventlog';SET GLOBAL log_error_services = 'log_filter_internal; log_sink_syseventlog';

设置log_error_services在服务器启动时生效,使用说明第5.4.2.1,“错误日志组件配置”。这些说明适用于其他错误日志记录系统变量以及。

笔记

MySQL 8的配置,您必须启用错误记录到系统日志中明确。这不同于MySQL 5.7和更早的版本,错误记录到系统日志是在Windows默认情况下启用,并在所有平台上不需要加载组件。

错误记录到系统日志可能需要额外的系统配置。查阅系统日志文件为您的平台。

在Windows中,错误信息写入事件日志中的应用程序日志有以下特点:

  • 项标记为Error警告,和Note写入事件日志,而不是信息如个人存储引擎信息报表。

  • 事件日志条目有一个源MySQL

在UNIX和类UNIX系统中,记录到系统日志使用syslog。下面的系统变量的影响系统日志信息:

  • syseventlog.facility默认:Facility for系统日志消息是daemon。设置这个变量来指定一个不同的设备。

  • syseventlog.include_pid:是否包括在每一行的服务器进程ID系统日志输出

  • syseventlog.tag:这个变量定义添加到服务器的标识标签(mysqld)在syslog消息如果定义标签附加到带连字符的标识符。

笔记

MySQL 8.0.13之前,使用log_syslog_facilitylog_syslog_include_pid,和log_syslog_tag系统变量而不是syseventlog。xxx变量.

MySQL使用自定义标签系统对于重要的系统信息无误差的情况下,如启动、关机、和一些重要的更改设置。在日志中不支持自定义标签,包括Windows事件日志,并syslog在UNIX和类UNIX系统中,系统消息被分配用于严重的信息水平的标签。然而,这些信息是打印日志即使MySQLlog_error_verbosity设置通常会排除信息在信息层面。

当日志作家必须回到一个标签信息而不是系统这样,和日志事件进一步处理的MySQL服务器外(例如,过滤或转发的syslog配置),这些事件可能在默认情况下被处理的二次应用作为信息严重程度而不是系统严重程度.

5.4.2.4错误日志以JSON格式

本节介绍了如何配置使用内置过滤记录错误,log_filter_internal,和JSON的作家,log_sink_json,立即生效,随后服务器启动。有关配置错误日志记录的一般信息,看第5.4.2.1,“错误日志组件配置”

为了使JSON的作家,先装作家组成,然后修改log_error_services价值:

INSTALL COMPONENT 'file://component_log_sink_json';SET GLOBAL log_error_services = 'log_filter_internal; log_sink_json';

设置log_error_services在服务器启动时生效,使用说明第5.4.2.1,“错误日志组件配置”。这些说明适用于其他错误日志记录系统变量以及。

它允许的名字log_sink_json在多次log_error_services价值。例如,用一个实例写过滤事件和过滤事件的又一个例子,你可以设置log_error_services这样地:

SET GLOBAL log_error_services = 'log_sink_json; log_filter_internal; log_sink_json';

JSON写日志确定基于默认的错误日志的目的输出目的地,这是由log_error系统变量。如果log_error名称的文件,JSON作家基地输出文件命名,文件名,加上一个编号NNJSON后缀,与NN00开始。例如,如果log_errorfile_name连续的情况下,log_sink_json命名的log_error_services值写入file_name00.jssonfile_name01.jsson我知道,和等等

如果log_error标准错误,JSON作家写入控制台。如果log_json_writer在多次的命名log_error_services的价值,他们都写入控制台,这可能是没有用的。

5.4.2.5错误日志过滤

错误日志的配置通常包括一个日志过滤器组件和一个或多个日志写入组件。错误日志过滤,MySQL提供了一个选择的组件:

log_filter_internal:基于错误日志过滤优先级

错误日志的详细控制是一个简单的基于错误事件优先级过滤形式。它的实现是由log_filter_internal日志过滤器组件。如何影响log_filter_internal许可证或抑制错误、警告和信息,事件用于错误日志设置log_error_verbosity系统变量log_filter_internal内置默认启用,但如果禁用,变化log_error_verbosity有没有影响

被允许log_error_verbosity值为1(仅差2)(错误,警告,(3)错误,警告和注释)。

如果log_error_verbosity设置为2或更高,服务器日志报表,不安全的基于语句的日志消息。如果该值为3,服务器日志终止连接和访问被拒绝新的连接尝试错误。看到第b.5.2.10,“通信错误和失败的连接”

如果你使用复制,设置log_error_verbosity2或更大的推荐,了解正在发生的事情的更多信息,如网络故障和重新连接信息。

如果一个从属服务器log_error_verbosity设置为2或更高,从打印信息的错误日志提供有关其状态的信息,如二进制日志和中继日志坐标那里开始其工作,当它切换到另一个中继日志,当它重新连接后断开,等等。

选择重要的系统信息无错误的情况是印刷错误日志的log_error_verbosity价值。这些信息包括启动和关闭的消息,和一些重要的更改设置。

在MySQL错误日志、系统消息被标记为系统。其他日志作家可能或可能不遵循同样的约定,并由此产生的日志信息,系统可能会被分配用于严重的信息水平的标签,如笔记信息。如果你使用任何附加的过滤或重定向基于消息的标识记录、系统消息不会压倒你的过滤器,但被它以同样的方式为其他信息。

log_filter_dragnet:基于规则的错误日志过滤

这个log_filter_dragnet日志日志过滤器组件使基于用户定义的规则过滤。明确适用规则,设置dragnet.log_error_filter_rules系统变量

为了使log_filter_dragnet滤波器,首先加载过滤器组件,然后修改log_error_servicesValue。The following example enable .log_filter_dragnet结合内置的写日志:

INSTALL COMPONENT 'file://component_log_filter_dragnet';
SET GLOBAL log_error_services = 'log_filter_dragnet; log_sink_internal';

设置log_error_services在服务器启动时生效,使用说明第5.4.2.1,“错误日志组件配置”。这些说明适用于其他错误日志记录系统变量以及。

log_filter_dragnet启用,定义它的过滤规则设置dragnet.log_error_filter_rules系统变量。一个规则集包含零个或多个规则,每个规则是如果声明由一期终止(.)字符。如果变量的值为空(无规则),没有过滤发生。

例1.。这个规则集滴信息事件,其他事件,删除source_line场:

SET GLOBAL dragnet.log_error_filter_rules =  'IF prio>=INFORMATION THEN drop. IF EXISTS source_line THEN unset source_line.';

效果类似于过滤由log_sink_internal一个设置过滤器log_error_verbosity=2

例2:这个规则限制在不超过每60秒信息事件:

SET GLOBAL dragnet.log_error_filter_rules =
  'IF prio>=INFORMATION THEN throttle 1/60.';

一旦你有了过滤配置设置为你的愿望,考虑分配dragnet.log_error_filter_rules使用SET PERSIST而不是SET GLOBAL要坚持在服务器重新启动设置。另外,添加设置服务器选项文件。

停止使用过滤的语言,首先删除它从错误日志记录组件集。通常这意味着使用不同的过滤器组件,而不是没有过滤组件。例如:

SET GLOBAL log_error_services = 'log_filter_internal; log_sink_internal';

再次,考虑使用SET PERSIST而不是SET GLOBAL要坚持在服务器重新启动设置。

然后卸载过滤器log_filter_dragnet组成:

卸载组件的文件:/ / component_log_filter_dragnet”;

以下各节描述方面log_filter_dragnet更详细的操作:

log_filter_dragnet规则语言

下面的语法定义的语言log_filter_dragnet过滤规则。每个规则是如果声明由一期终止(.)字符。语言是大小写不敏感。

rule:如果condition然后action[ ElseIfcondition然后action]…[其他action]condition:{fieldcomparatorvalue| [不]的存在field|condition{或} |condition}action:{降|节流{count|count/window_size} |集field[:= | =]value|撤消[field] }field:{core_field|optional_field|user_defined_field}core_field开放时间:{ |味精| |标签错误代码错误| _ | _符号| SQL _ } |子系统状态optional_field:{ os_errno | os_errmsg |用户|主机|螺纹| query_id | source_file | source_line |功能}user_defined_fieldsequence of characters in [a-zA-Z0-9_] classcomparator: {== | != | <> | >= | => | <= | =< | < | >}value:{string_literal|integer_literal|float_literal|error_symbol|severity}countinteger_literalwindow_sizeinteger_literalstring_literalsequence of characters quoted as '...' or "..."integer_literalsequence of characters in [0-9] classfloat_literalinteger_literalinteger_literal]error_symbolvalid MySQL error symbol such as ER_ACCESS_DENIED_ERROR or ER_STARTUPseverity:{误差|警告|信息}

比较简单的条件字段值或试验场的存在。构建更复杂的条件下,使用AND运营商。两运算符具有相同的优先级,评估左到右。

逃脱一个字符在一个字符串,它之前由一个反斜杠(\)。一个是必须包含反斜杠本身或字符串引用字符,其他人物可选。

为方便,log_filter_dragnet支持特定领域的符号名称的比较。在适用的情况下,优先为标志的可读性和可移植性的数值。

  • 事件的严重程度值1, 2和3可以被指定为ERROR警告,和INFORMATION。严重的符号只是在比较公认的优先场。这些比较是等价的:

    IF prio == INFORMATION THEN ...
    IF prio == 3 THEN ...
    
  • 错误代码可以以数字形式或符号指定相应的误差。例如,ER_STARTUP是错误的符号名称一千四百零八。在一系列的错误代码的数字和符号,看第三,“服务器错误代码和消息”。错误符号只是在比较公认的err_code字段和自定义字段。这些比较是等价的:

    IF err_code == ER_STARTUP THEN ...IF err_code == 1408 THEN ...

符号名称可以被指定为字符串与字符串字段的比较,但在这种情况下,没有特殊意义的名字字符串log_filter_dragnet不解决他们相应的数值。另外,错别字可能检测不到,而抛出一个错误立即配置尝试使用一个无符号服务器未知。

log_filter_dragnet规则操作

log_filter_dragnet支持这些行动的过滤规则:

  • drop:放弃当前日志事件(不记录)。

  • throttle:将限速降低匹配特定条件的事件日志的详细。争论表明率的形式countcount/window_size。这个count值表示日志每个时间窗口允许的事件数。这个window_size价值是在几秒钟的时间窗口;如果省略,缺省的窗口是60秒。值必须是整数常量。

    这一规则油门插件关闭信息到5每60秒:

    IF err_code == ER_PLUGIN_SHUTTING_DOWN_PLUGIN THEN throttle 5.
    

    这条规则使错误和警告和信息性消息以每小时1000每小时100:

    IF prio <= INFORMATION THEN throttle 1000/3600 ELSE throttle 100/3600.
    
  • set:将值赋给字段(如果它不是已经引起磁场的存在)。在随后的规则,存在对域名的测试是真实的,和新的价值,可以通过比较条件测试。

  • unsetdiscard:在场。在subsequent规则,存在对域名的测试是错误的,并对任何字段的值比较是不对的。

    在特殊情况下,条件是指一个字段名,字段名称如下unset是可选的,撤消被命名的字段。这些规则是等价的:

    IF myfield == 2 THEN unset myfield.
    IF myfield == 2 THEN unset.
    
log_filter_dragnet规则领域

log_filter_dragnet支持核心,可选的,和自定义字段规则:

  • 核心领域是自动设置的错误事件。然而,在事件的存在是没有保证的因为一个核心领域,像任何类型的字段,可以通过过滤规则设置。如果是这样的话,这场被后来的规则的规则集和执行后过滤器组件丢失(如日志作家)。

  • 可选字段通常是不存在的但可能存在某些事件类型。目前,可选字段提供了额外的事件信息的适当性和可用性。

  • 一个用户定义的字段是一个名字,是不是已经定义为核心或可选字段的任何领域。一个用户定义的字段不到创造的存在set行动

通过前面的描述暗示,任何领域可能是不存在的,因为它是不会发生的,或是由一个废弃的过滤规则。日志作家,现场效果没有是作家特有的。例如,一个作家可能忽略日志消息字段,表示该字段是失踪,或替代默认。有疑问的时候,用过滤规则设置的字段,然后看看日志作家不能用它。

这些领域的核心领域:

  • time

    事件的时间戳

  • msg

    事件消息的字符串

  • prio

    事件的优先级,来指示错误,警告,或注意/信息事件。这场相当于严重syslog

    在比较中,每个优先级可以被指定为一个象征性的严重性名称或整数。严重的符号只是在比较公认的prio场。这些比较是等价的:

    IF prio == INFORMATION THEN ...IF prio == 3 THEN ...

    下表显示了允许的优先级别。

    事件类型优先符号数字优先级
    错误事件ERROR
    警告事件WARNING
    注/新闻事件INFORMATION

    优先级值遵循优先级越高值越低的原则,反之亦然。优先级值在1点开始的最严重的事件(错误)和减少严重事件增加。例如,抛弃比警告优先级较低的事件,优先值高于试验WARNING

    如果事先警告然后滴&#62;。

    the following the examples显示log_filter_dragnet规则来实现一个相似的影响log_error_verbosity允许的值log_filter_internal滤波器:

    • (错误的只log_error_verbosity=1):

      如果事先&#62;错误然后下降。
    • 错误和警告(log_error_verbosity=2):

      如果事先警告然后滴&#62;。
    • 错误,警告和笔记(log_error_verbosity=3):

      如果事先&#62;信息然后下降。

      这条规则可以被省略,因为没有prio值大于信息,所以有效滴什么

  • err_code

    数字事件的错误代码。在比较,测试值可以指定为一个符号错误的名称或整数。错误符号只是在比较公认的err_code字段和自定义字段。这些比较是等价的:

    IF err_code == ER_ACCESS_DENIED_ERROR THEN ...IF err_code == 1045 THEN ...
  • err_symbol

    事件错误的象征,作为一个字符串;例如,'ER_DUP_KEY'_符号错误价值观是用来识别特定的线比日志输出中使用的过滤规则的比较,因为log_filter_dragnet不解决比较值指定为等效的数字错误代码字符串。

  • SQL_state

    事件SQLSTATE值,作为一个字符串;例如'23000'

  • subsystem

    在该事件发生的子系统。可能的值是InnoDB(TheInnoDB存储引擎),Repl(复制子系统),服务器(其他)

可选字段分为以下几类:

有关错误的更多信息,如错误指示由操作系统或错误标签:

  • OS_errno

    操作系统错误

  • OS_errmsg

    操作系统错误信息

  • label

    相应的标签prio价值,作为一个字符串。过滤规则可以更改日志作家,支持自定义标签的标签。标签价值观是用来识别特定的线比日志输出中使用的过滤规则的比较,因为log_filter_dragnet不解决比较值指定为字符串的等效数值优先。

识别客户的事件发生:

  • user

    客户端用户

  • host

    客户端主机

  • thread

    线程ID

  • query_id

    查询ID

调试信息:

  • source_file

    在该事件发生的源文件。文件名应该省略任何引导路径。例如,测试的sql/gis/distance.cc文件,写的比较喜欢这个:

    IF source_file == "distance.cc" THEN ...
  • source_line

    线内的源文件在该事件发生的。

  • function

    在该事件发生的功能

  • component

    组件或插件的事件发生了。

5.4.2.6错误日志消息格式

每个错误日志库(作家)组件有一个特性的输出格式,它使用写信息到它的目的地,但其他因素也会影响信息的内容:

所有日志作家身份包含在错误日志消息,线程内mysqld负责撰写消息。这表明服务器的哪一部分产生的信息,并与通用查询日志和慢查询日志的信息一致,包括连接的线程ID。

对于log_sink_internal输出格式

此日志作家产生的传统的错误日志输出。它写的邮件使用此格式:

timestamp thread_id [severity] [err_code] [subsystem] message

这个[]方括号中的文字消息格式。他们不显示的字段是可选的。

这个[err_code]subsystem]领域是MySQL 8.0.4和8.0.5补充道,分别。他们将从旧的服务器产生的日志丢失。日志分析器可以把这些领域作为消息的文本,将目前只有服务器最近到包括他们写的日志部分。解析器必须处理err_code部分err_code]字符串值作为指标

实例:

2018-03-22T12:35:47.538083Z 0 [Note] [MY-012487] [InnoDB] InnoDB: DDL log recovery : begin
2018-03-22T12:35:47.550565Z 0 [Warning] [MY-010068] [Server] CA certificate /var/mysql/sslinfo/cacert.pem is self signed.
2018-03-22T12:35:47.669397Z 4 [Note] [MY-010051] [Server] Event Scheduler: scheduler thread started with id 4
2018-03-22T12:35:47.550939Z 0 [Note] [MY-010253] [Server] IPv6 is available.
对于log_sink_json输出格式

JSON格式的日志作家产生消息的JSON对象包含键/值对。例如:

{ "prio": 3, "err_code": 10051, "subsystem": "Server",
  "source_file": "event_scheduler.cc", "function": "run",
  "msg": "Event Scheduler: scheduler thread started with id 4",
  "time": "2018-03-22T12:35:47.669397Z", "thread": 4,
  "err_symbol": "ER_SCHEDULER_STARTED", "SQL_state": "HY000",
  "label": "Note" }
对于log_sink_syseventlog输出格式

系统日志作家产生输出符合用于本地平台的系统日志格式。

系统变量影响的错误日志格式

这个log_timestamps系统变量控制在写入错误日志消息的时间戳的时间区(以及通用查询日志和慢查询日志文件)。允许值UTC(默认的),SYSTEM(本地系统时区)

5.4.2.7冲洗和错误日志文件重命名

如果你把错误日志使用FLUSH ERROR LOGSFLUSH LOGS,或mysqladmin刷新日志,服务器关闭和重开任何错误日志文件,它是写作。要重命名错误日志文件,这样做之前手动冲洗。冲洗日志然后打开一个新文件与原文件名。例如,假设一个日志文件名host_name.err,重命名文件并创建一个新文件,使用下面的命令:

MVhost_name错误host_name错误logsmv oldmysqladmin冲洗。host_name.err老backup-directory

在Windows中,使用重命名而不是MV

如果一个错误日志文件的位置是不可写的日志服务器,冲洗操作未能创建新的日志文件。例如,在Linux上,服务器可能会写入错误日志的/var/log/mysqld.log文件,其中/是/日志目录是由root不可写的mysqld。关于这个案件的处理信息,看第5.4.7,服务器日志维护”

如果服务器没有写入指定的错误日志,错误日志文件重命名时没有错误日志刷新。

5.4.3通用查询日志

通用查询日志是一个通用的记录什么的mysqld是做。服务器将信息写入此日志当客户端连接或断开连接,并记录每个SQL语句从客户机接收到的。通用查询日志可以是非常有用的当你怀疑一个客户一个错误,想知道到底是什么客户送mysqld

这表明,当一个客户端连接也包括每一行using connection_type指示用于建立连接的协议。connection_type是一个TCP / IP(TCP/IP建立没有SSL连接),SSL/TLS(TCP/IP建立SSL连接),插座(UNIX套接字文件连接),Named Pipe(Windows命名管道连接),或共享内存(Windows共享内存连接)。

mysqld写语句的顺序查询日志,它接收他们,这可能不同于它们的顺序执行。这是在测井,二进制日志的对比,其中语句都写在他们执行,但在任何锁将被释放。此外,查询日志可能包含报表数据而只选择这样的陈述没有写入二进制日志。

使用复制主服务器的二进制日志语句时,由其奴隶收到报表写入每个从查询日志。陈述如果客户端读取事件的主服务器的查询日志中写入mysqlbinlog实用并传递给服务器

然而,使用基于行的二进制日志时,更新行的变化而不是SQL语句发送,因此这些陈述没有写入查询日志时binlog_format。一个给定的更新也可能不被写入日志时,该变量被设置为MIXED,根据使用说明。看到第17.2.1.1,”优势和基础,基于行的复制”语句的缺点为更多的信息

默认情况下,禁用的通用查询日志。指定初始的通用查询日志状态明确,使用--general_log[={0|1}]。没有参数或参数为1,--general_log使得日志。与0的说法,这个选项禁用日志。指定日志文件的名称,使用--general_log_file=file_name。指定日志的目的,使用--log-output(如5.4.1部分,“选择通用查询和慢查询日志输出目的地”

如果你不指定名称的通用查询日志文件,默认名称是host_name.log。服务器创建的数据目录的文件除非绝对路径名是给指定一个不同的目录。

禁用或启用通用查询日志或在运行时更改日志文件的名称,使用全局general_loggeneral_log_file系统变量。集general_log0(或关闭)禁用日志或1(或ON)使它。配置general_log_file指定的日志文件的名称。如果日志文件已经打开,它是关闭的,新的文件被打开。

当通用查询日志启用,服务器将输出写入指定的任何目的地--log-output选择或log_output系统变量。如果你启用了日志服务器打开日志文件写入启动信息了。然而,进一步记录查询文件不发生除非文件日志的目的是选择。如果目标是NONE,服务器写没有查询即使一般日志启用。设置日志文件的名称有没有影响,如果记录日志的目的值不包含文件

重新启动服务器和日志冲洗不产生新的通用查询日志文件被生成(虽然冲洗关闭和重开吧)。重命名文件并创建一个新文件,使用下面的命令:

shell> mv host_name.log host_name-old.log
shell> mysqladmin flush-logs
shell> mv host_name-old.log backup-directory

在Windows中,使用重命名而不是MV

你也可以重命名的通用查询日志文件在运行时通过禁用日志:

SET GLOBAL general_log = 'OFF';

与禁用日志记录,日志文件重命名外;例如,从命令行。然后再启用日志:

SET GLOBAL general_log = 'ON';

这种方法可以在任何平台上,不需要重新启动服务器。

会话sql_log_off变量可以被设置为打开(放)OFF禁用或启用通用查询当前连接记录。

在写给通用查询日志报表密码改写的服务器不在普通文本字面上出现。密码修改可以被抑制的通用查询日志通过启动服务器与--log-raw选项此选项可用于诊断目的是有用的,看报表服务器收到的确切的文字,但出于安全原因,不建议用于生产。参见第6.1.2.3,“密码登录”

密码改写的一个含义是,语句不能被解析(由于,例如,语法错误)不写入通用查询日志因为他们不能被称为是密码免费。用例需要记录所有的陈述,包括那些错误,应该使用--log-raw选项,铭记这也绕过密码改写。

密码改写只发生在纯文本密码预计。对于语法,期待一个密码哈希值的陈述,没有重写发生。如果一个纯文本密码提供这样的语法错误,密码登录,而无需重写。

这个log_timestamps系统变量控制在写入通用查询日志文件消息的时间戳的时间区(以及慢查询日志文件和错误日志)。它没有一般查询日志和慢查询日志信息写入日志表的时间区的影响,但从表中检索行可以转换从本地系统时区的任何所需的时间区CONVERT_TZ()或通过设置会话time_zone系统变量

5.4.4二进制日志

二进制日志包含事件描述数据表的数据库的变化如表创建操作或调整。它也包含报表可能更改事件(例如,一个DELETE匹配没有行),除非使用基于行的日志。二进制日志还包含有关每个多久声明把更新的数据。二进制日志有两个重要的目的:

  • 为复制,在一个主复制服务器的二进制日志提供了记录数据的变化被发送到从服务器。主服务器发送包含在二进制日志的奴隶的事件,并执行这些事件作出同样的数据改变了主。看到“部分复制17.2,执行”

  • 某些数据恢复操作需要使用二进制日志。在备份已经恢复,在二进制日志进行备份后进行记录的事件重新执行。这些事件带来的数据库目前的备份点。看到7.5节,“时间点(增量)使用二进制日志恢复”

二进制日志不用于报表等SELECTSHOW不修改数据。记录所有的陈述(例如,确定一个问题查询),使用通用查询日志。看到5.4.3节,“通用查询日志”

运行一个二进制日志服务器启用使性能稍慢。然而,福利的二进制日志使你设置的复制和还原操作一般大于这轻微的性能下降。

二进制日志是有弹性的意外停止。只有完整的事件或交易记录或回读。

在写入二进制日志报表密码改写的服务器不在普通文本字面上出现。参见第6.1.2.3,“密码登录”

以下讨论的一些服务器的选项和变量影响的二进制日志操作。一个完整的列表,参见第17.1.6.4,二进制日志记录选项和变量”

二进制日志是默认启用(的log_bin系统变量设置为ON)。唯一的例外是如果你使用mysqld初始化数据目录手动调用它的--initialize--initialize-insecure选项,当二进制日志默认是禁用的,但也可以通过指定--log-bin选项

禁用二进制日志,你可以指定--skip-log-bin--disable-log-bin在启动选项。如果这些选项指定--log-bin还规定,指定的选项后优先。

这个--log-slave-updates--slave-preserve-commit-order选择需要的二进制日志。如果您禁用二进制日志,要么忽略这些选项,或指定--skip-log-slave-updates--skip-slave-preserve-commit-order。MySQL默认禁用这些选项时--skip-log-bin--disable-log-bin指定。如果你指定--log-slave-updates--slave-preserve-commit-order在一起--skip-log-bin--disable-log-bin、警告或发出错误信息。

这个--log-bin[=base_name]选项用于二进制日志文件指定的基名称。如果你不提供——日志本选项,MySQL的使用binlog作为默认的二进制日志文件的基名称。与早期版本兼容,如果你的供应——日志本没有字符串或空字符串的选择,基名称默认为host_name-bin,使用的主机名。建议您指定一个名称,这样如果主机名的变化,你可以继续使用相同的二进制日志文件的名字(见部分b.5.7”,众所周知的问题,在mysql”)。如果你提供一个扩展的日志名称(例如,--log-bin=base_name.extension),扩展名是默默的被忽视。

mysqld追加一个数字扩展到二进制日志库的名字产生的二进制日志文件名称。数量的增加,每一次服务器创建新的日志文件,从而创建文件的有序系列。服务器创建一个新文件系列在每次启动或刷新日志。服务器还创建了一个新的二进制日志文件自动当前日志的大小达到后max_binlog_size。一个二进制日志文件可能变得比max_binlog_size如果您使用的是大交易,因为交易是在一块写入文件,文件之间没有分裂。

要跟踪哪些二进制日志文件已被使用,mysqld还创建了一个二进制日志索引文件包含所有使用二进制日志文件的名字。默认情况下,这具有相同的基名称为二进制日志文件的扩展'.index'。你可以用改变二进制日志索引文件的名称--log-bin-index[=file_name]选项你不应该手动编辑此文件时mysqld运行;这样做会混淆mysqld

术语二进制日志文件一般是指个人编号包含数据库文件事件。术语二进制日志集体表示编号的二进制日志文件集和索引文件。

二进制日志文件的默认位置和二进制日志索引文件的数据目录。你可以使用--log-bin选项指定一个替代的位置,通过对基地的名字加入领先的绝对路径名来指定一个不同的目录。当服务器读取二进制日志索引文件的录入,跟踪二进制日志文件已被使用,它检查条目是否包含相对路径。如果是这样,该路径的相对与绝对路径替换设置使用--log-bin选项一个绝对路径记录在二进制日志索引文件保持不变;在这种情况下,索引文件必须手动编辑,使一个新的路径或路径被使用。二进制日志文件的基名称和任何指定的路径是可用的log_bin_basename系统变量

在MySQL 5.7,服务器ID必须指定当二进制日志被启用,或服务器启动不了。在MySQL 5.0,的server_id系统变量默认设置为1。服务器可以从默认的ID二进制日志时启用,但信息性消息发出后如果不指定服务器ID显式使用--server-id选项所使用的复制拓扑中的服务器,你必须指定一个唯一的非零服务器ID为每个服务器。

客户有SYSTEM_VARIABLES_ADMINSUPER特权可以禁用自己的报表使用二进制日志SET sql_log_bin=0声明。看到第5.1.7,服务器“系统变量”

默认情况下,服务器日志事件的长度以及事件本身和使用它来验证事件被正确写入。你也可以导致服务器的事件编写校验设置binlog_checksum系统变量。当读取二进制日志后,主人使用事件长度默认的,但可以使用校验和,如果可以通过启用master_verify_checksum系统变量。从I/O线程也验证了从主接收事件。你会从SQL线程使用校验和,如果可以当读取中继日志使slave_sql_verify_checksum系统变量

记录在二进制日志中的事件的格式依赖于二进制日志格式。三格式类型的支持:基于行的记录,基于语句的记录和混合基础测井。使用二进制日志格式取决于MySQL版本。为日志格式的一般描述,看第5.4.4.1,“二进制日志格式”。关于二进制日志格式的详细信息,参见内部:MySQL的二进制日志

服务器计算--binlog-do-db--binlog-ignore-db选择以同样的方式作为它的--replicate-do-db--replicate-ignore-db选项关于如何做到这一点,看到第17.2.5.1,“数据库级的复制和二进制日志记录选项”的评价

复制从服务器开始的--log-slave-updates设置默认启用,这意味着从写自己的二进制日志中的任何数据的修改是从复制主收到。二进制日志必须为这工作设置启用(见第17.1.6.3,“复制从选项和变量”)。此设置允许奴隶作为掌握连锁复制其他的奴隶。

你可以删除所有的二进制日志文件RESET MASTER声明,或一个子集的他们PURGE BINARY LOGS。看到第13.7.7.6,复位”语法”,和第13.4.1.1,“清除二进制日志语法”

如果您使用的是复制的,你不应该删除旧的二进制日志文件在主直到你确信没有奴隶仍然需要使用它们。例如,如果你的奴隶永远不会超过三天,每天一次,你可以执行mysqladmin刷新日志在主然后删除任何记录,超过三天的。你可以删除文件手动,但最好使用PURGE BINARY LOGS,这也安全更新的二进制日志索引文件(和你可以把日期参数)。看到第13.4.1.1,“清除二进制日志语法”

你可以显示与二进制日志文件的内容mysqlbinlog功用这可能是有用的当你想重新处理报表进行恢复操作的日志。例如,你可以从二进制日志更新MySQL服务器如下:

shell> mysqlbinlog log_file | mysql -h server_name

mysqlbinlog也可以用来显示复制从中继日志文件内容,因为他们都是使用同一格式的二进制日志文件。上的更多信息mysqlbinlog实用工具和如何使用它,看4.6.8“,”mysqlbinlog用于处理二进制日志文件实用程序”。关于二进制日志和恢复操作的更多信息,参见7.5节,“时间点(增量)使用二进制日志恢复”

二进制日志完成后立即声明或交易完成而在任何锁释放或任何犯了。这确保了日志中记录的提交顺序。

以非事务表更新后立即执行存储在二进制日志。

在一个未提交的事务,所有的更新(UPDATEDELETE,或INSERT改变事务表等)InnoDB桌上的桌子COMMIT报表服务器收到的。在这一点上,mysqld将整个事务的二进制日志之前COMMIT执行

以非事务表不能回滚修改。如果一个事务回滚包括非事务表的修改,整个交易记录与ROLLBACK声明最后确保那些表修改复制。

当一个线程处理事务的开始,它分配一个缓冲区binlog_cache_size缓存报表。如果一个语句比这个大,线程打开临时文件存储事务。临时文件删除时,线程结束。

这个Binlog_cache_use状态变量显示使用该缓冲区的交易数量(可能是一个临时文件)存储报表。这个Binlog_cache_disk_use状态变量显示多少这些交易实际上已经使用临时文件。这两个变量可用于调谐binlog_cache_size一个足够大的值,避免了临时文件的使用。

这个max_binlog_cache_size系统变量(默认4GB,这也是最大的)可以用来限制用于缓存多个语句的事务的总大小。如果交易超过多少字节,它失败并回滚。最小值是4096。

如果您使用的是二进制日志和基于行的日志,并发插入转换成正常的插入CREATE ... SELECTINSERT ... SELECT声明.这是为了确保你可以重新应用日志备份操作期间创建的表的精确副本。如果您使用的是基于语句的日志,原来的语句写入日志。

二进制日志格式有一些已知的限制,会影响恢复的备份。看到17.4.1节,“复制的特点和问题”

用于存储程序的二进制日志进行描述23.7节,“二进制日志存储程序”

注意,二进制日志格式不同,MySQL 8从MySQL的早期版本中,由于增强的复制。看到第17.4.2,“复制MySQL版本之间的兼容性”

写入二进制日志文件和二进制日志索引文件的处理,以同样的方式写MyISAM表看到第b.5.3.4,“MySQL如何处理全盘”

默认情况下,二进制日志同步到磁盘在每个写(sync_binlog=1)。ifsync_binlog没有启用,而操作系统或机器(不仅仅是MySQL服务器)坠毁,有机会的二进制日志的最后陈述可能会丢失。为了防止这一点,使sync_binlog系统变量同步二进制日志到磁盘后每N实施组。看到第5.1.7,服务器“系统变量”。。。。。。。《safest价值sync_binlog1(默认值),但这也是最慢的。

在早期的MySQL版本,如果有事故发生机会的表格内容和二进制日志内容之间的不一致性,即使sync_binlog设置为1。例如,如果您使用的是InnoDB表和MySQL服务器的过程COMMIT语句,它写了很多准备好的事务序列的二进制日志,同步二进制日志,然后提交到交易InnoDB。如果服务器崩溃的那些业务之间,事务会回滚InnoDB在重新启动,但在二进制日志仍然存在。通过使在以前的版本中解决了这一问题InnoDB在XA事务提交支持两相。在5.8.0高,的InnoDB支持两阶段提交在XA事务总是启用。

InnoDB支持两阶段提交在XA事务确保二进制日志InnoDB数据文件同步。然而,MySQL服务器也应该配置同步二进制日志和InnoDB在提交的事务日志到磁盘。这个InnoDB默认情况下,日志是同步的,sync_binlog=1确保二进制日志是同步的。隐性的影响InnoDB支持两阶段提交在XA事务和sync_binlog=1是在崩溃后重启,后做一个回滚事务,MySQL服务器扫描新的二进制日志文件收集交易xid值计算的二进制日志文件中的最后一个有效位置。MySQL服务器然后告诉InnoDB完成任何准备交易被成功写入到二进制日志,并截断二进制日志的最后有效位置。这确保了二进制日志反映了数据InnoDB表,因此奴隶保持与主同步因为它不接受这一说法已回滚。

如果发现在MySQL服务器崩溃恢复的二进制日志比它应该是,它缺乏至少一个成功提交InnoDB交易这不应该发生,如果sync_binlog=1和磁盘/文件系统做一个实际的同步时,他们被要求(有的没有),所以服务器打印一个错误信息The binary log file_name is shorter than its expected size。在这种情况下,这是不正确的,二进制日志复制应该重新从主数据的新的快照。

下列系统变量的会话的值写入二进制日志被复制的奴隶当分析二进制日志:

5.4.4.1二进制日志格式

服务器使用多个日志格式的二进制日志中记录的信息:

  • 在MySQL复制能力最初是基于SQL语句从主人到奴隶的传播。这就是所谓的基于语句的日志。你可以因为这个格式是由启动服务器与应用--binlog-format=STATEMENT

  • 进入基于行的日志(默认),主写事件到二进制日志表明每个表行的影响。你可以导致服务器开始使用基于行的日志--binlog-format=ROW

  • 第三个选项是可用的:混合记录。基于混合测井,测井时默认使用的语句,但日志模式自动切换到基于行的在某些情况下,如下所述。你能够使MySQL使用混合记录明确的开始mysqld与选择--binlog-format=MIXED

日志格式也可以设置或由存储引擎使用限制。这有助于消除的问题时,复制了主人和奴隶,使用不同的存储引擎之间的某些陈述。

与基于语句的复制,有可能复制不确定的报表问题。在决定是否一个给定的声明基于语句的复制是安全的,MySQL决定它是否能保证声明可以复制使用语句基础测井。如果MySQL无法保障,它标志着该声明可能不可靠,发出警告,声明可能无法登录安全声明格式

你可以通过使用MySQL的基于行的复制来避免这些问题。

5.4.4.2设置二进制日志格式

你可以选择通过启动MySQL服务器的二进制日志格式--binlog-format=type。支持的值type是:

  • STATEMENT原因是基于语句的日志。

  • ROW原因是基于行的日志。这是默认的。

  • MIXED使测井使用混合格式

日志格式也可以在运行时切换。集的全球价值binlog_format系统变量指定客户端连接到变更后的格式:

MySQL的&#62;SET GLOBAL binlog_format = 'STATEMENT';MySQL的&#62;SET GLOBAL binlog_format = 'ROW';MySQL的&#62;SET GLOBAL binlog_format = 'MIXED';

一个客户端可以控制日志记录格式为自己的报表设置会话值binlog_format

MySQL的&#62;SET SESSION binlog_format = 'STATEMENT';MySQL的&#62;SET SESSION binlog_format = 'ROW';MySQL的&#62;SET SESSION binlog_format = 'MIXED';
笔记

每个MySQL服务器可以设置自己的只有自己的二进制日志格式(是否真实binlog_format设置全局或会话范围)。这意味着改变记录格式的复制不会导致奴隶改变日志格式以匹配。(当使用声明的方式,binlog_format系统变量是不可复制的;当使用混合的ROW记录模式,它是复制的但被奴隶被忽视。)而复制是持续的变化对掌握二进制日志格式,或也没有改变它的奴隶可能会导致复制失败与错误等Error executing row event: 'Cannot execute statement: impossible to write to binary log since statement is in row format and BINLOG_FORMAT = STATEMENT.'

改变全局或会话binlog_format价值,你必须有SYSTEM_VARIABLES_ADMINSUPER特权

有几个原因,一个客户可能需要设置二进制日志每个会话的基础上的:

  • 一个会话,使许多小的变化,数据库可能要使用基于行的日志。

  • 一个会话执行匹配在多行更新WHERE条款可能要使用基于语句的记录因为它会更有效地记录几句比多行。

  • 有些语句需要在掌握大量的执行时间,但结果在短短的几行被修改。它可能会因此有利于复制他们使用基于行的日志。

也有例外的时候,你不能在运行时切换复制格式:

  • 从在存储函数或触发器。

  • 如果会话是目前基于行的复制模式,具有开放的临时表。

  • 从基于行的或混合的复制模式的复制模式的声明。从MySQL 8.0.4,你不能完成这个过渡,因为CREATE TEMPORARY TABLE语句可能已经从二进制日志略。

试图转换格式,在这种情况下导致错误。

在运行时切换复制格式时不建议任何临时表的存在,因为临时表记录,仅当使用基于语句的复制,而基于行的复制(从MySQL 8.0.4)混合复制,他们没有登录。

如果你使用的是InnoDB表和事务隔离级别READ COMMITTEDREAD UNCOMMITTED只有基于行的记录,可以使用。它是可能的更改日志格式STATEMENT,但在运行时,这样做会导致错误,因为很快InnoDB不能再执行插入

与二进制日志格式设置ROW许多变化都写入,使用基于行的二进制日志格式。然而,一些变化,仍然使用基于语句的格式。例子包括所有DDL(数据定义语言)语句,如CREATE TABLEALTER TABLE,或DROP TABLE

这个--binlog-row-event-max-size选项是能够通过复制行服务器。行存储在具有字节不超过此选项的值的大小的二进制日志。该值必须是256的倍数。默认值是8192。

警告

当使用基于语句的日志为复制,在主站和从站的数据如果一个语句是在这样一种方式,数据修改设计成不同的可能不确定性;即是留给查询优化器将。总的来说,这甚至不是复制之外的一种很好的实践。对于这一问题的详细解释,见部分b.5.7”,众所周知的问题,在mysql”

有关日志复制奴隶不停,看第17.2.4,“复制继电器和状态日志”

5.4.4.3混合二进制日志格式

当运行在MIXED日志格式,服务器自动切换表为基础的基于行的记录在下列条件下:

在以前的版本中,当混合二进制日志格式被使用,如果一个语句是由行和执行声明有任何临时表的会话记录,所有后续的陈述被视为不安全的,登录到使用基于行的格式由会话的所有临时表均下降。从MySQL 8.0.4,对临时表的操作没有登录混合二进制日志格式,并在会话的临时表的存在对测井模式用于每个语句没有影响。

笔记

警告如果你试图执行一个语句中使用基于语句的记录,应该使用基于行的日志生成。警告显示在客户端(在输出SHOW WARNINGS)通过mysqld错误日志。警告添加到SHOW WARNINGS表中的每一次这样的语句被执行。然而,只有第一个语句生成每个客户端会话的警告写入错误日志,防止洪水的日志。

除了以上的决策引擎,个人还可以确定日志格式表中使用时,信息更新。一个发动机的记录功能,可以定义如下:

  • 如果一个引擎支持基于行的记录,发动机被称为行测能力

  • 如果一个引擎支持基于语句的记录,发动机被称为测井能够声明

一个给定的存储引擎可以支持一个或两个记录格式。下表列出了每个引擎支持的格式。

存储引擎行记录支持日志支持声明
ARCHIVE
BLACKHOLE
CSV
EXAMPLE
FEDERATED
HEAP
InnoDB是的事务隔离级别时REPEATABLE READSERIALIZABLE;otherwise。
MyISAM
MERGE
NDB

一项是否被记录和记录模式可根据声明的类型确定(安全,不安全,或二进制注入),二进制日志格式(STATEMENT,或MIXED),和存储引擎的日志记录功能(陈述能力,行能力,,或没有)。(二元注入是指记录必须记录的变化格式)

语句可以登录或没有警告;没有报表没有记录,但生成日志中的错误。这是决定如下表所示。类型binlog_formatSLC,和RLC列提纲的条件,和错误登录列代表相应的行动SLC代表测井能够声明,和RLC代表行测能力

类型binlog_formatSLCRLC错误登录
**错误:无法执行语句:二进制日志是不可能的因为至少一个发动机是既不能和语句不能行。-
保险柜STATEMENTSTATEMENT
保险柜MIXEDSTATEMENT
保险柜ROW错误:无法执行语句:二进制日志是不可能的因为BINLOG_FORMAT = ROW和至少一个表使用的存储引擎,不能够基于行的日志。-
不安全的STATEMENT警告:不安全binlogged在声明语句格式,自BINLOG_FORMAT = STATEMENTSTATEMENT
不安全的MIXED错误:无法执行语句声明:不安全的二进制日志是不可能当存储引擎是有限的基于语句的记录,即使BINLOG_FORMAT = MIXED-
不安全的ROW错误:无法执行语句:二进制日志是不可能的因为BINLOG_FORMAT = ROW和至少一个表使用的存储引擎,不能够基于行的日志。
行注射STATEMENT错误:无法执行行注射:二进制日志是不可能的因为至少有一个表使用的存储引擎,不能够基于行的日志。
行注射MIXED错误:无法执行行注射:二进制日志是不可能的因为至少有一个表使用的存储引擎,不能够基于行的日志。
行注射ROW错误:无法执行行注射:二进制日志是不可能的因为至少有一个表使用的存储引擎,不能够基于行的日志。
保险柜STATEMENT错误:无法执行语句:二进制日志是不可能的因为BINLOG_FORMAT = STATEMENT和至少一个表使用的存储引擎,不能够基于语句的日志。-
保险柜MIXEDROW
保险柜ROWROW
不安全的STATEMENT错误:无法执行语句:二进制日志是不可能的因为BINLOG_FORMAT = STATEMENT和至少一个表使用的存储引擎,不能够基于语句的日志。
不安全的MIXEDROW
不安全的ROWROW
行注射STATEMENT错误:无法执行行注射:二进制日志是不可能的因为BINLOG_FORMAT = STATEMENT-
行注射MIXEDROW
行注射ROWROW
保险柜STATEMENTSTATEMENT
保险柜MIXEDSTATEMENT
保险柜ROWROW
不安全的STATEMENT警告:不安全binlogged在声明语句格式自从BINLOG_FORMAT = STATEMENTSTATEMENT
不安全的MIXEDROW
不安全的ROWROW
行注射STATEMENT错误:无法执行行注射:二进制日志是不可能的因为BINLOG_FORMAT = STATEMENT
行注射MIXEDROW
行注射ROWROW

当一个警告是由确定产生的,产生一个标准的MySQL的警告(并可使用SHOW WARNINGS)。信息也被写入mysqld错误日志。每个错误实例每个客户端连接只有一个记录错误防止洪水的日志。日志信息中包含的SQL语句的尝试。

如果一个从属服务器log_error_verbosity将显示警告消息,从打印错误日志提供有关其状态的信息,如二进制日志和中继日志坐标那里开始其工作,当它切换到另一个中继日志,当它重新连接断开后,报表,报表的记录是不安全的,等等。

5.4.4.4日志格式的MySQL数据库表的变化

在授权表的内容mysql数据库可以直接修改(例如,用INSERTDELETE)或间接(例如,用GRANTCREATE USER)。报表的影响MySQL数据库表都使用以下规则的二进制日志:

CREATE TABLE ... SELECT是一个组合的数据定义和数据操作。这个CREATE TABLE部分记录使用的报表格式、SELECT部分记录按值binlog_format

5.4.5慢查询日志

慢查询日志中包含的SQL语句,超过了long_query_time时间执行,至少需要min_examined_row_limit行进行检查。最小值和默认值long_query_time0和10,分别。该值可以指定分辨率微秒。记录到一个文件中,次写包括微秒部分。记录表,只有整数倍写;微秒部分被忽略。

默认情况下,行政报表没有记录,也没有查询不使用索引查找。这种行为可以用log_slow_admin_statementslog_queries_not_using_indexes,为后面介绍

时间去获取初始锁不能算作执行时间。mysqld写了一个声明,慢查询日志在它被执行后所有的锁被释放,所以日志顺序可能不同于执行顺序。

默认情况下,慢查询日志被禁用。指定初始的慢查询日志状态明确,使用--slow_query_log[={0|1}]。没有参数或参数为1,--slow_query_log使得日志。为一个论点,此选项禁用日志。指定日志文件的名称,使用--slow_query_log_file=file_name。指定日志的目的,使用--log-output(如5.4.1部分,“选择通用查询和慢查询日志输出目的地”

如果你不指定名称为慢查询日志文件的默认名称为host_name-slow.log。服务器创建的数据目录的文件除非绝对路径名是给指定一个不同的目录。

禁用或启用慢查询日志或在运行时更改日志文件的名称,使用全局slow_query_logslow_query_log_file系统变量。集slow_query_log0(或关闭)禁用日志或1(或ON)使它。配置slow_query_log_file指定的日志文件的名称。如果日志文件已经打开,它是关闭的,新的文件被打开。

当慢查询日志启用,服务器将输出写入指定的任何目的地--log-output选择或log_output系统变量。如果你启用了日志服务器打开日志文件写入启动信息了。然而,进一步记录查询文件不发生除非文件日志的目的是选择。如果目标是NONE,服务器写没有查询即使慢查询日志启用。设置日志文件的名称有没有影响,如果记录日志的目的值不包含文件

服务器将信息少的慢查询日志如果你使用--log-short-format选项

包括在报表写入慢查询日志慢行政报表,使用log_slow_admin_statements系统变量。管理报表包括ALTER TABLEANALYZE TABLECHECK TABLECREATE INDEXDROP INDEXOPTIMIZE TABLE,和REPAIR TABLE

包括查询不使用索引行查找语句写入慢查询日志,使log_queries_not_using_indexes系统变量。当这样的查询记录,慢查询日志可以快速成长。可以把这些查询的速度限制设置log_throttle_queries_not_using_indexes系统变量。默认情况下,这个变量是0,这意味着没有限制。积极的价值观强加限制在每分钟不使用索引的查询日志。第一个这样的查询打开一个60秒的窗口内的服务器日志中查询到了极限,从而抑制其他查询。如果有抑制时查询窗口结束,服务器日志的总结,指出了其中存在的总时间是多少。下一秒的窗口开始时,服务器日志查询下不使用索引。

服务器使用的顺序控制参数以确定是否写一个查询慢查询日志:

  1. 查询必须不是一个行政声明,或log_slow_admin_statements必须启用

  2. 查询至少需要long_query_time秒,或log_queries_not_using_indexes要启用并查询没有使用索引行的查找。

  3. 查询必须检查至少min_examined_row_limit排.

  4. 查询不可抑制的根据log_throttle_queries_not_using_indexes设置

这个log_timestamps系统变量控制在写入慢查询日志文件的时间戳的时间区(以及通用查询日志和错误日志)。它没有一般查询日志和慢查询日志信息写入日志表的时间区的影响,但从表中检索行可以转换从本地系统时区的任何所需的时间区CONVERT_TZ()或通过设置会话time_zone系统变量

所有日志行包含一个时间戳。

服务器不写,不会从一个指标存在利益因为桌子有零行或一行的慢查询日志的查询。

默认情况下,复制的奴隶不写复制查询慢查询日志。要改变这一点,使用log_slow_slave_statements系统变量

在写入慢查询日志报表密码改写的服务器不在普通文本字面上出现。参见第6.1.2.3,“密码登录”

慢查询日志可以查询,需要很长的时间来执行,因此候选人的优化。然而,检查长慢查询日志可以成为一项艰巨的任务。为了使这个过程更容易,你可以处理一个慢查询日志文件使用mysqldumpslow命令总结日志中出现的查询。看到4.6.9“,”mysqldumpslow总结慢查询日志文件”

5.4.6 DDL日志

DDL日志,或元数据日志,通过数据定义语句如生成的文件元数据操作DROP TABLEALTER TABLE。MySQL使用这个日志从一个元数据操作中发生的崩溃恢复。执行该语句时删除表T1,T2,我们需要确保t1T2下降,下降,每个表是完整的。另一个例子,这种类型的SQL语句ALTER TABLE t3 DROP PARTITION p2,我们必须确保分区是完全下降,它的定义是从表的分区列表中删除T3

一个元数据操作如刚才所描述的书面文件记录ddl_log.log,在MySQL数据目录。这是一个二进制文件;它不是人类可读的,并且你不应该试图修改任何内容。

ddl_log.log不创建直到它实际上是记录元数据报表的需要,并删除以下的成功开始mysqld。因此,该文件不在,是在一个完全正常的方式运行MySQL服务器现在是可能的。

目前,ddl_log.log可容纳1048573个条目,4 GB的大小相当。一旦超过此限制,您必须重命名或删除该文件之前,可以执行任何额外的DDL语句。这是一个已知的问题,我们正在努力解决(bug # 83708)。

没有用户配置服务器选项或变量与该文件关联。

5.4.7服务器日志维护

描述5.4节,“MySQL服务器日志”,MySQL服务器可以创建几个不同的日志文件来帮助你看到什么活动的地方。但是,你必须定期清理这些文件以确保日志不会占用太多的磁盘空间。

当使用启用日志MySQL,你可能想起来,不时地删除旧的日志文件和告诉MySQL开始记录新的文件。看到2节,“数据库备份方法

在Linux(Red Hat)的安装,您可以使用mysql-log-rotate这种脚本。如果你安装MySQL的RPM的分布,这应该是自动安装脚本。小心这个脚本,如果你使用的是二进制日志复制。你不应该删除二进制日志直到你确信它们的内容已经被所有奴隶处理。

在其他系统中,必须安装一个短剧本自己,你开始cron(或同等学历)处理日志文件。

二进制日志文件服务器的二进制日志保质期后自动删除。文件的去除可以在启动发生,当二进制日志刷新。默认的二进制日志的保质期是30天。你可以指定一个替代保质期使用binlog_expire_logs_seconds系统变量。如果您使用的是复制,你必须指定一个有效期限不低于你的奴隶可能滞后于主的最大数量。除去需求使用二进制日志,PURGE BINARY LOGS声明(见第13.4.1.1,“清除二进制日志语法”

你可以强迫MySQL开始使用新的日志文件,通过冲洗记录。冲洗时出现问题的日志FLUSH LOGS语句或执行mysqladmin刷新日志mysqladmin刷新mysqldump -冲-日志,或mysqldump -硕士-日期命令。看到第13.7.7.3“同花顺语法”4.5.2“,”mysqladmin客户管理MySQL服务器”,和4.5.4、”mysqldump一个数据库的备份计划”。此外,二进制日志刷新当其规模达到的价值max_binlog_size系统变量

FLUSH LOGS支持可选修饰符使选择性个人日志冲洗(例如,FLUSH BINARY LOGS

日志冲洗操作做如下:

  • 如果通用查询日志记录或慢查询日志记录到日志文件中启用,服务器关闭和重新打开通用查询日志文件或慢查询日志文件。

  • 如果启用了二进制日志,服务器关闭当前的二进制日志文件,并打开一个新的日志文件的下一个序列号。

  • 如果服务器开始的--log-error选择导致错误日志写入一个文件,服务器关闭和重新打开日志文件。

服务器会创建一个新的二进制日志文件当您刷新日志。然而,它只是关闭和重新打开一般慢查询日志文件。造成新的文件被创建在UNIX,重命名当前日志文件之前,冲洗它们。在冲洗的时候,服务器打开新的日志文件与原来的名字。例如,如果将军和慢查询日志文件的命名mysql.logmysql-slow.log,你可以使用一系列命令这样:

shell> cd mysql-data-directory
shell> mv mysql.log mysql.old
shell> mv mysql-slow.log mysql-slow.old
shell> mysqladmin flush-logs

在Windows中,使用重命名而不是MV

在这一点上,你可以做一个备份mysql.oldmysql-slow.old然后将它们从磁盘

类似的策略可以用来支持错误日志文件,如果有。

您可以重命名通用查询日志或慢查询日志在运行时通过禁用日志:

SET GLOBAL general_log = 'OFF';
SET GLOBAL slow_query_log = 'OFF';

与日志禁用,重命名日志文件外;例如,从命令行。然后再启用日志:

SET GLOBAL general_log = 'ON';
SET GLOBAL slow_query_log = 'ON';

这种方法可以在任何平台上,不需要重新启动服务器。

笔记

为服务器创建一个给定的日志文件在您重命名文件外,文件位置必须由服务器可写。这并非总是如此。例如,在Linux服务器的错误日志可以写为/var/log/mysqld.log,在那里/是/日志是由root不可写的mysqld。在这种情况下,不能创建新的日志文件的日志冲洗操作。

面对这种情况,您必须手动创建新日志文件以适当的ownershiop更名后原始日志文件。例如,执行这些命令root

内核&#62;mv /var/log/mysqld.log /var/log/mysqld.log.old内核&#62;install -omysql -gmysql -m0644 /dev/null /var/log/mysqld.log

5.5 MySQL服务器组件

MySQL服务器包括延长服务器功能组件的基础设施:

  • 一个组件提供了可用的服务器和其他组件服务。(相对于服务使用,服务器的一个组成部分,等于其他组件。)组件彼此只能通过他们提供的服务进行交互。

  • 这个INSTALL COMPONENTUNINSTALL COMPONENTSQL语句使组件的加载和卸载。例如:

    安装组件:组件_文件/卸载组件_密码验证”;“文件/ _ _组件验证密码;
  • 装载机服务处理组件的加载和卸载,并列出加载的组件在mysql.component系统表作为一个注册表。

组件操作影响服务器的操作和SQL语句mysql.component为系统表:

  • INSTALL COMPONENT分为服务器负载。组件成为主动的立即。装载机服务还将加载组件在mysql.component系统表。随后重新启动服务器,任何组件上市mysql.component加载的加载程序服务的启动序列期间。发生这种情况,即使服务器开始的--skip-grant-tables选项

  • UNINSTALL COMPONENT停用和卸载他们的服务器组件。装载机服务也将组件从mysql.component系统表让他们不再为后续服务器的启动顺序启动时加载。

相对于INSTALL PLUGIN声明服务器插件,theINSTALL COMPONENT声明组件提供了显著的优势,它不需要知道任何特定平台的文件名后缀命名的组件。这意味着一个特定的INSTALL COMPONENT语句可以执行统一的跨平台。

看看哪些组件安装,使用此语句:

SELECT * FROM mysql.component;

MySQL分布包括几部分组成,实现服务器扩展:

系统状态变量的服务器组件实现的是暴露在组件安装和名与特定组件的前缀开始。例如,在log_filter_dragnet错误日志过滤器组件实现系统变量命名log_error_filter_rules,它的全称是dragnet.log_error_filter_rules。引用这个变量,用全名。

关于组件的内部实现信息,看http://dev.mysql.com / DOC / dev / / /最新的MySQL服务器_ extending.html页。例如,如果你打算自己写的组件,这个信息很重要,了解组件的工作。

5.5.1错误日志组件

本节描述个体特征错误日志组件。有关配置错误日志记录的一般信息,看5.4.2部分,“错误日志”

日志组件可以过滤或沉:

  • 过滤过程的日志事件,添加,删除或修改事件字段,或删除事件完全。由此产生的事件传递到下一个日志组件命名的log_error_services系统变量的值

  • 水槽是一个目的地(作家)日志事件。通常,一个下沉过程日志事件日志消息,有一个特定的格式并将这些消息到相应的输出,如文件或系统日志。

服务器执行过滤器和沉在log_error_services他们在为指定的值。因此,最右边的部分应该是一个沉。如果右边的组件是一个过滤器,任何变化也对事件对产量没有影响。

以下各节描述个人日志组件,通过组件类型分组:

这些组件描述的类型的信息包括:

  • 组件名称和预期目的

  • 组件是否是建立在或必须装。一个加载的组件,描述指定使用加载和卸载的组件与瓮INSTALL COMPONENTUNINSTALL COMPONENT声明.

  • 组件是否可以在被多次列出log_error_services价值

  • 一个接收器组成,目的地的组件将输出。

错误日志过滤器组件

错误日志过滤器组件实现滤波的错误日志事件:

  • 如果没有过滤器组件启用,没有过滤发生。

  • 任何启用过滤器组件影响日志事件只有后来在列出的组件log_error_services价值。特别是,任何日志接收器组件上市log_error_services比任何过滤器组件之前,没有发生日志事件过滤。

的log_filter_internal组件

因为log_error_verbosity影响log_filter_internal组件,log_error_verbosity有没有影响,如果测井log_filter_internal未启用

的log_filter_dragnet组件

错误日志库组件

错误日志库组件,实现错误日志输出的作家。如果没有接收器组件启用日志输出,没有发生。

一些接收器组件的描述是指默认错误日志的目的。这是控制台或文件,通过故障显示log_error系统变量,确定了第5.4.2.2,“默认错误日志的目的配置”

的log_sink_internal组件
  • 目的:实现传统的错误日志信息的输出格式。

  • 瓮:这部分是内置的,不需要装INSTALL COMPONENT使用前

  • 多用途:不允许

  • 输出目标:写入默认的错误日志的目的。

的log_sink_json组件
  • 目的:实现JSON格式错误日志。

  • 瓮:file://component_log_sink_json

  • 多用途是允许的

  • 输出目标:JSON写日志确定基于默认的错误日志的目的输出目的地,这是由log_error系统变量:

    • 如果log_error名称的文件,JSON作家基地输出文件命名,文件名,加上一个编号NNJSON后缀,与NN00开始。例如,如果log_errorfile_name连续的情况下,log_sink_json命名的log_error_services值写入file_name00.jssonfile_name01.jsson我知道,和等等

    • 如果log_error标准错误,JSON作家写入控制台。如果log_json_writer在多次的命名log_error_services的价值,他们都写入控制台,这可能是没有用的。

的log_sink_syseventlog组件
  • 目的:错误记录到系统日志工具。这是在Windows事件日志,并syslog在UNIX和类UNIX系统。

  • 瓮:file://component_log_sink_syseventlog

  • 多用途:不允许

  • 输出目标:写入系统日志。不使用默认的错误日志的目的。

的log_sink_test组件
  • 用途:用于编写测试用例内部使用。不是用于生产使用。

  • 瓮:file://component_log_sink_test

  • 多用途是允许的

  • 输出目标:写入默认的错误日志的目的。

5.6 MySQL服务器插件

MySQL支持插件API,使服务器组件创作。插件可以在服务器启动时加载的加载和卸载,或者在运行时无需重新启动服务器。该组件支持的接口包括,但不限于,存储引擎,INFORMATION_SCHEMA表,全文解析插件和服务器扩展。

MySQL分布包括几个插件,实现服务器扩展:

  • 用于认证试图通过客户端连接到MySQL服务器的插件。插件可用于多种认证协议。看到第6.3.10,“认证”

  • 连接控制插件,使管理员能够引入的延迟增加一定次数后的连续失败的客户端连接尝试。看到第6.5.2,“连接控制插件”

  • 密码验证插件实现密码强度的政策和评估潜在的密码强度。看到第6.5.3,“密码验证组件”

  • 半同步复制插件实现接口的复制能力,允许主继续只要至少一个从回应每个交易。看到第17.3.10,“半同步复制”

  • 组复制使您能够创建一个高可用的分布式MySQL服务在一组MySQL服务器实例、数据一致性、冲突检测和解决,和组成员资格服务所有的内置。看到18章,组复制

  • MySQL企业版包括一个线程池线程管理连接插件,通过有效地管理语句执行线程大量客户端连接增加服务器性能。看到第5.6.3,MySQL企业线程池”

  • MySQL企业版包括监测和连接和查询活动日志审计插件。看到第6.5.5,MySQL企业审计”

  • MySQL企业版包括一个防火墙插件实现了应用级防火墙使数据库管理员来允许或拒绝基于匹配对接受声明模式白名单执行SQL语句。看到第6.5.6,MySQL企业防火墙”

  • 查询重写插件检查MySQL服务器收到报表可能改写他们的服务器执行之前。看到5.6.4节,“重写查询重写插件”

  • 版本标记允许创建和同步在服务器应用程序可以使用令牌,防止错误的或过时的数据访问。版本标记是基于一个插件库,实现了一个version_tokens插件和一组用户定义的函数。看到第5.6.5、”版本标记”

  • 钥匙圈插件提供安全敏感信息的存储。看到第6.5.4,“MySQL的钥匙”

  • X插件扩展的MySQL服务器可以作为一个文件存储。运行X插件允许MySQL服务器使用X协议的客户沟通,其目的是使酸兼容的存储能力MySQL作为一个文件存储。看到20.6节,“X插件”

  • 测试框架插件测试服务器服务。关于这些插件的信息,参见测试插件服务插件

以下章节描述了如何安装和卸载插件,以及如何在运行时确定哪个插件的安装和获得关于他们的信息。有关编写插件的信息,参见28.2节,“MySQL插件API”

5.6.1安装和卸载插件

服务器插件必须加载到服务器才可以使用。MySQL支持插件在服务器启动和运行时加载。还可以控制在启动时加载插件的激活状态,并把它们在运行时。

当插件被加载,关于它的信息可在运行时从INFORMATION_SCHEMA.PLUGINS表和SHOW PLUGINS声明。看到第2,“获取服务器插件的信息”

安装插件

在一个服务器的插件可以使用,但必须使用下面的方法安装。在描述,plugin_name代表一个插件名称如InnoDBcsv,或验证局

内置插件:

一个内置的插件是由服务器自动。通常,服务器使插件启动时。一些内置的插件允许被改变的--plugin_name[=activation_state]选项

注册插件mysql.plugin系统表:

这个mysql.plugin表作为一个注册的插件(除了内置的插件,不需要注册)。在启动时,服务器的负载表中列出的每个插件。通常,一个插件的加载mysql.plugin表,服务器也使插件。这是可以改变的--plugin_name[=activation_state]选项

如果服务器开始的--skip-grant-tables选项,它不咨询mysql.plugin表不载列有插件

插件的命令行选项命名:

一个插件在插件库文件可以在服务器启动时加载--plugin-load--plugin-load-add,或--early-plugin-load选项通常,一个插件启动时加载,服务器也使插件。这是可以改变的——plugin_name[=activation_state]选项

这个--plugin-load--plugin-load-add选择加载插件后内置插件和存储引擎初始化服务器启动序列期间。这个--early-plugin-load选项用于加载的插件,必须提供之前初始化内置插件和存储引擎。

每个插件的加载选项的值是一个分号分隔的列表name=plugin_libraryplugin_library价值观。每个name是一个插件加载的名字,和plugin_library是包含插件的代码库文件的名称。如果一个插件库是没有任何插件的名称命名之前,服务器加载所有插件在图书馆。该服务器查找目录中指定的插件库文件plugin_dir系统变量

插件加载选项不在登记任何插件mysql.plugin表随后重新启动,服务器装载插件又只有--plugin-load--plugin-load-add,或--early-plugin-load再次给出。即,选择生产一次性插件安装操作,持续单服务器调用。

--plugin-load--plugin-load-add,和--early-plugin-load使插件被加载时--skip-grant-tables给出(这导致服务器忽略mysql.plugin目录(续)--plugin-load--plugin-load-add,和--early-plugin-load也使插件是在启动时,无法在运行时加载加载。

这个--plugin-load-add选择补充the--plugin-load选项:

例如,这些选项:

--plugin-load=x --plugin-load-add=y

相当于这个选项:

--plugin-load="x;y"

但这些选项:

--plugin-load-add=y --plugin-load=x

相当于这个选项:

--plugin-load=x

与已安装的插件INSTALL PLUGIN声明:

一个插件在插件库文件可以在运行时的负载INSTALL PLUGIN声明。茶茶茶也registers表插件mysql.plugin表,导致服务器负载在随后的重新启动。因为这个原因,INSTALL PLUGIN要求INSERT特权的mysql.plugin

插件库文件的基名称取决于您的平台。常见的后缀.soUNIX和类UNIX系统,dll对于Windows

例子:--plugin-load选择安装一个插件在服务器启动。安装一个插件命名myplugin从一个插件库文件命名somepluglib.so在使用这些线,my.cnf文件:

[mysqld]
plugin-load=myplugin=somepluglib.so

在这种情况下,插件没有注册mysql.plugin。重新启动服务器没有--plugin-load选项使插件无法在启动时加载。

另外,该INSTALL PLUGIN语句使服务器加载插件的代码库文件在运行时:

安装插件myplugin somepluglib.so soname &#39; &#39;;

INSTALL PLUGIN也使永久插件:插件是注册上市的mysql.plugin表以确保服务器加载它在随后的重新启动。

许多插件可以装在服务器启动或运行时。然而,如果一个插件是这样设计的,它必须在服务器启动时加载和初始化,尝试加载它在运行时使用INSTALL PLUGIN产生一个错误:

MySQL的&#62;INSTALL PLUGIN myplugin SONAME 'somepluglib.so';错误1721(hy000):插件的myplugin”标为不dynamicallyinstallable。你必须停止服务器安装。

在这种情况下,你必须使用--plugin-load--plugin-load-add,或--early-plugin-load

如果插件命名都使用--plugin-load--plugin-load-add,或--early-plugin-load期权(由于较早INSTALL PLUGIN在声明)mysql.plugin表,服务器启动而写这些信息的错误日志:

[ERROR] Function 'plugin_name' already exists
[Warning] Couldn't load plugin named 'plugin_name'
with soname 'plugin_object_file'.

控制插件的激活状态

如果服务器知道一个插件启动时(例如,因为插件是为使用--plugin-load选择或是注册在mysql.plugin表),服务器的负载,使默认插件。它是可能的这样一个插件使用激活状态控制--plugin_name[=activation_state]启动选项,在plugin_name是影响插件的名称,如InnoDBcsv,或验证局。与其他选项,破折号和下划线是可以互换的选项名称。同时,激活状态值不区分大小写。例如,--my_plugin=ON--my-plugin=on是等价的

  • --plugin_name=OFF

    告诉服务器禁用插件。这也许不可能为某些内置插件,如mysql_native_password

  • --plugin_name[=ON]

    告诉服务器启用插件。(指定的选项--plugin_name没有值具有相同的效果。)如果插件初始化失败,服务器运行的插件禁用。

  • --plugin_name=FORCE

    告诉服务器启用的插件,但如果插件初始化失败,服务器没有启动。换句话说,这个选项强制服务器运行的插件启用或根本不。

  • --plugin_name=FORCE_PLUS_PERMANENT

    喜欢FORCE,但除了防止插件被卸载时。如果用户试图这样做UNINSTALL PLUGIN,发生了一个错误

插件激活状态是可见的LOAD_OPTION列的INFORMATION_SCHEMA.PLUGINS

假设CSV黑洞,和ARCHIVE内置式存储引擎和你希望服务器负载在启动时,受这些条件:服务器允许运行如果CSV初始化失败,必须要求BLACKHOLE初始化成功,应禁用资料库。要做到这一点,在一个选项文件中使用这些线:

[mysqld]
csv=ON
blackhole=FORCE
archive=OFF

这个--enable-plugin_name选择格式是同义词——plugin_name=ON。这个——禁用—plugin_name-跳过—plugin_name选择格式are synonyms for——plugin_name=OFF

如果一个插件被禁用,任何明确OFF因为它是启用或隐打开(放)但初始化失败,服务器运行需要的插件将改变方面。例如,如果插件实现了一个存储引擎,用于存储引擎的现有表变得不可访问,并试图创建表,使用默认的存储引擎存储引擎的结果,除非新表NO_ENGINE_SUBSTITUTIONSQL模式能够引起错误的发生而。

禁用插件可能需要调整其他选项。例如,如果你启动服务器使用--skip-innodb禁用InnoDB,其他innodb_xxx选项可能会需要略在启动。此外,因为InnoDB是默认的存储引擎,它将无法启动,除非您指定一个可用的存储引擎--default_storage_engine。您还必须设置--default_tmp_storage_engine

卸载插件

在运行时,该UNINSTALL PLUGIN语句禁用和卸载插件称为服务器。声明卸载插件并将其从mysql.plugin表,如果是注册在。因为这个原因,UNINSTALL PLUGIN静态的要求DELETE特权的mysql.plugin表用插件表中不再注册,服务器将不加载插件自动为后续重启。

UNINSTALL PLUGIN可以卸载插件,无论是在运行时加载INSTALL PLUGIN或在插件加载选项启动,受这些条件:

  • 无法卸载的插件,是建立在服务器。这些可以被确定为那些有图书馆名称NULL在输出INFORMATION_SCHEMA.PLUGINSSHOW PLUGINS

  • 它无法卸载插件,服务器开始--plugin_name=FORCE_PLUS_PERMANENT,以防止在运行时插件卸载。这些可识别出load_option列的INFORMATION_SCHEMA.PLUGINS

卸载插件,目前是一个插件加载选项服务器启动时加载,使用此程序。

  1. 删除任何从该插件相关的选项my.cnf文件

  2. 重新启动服务器

  3. 插件通常在启动或使用一个插件加载选项安装INSTALL PLUGIN在运行时,而不是两个。然而,除去从一个插件选项my.cnf文件可能不足以卸载它,如果在某一点INSTALL PLUGIN也被用于。如果仍然出现在输出插件INFORMATION_SCHEMA.PLUGINSSHOW PLUGINS,使用UNINSTALL PLUGIN除去mysql.plugin表然后重新启动服务器,再。

5.6.2获取服务器插件信息

有几种方法来确定哪些插件是安装在服务器:

  • 这个INFORMATION_SCHEMA.PLUGINS表包含每个插件加载一行。任何有_插件库价值NULL是建立在不可卸载

    MySQL的&#62;SELECT * FROM INFORMATION_SCHEMA.PLUGINS\G*************************** 1。行*************************** plugin_name:binlog plugin_version:1 plugin_status:主动plugin_type:存储引擎plugin_type_version:50158 plugin_library:nullplugin_library_version:空plugin_author:MySQL AB plugin_description:这是一个伪存储引擎在一个交易plugin_license代表binlog:GPL load_option:力…*************************** 10。行*************************** plugin_name:InnoDB plugin_version:1 plugin_status:主动plugin_type:存储引擎plugin_type_version:50158 plugin_library:ha_innodb_plugin.soplugin_library_version:plugin_author:1级公司plugin_description:支持事务,行级锁,和外键plugin_license:GPL load_option:对…
  • 这个SHOW PLUGINS声明显示每个插件加载一行。任何有图书馆价值NULL是建立在不可卸载

    MySQL的&#62;SHOW PLUGINS\G*************************** 1。行***************************名称:binlog状态:活跃型:存储enginelibrary:nulllicense:GPL *************************** 10。行***************************名称:InnoDB状态:活跃型:存储enginelibrary:ha_innodb_plugin.solicense:GPL…
  • 这个mysql.plugin表格显示,已注册的插件INSTALL PLUGIN。该表只包含插件的名称和库文件的名字,所以它不提供尽可能多的信息的PLUGINS表或SHOW PLUGINS声明

5.6.3 MySQL企业线程池

笔记

MySQL企业线程池是一个扩展包含在MySQL企业版,商业产品。要了解更多关于商业产品,http://www.mysql.com /产品/

MySQL企业版包括MySQL企业线程池,使用服务器插件实现。默认的线程处理模型,使用MySQL服务器执行一个线程每连接的客户端报表。随着越来越多的客户端连接到服务器并执行报表,整体性能下降。线程池的插件提供了一种替代的线程处理模型设计来减少开销,提高性能。该插件实现了一个线程池,通过有效地管理语句执行线程大量客户端连接增强了服务器的性能。

线程池的地址的一个线程每连接模型的几个问题:

  • 太多的线程栈使CPU缓存在高度并行执行的工作量几乎无用。线程池线程栈重用促进减少CPU缓存的足迹。

  • 多线程并行执行,上下文切换开销大。这也提出了一个具有挑战性的任务操作系统的调度程序。线程池控制活动线程的数量保持平行度在MySQL服务器在一个水平,它可以处理,是适当的服务器主机上的MySQL执行。

  • 太多的交易增加资源争夺的并行执行。进入InnoDB这增加的时间,保持中央的互斥锁。线程池控制交易开始时确保没有太多的并行执行。

线程池插件包含在MySQL企业版。这是不包含在MySQL社区版。

额外资源

第a.14,MySQL 8常见问题:MySQL企业线程池”

5.6.3.1线程池组件

线程池的特征包括这些组件:

5.6.3.2线程池的安装

本节介绍如何安装MySQL企业线程池。关于安装插件的一般信息,看第5.6.1,“安装和卸载插件”

通过将服务器可用的插件库文件必须位于MySQL插件目录(目录命名的plugin_dir系统变量)。如果有必要,设置值plugin_dir在服务器启动告诉服务器插件目录位置。

插件库文件的基名称是thread_pool。文件名后缀不同的平台(例如每,。所以UNIX和类UNIX系统,.dllWindows)

使线程池的性能,加载插件被启动服务器与应用--plugin-load-add选项例如,如果你的名字只是插件库文件,服务器负载所有的插件,它包含(即线程池的插件和所有information_schema表格)。要做到这一点,把这些线在服务器my.cnf文件(调整。所以你的平台是必要的后缀):

[mysqld]
plugin-load-add=thread_pool.so

这相当于加载所有线程池插件命名他们单独:

[mysqld]
plugin-load-add=thread_pool=thread_pool.so
plugin-load-add=tp_thread_state=thread_pool.so
plugin-load-add=tp_thread_group_state=thread_pool.so
plugin-load-add=tp_thread_group_stats=thread_pool.so

如果需要,你可以只是一些个人的插件库文件加载。加载线程池插件而不是INFORMATION_SCHEMA表,使用选择这样:

[mysqld]plugin-load-add=thread_pool=thread_pool.so

加载线程池插件,只TP_THREAD_STATEinformation_schema表,使用选择这样:

[mysqld]
plugin-load-add=thread_pool=thread_pool.so
plugin-load-add=tp_thread_state=thread_pool.so
笔记

如果你不把所有的INFORMATION_SCHEMA表,一些或所有的MySQL企业监控器线程池图将是空的。

to verify the插件安装,检查INFORMATION_SCHEMA.PLUGINS表或使用SHOW PLUGINS声明(见第2,“获取服务器插件的信息”)。例如:

mysql> SELECT PLUGIN_NAME, PLUGIN_STATUS
       FROM INFORMATION_SCHEMA.PLUGINS
       WHERE PLUGIN_NAME LIKE 'thread%' OR PLUGIN_NAME LIKE 'tp%';
+-----------------------+---------------+
| PLUGIN_NAME           | PLUGIN_STATUS |
+-----------------------+---------------+
| thread_pool           | ACTIVE        |
| TP_THREAD_STATE       | ACTIVE        |
| TP_THREAD_GROUP_STATE | ACTIVE        |
| TP_THREAD_GROUP_STATS | ACTIVE        |
+-----------------------+---------------+

如果一个插件初始化失败,检查诊断消息服务器错误日志。

如果服务器负载的线程池插件成功,它集thread_handling系统变量动态加载

5.6.3.3线程池操作

线程池由多个线程组,每一组客户关系管理。为建立连接,线程池分配他们在轮询线程组。

线程组的数量是可配置的应用thread_pool_size系统变量。组的默认为十六。在设置这个变量的指引,看到第5.6.3.4,“线程池优化”

线程的最大数量是由一组(或n=4095一些系统上的一个线程内部使用)。

线程池线程连接和分离,所以没有固定的关系连接和线程执行这些语句之间的连接接收。这不同于默认的线程处理模型,将一个线程,线程执行一个连接从连接的所有语句。

线程池试图确保最大的一个线程在任何时间在每一组中执行,但有时允许多个线程以执行暂时为最佳性能。该算法的工作方式如下:

  • 每一个线程组有一个监听线程监听来自分配给该组的连接输入语句。当一个语句时,线程组开始执行它立即或队列它稍后执行:

    • 如果语句是唯一一个接受和任何语句都排队或正在执行时立即执行。

    • 排队时,如果语句不能立即开始执行。

  • 如果立即执行时,执行是通过监听线程执行。(这意味着在组暂时没有听。)如果语句迅速完成,执行线程返回听报告。否则,线程池认为语句停顿,开始另一个线程作为一个监听线程(创建它,如果必要的话)。确保任何线程组的陈述成为停滞受阻,线程池有一个后台线程,线程组定期监控状态。

    通过使用线程执行一个语句,可以立即开始,不需要如果语句完成快速创建额外的线程。这将确保尽可能最有效的执行在一个低的并发线程的数量情况。

    当线程池插件启动时,它创建一个线程(每组监听线程),加上后台线程。额外的线程创建必要的执行语句。

  • 的价值thread_pool_stall_limit系统变量决定的意义迅速完成在以前的项目。在线程的默认时间是停滞为60ms,但可以设置到最大6S。此参数可使你取得一个平衡,适当的服务器工作负载。短暂的等待值允许线程启动更快。短值也避免死锁情况较好。漫长的等待值是有用的工作负载,包括长期的陈述,避免太多新的声明而目前的执行。

  • 线程池主要集中在限制并发短时间运行的语句数。执行语句达到失速前的时间,它可以防止其他语句开始执行。如果语句执行过失速的时候,它可以继续但不再阻止其他语句开始。在这种方式中,线程池试图确保每个线程组从来没有超过一个短时间运行的语句,虽然可能有多个长期报表。这是让长期声明防止其他语句因为有等待的金额没有限制,可能需要执行不良。例如,在一个复制的主人,一个线程发送二进制日志事件的奴隶永远有效运行。

  • 一个声明如果遇到磁盘I/O操作或用户级锁阻塞(行锁或锁)。块将导致线程组成为闲置,所以有回调线程池来确保线程池可以立即开始一个新的线程来执行另一个声明,在这组。当被阻止的线程返回线程池,使它立即重新启动。

  • 有两个队列,一个高优先级和低优先级队列。在一个事务中的第一个语句到低优先级队列。任何以下报表交易到高优先级队列如果交易正在进行中(声明它已经开始执行),或低优先级队列,否则。队列任务可以影响使thread_pool_high_priority_connection系统变量,使所有排队的报表会话进入高优先级队列。

    对于非事务性存储引擎的陈述,或交易引擎如果autocommit启用,被视为低优先级的陈述,因为在这种情况下,每个语句的事务。因此,给定一个混合的报表InnoDBMyISAM表,线程池优先考虑那些InnoDB在那些MyISAM除非autocommit启用。与autocommit启用后,所有的报表将低优先级。

  • 当线程组中选择一个排队的语句执行,它在高优先级队列是第一,然后在低优先级队列。如果一个语句被发现,它是从队列中移除并开始执行。

  • 如果一个语句停留在低优先级的线程池队列太长,移动到高优先级队列。的价值thread_pool_prio_kickup_timer系统变量控制的时间运动。每一个线程组,最高每10ms或每秒100个语句将从低优先级队列移到高优先级队列。

  • 线程池的使用最为活跃的线程获得一个更好的利用CPU缓存。这是一个小的调整,对性能有很大的影响。

  • 一个线程执行一个用户连接声明的同时,性能架构仪器账户活动用户连接线。否则,绩效模式帐户活动的线程池。

这里是一个例子的情况下,一个线程组可能有多个线程开始执行语句:

  • 一个线程开始执行语句,但运行时间长到足以被认为是停滞不前的。线程组允许另一个线程开始甚至在第一个线程执行另一个声明仍然执行。

  • 一个线程开始执行语句,然后就会被封闭,报道这回到线程池。线程组允许另一个线程开始执行一个语句。

  • 一个线程开始执行语句,堵塞,但没有报告说它是阻止因为块不会发生在代码中一直使用的线程池回调。在这种情况下,线程的线程组似乎还在奔跑。如果块持续时间足够长的语句被认为是停滞不前,集团允许另一个线程开始执行一个语句。

线程池的设计在越来越多的连接是可伸缩的。这也是为了避免死锁产生的数量限制的积极执行语句。线程不返回线程池不能防止其他语句的执行,从而导致线程池变得僵持不下是很重要的。这样的陈述的例子:

  • 长时间运行的报表。这将导致只有少数报表使用的所有资源,他们可以防止他人访问服务器。

  • 二进制日志转储线程读取二进制日志并将其发送到奴隶。这是一种长期的陈述那是一段很长的时间,而不应该阻止其他语句的执行。

  • 语句阻塞行锁,表锁,睡觉,或任何其他的阻断活性尚未回到线程池通过MySQL服务器或存储引擎的报道。

在每一种情况下,为了防止死锁,语句移到停滞的类别时,它不很快完成,所以线程组可以允许另一个语句开始执行。有了这个设计,当一个线程执行或堵塞一个较长的时间,线程池线程停顿动作类和对语句的执行其余的,它不能阻止其他语句的执行。

可能发生的最大线程数的总和max_connectionsthread_pool_size。这可以在所有的连接都在执行模式和额外的线程被创建一组听更多的陈述的情况发生。这是不是一个国家,经常发生,但它在理论上是可能的。

5.6.3.4线程池优化

这部分提供了最佳性能设置线程池系统变量的准则,利用度量如每秒交易量。

thread_pool_size控制线程池的性能最重要的参数。它只能被设置在服务器启动。我们在测试线程池的经验表明:

  • 如果主存储引擎InnoDB,最佳thread_pool_size设置可能是16和36之间,以最常见的最优值趋于24至36。我们没有看到任何情况设置已优化超过36。有可能是特殊情况下的值小于16时为最佳。

    如DBT2和过负荷,优化InnoDB似乎通常在36左右。对于写密集型工作负载,优化设置有时会降低。

  • 如果主存储引擎MyISAM,的thread_pool_size设置应该是比较低的。我们倾向于获得最佳性能的值从4到8。较高的值会有轻微的负但不剧烈的冲击性能。

另一个系统变量,thread_pool_stall_limit重要的是,处理堵塞和长期运行的报表。如果所有的呼叫阻塞MySQL服务器报告的线程池,它总是知道什么时候执行线程被阻塞。然而,这不一定是真的。例如,可能发生在代码块未使用线程池回调。在这种情况下,线程池必须看起来是被阻止的线程标识。这是由一个超时完成,它的长度可以调整使用thread_pool_stall_limit系统变量。此参数可确保服务器不完全堵塞。价值thread_pool_stall_limit要防止死锁服务器的风险一个6秒的上限。

thread_pool_stall_limit也使线程池来处理长时间运行的报表。如果长时间运行的语句块是允许一个线程组,所有其他连接分配给组会被封锁,直到开始执行不能长期语句完成。在最坏的情况下,这可能需要数小时甚至数天。

价值thread_pool_stall_limit应该选择这样的,语句的执行比它的价值被认为停滞的时间。停滞的报表生成很多额外开销,因为它们涉及到额外的上下文切换,甚至在某些情况下,额外的线程创作。另一方面,设置thread_pool_stall_limit参数太高意味着长期的报表将超过必要的一些短时间运行的语句块。短暂的等待值允许线程启动更快。短值也避免死锁情况较好。漫长的等待值是有用的工作负载,包括长期的陈述,避免太多新的声明而目前的执行。

假设一个服务器执行的工作量的报表完成小于99.9%即使服务器负载,和其余的语句以100ms,均匀地分布在2小时。在这种情况下,它会设置意义thread_pool_stall_limit10(意为100ms)。60ms的默认值是主要执行非常简单的报表服务器好。

这个thread_pool_stall_limit参数可以在运行时改变使你保持适当的服务器工作负载。假设tp_thread_group_stats表启用,您可以使用以下查询来确定执行的语句,停滞的分数:

SELECT SUM(STALLED_QUERIES_EXECUTED) / SUM(QUERIES_EXECUTED)
FROM INFORMATION_SCHEMA.TP_THREAD_GROUP_STATS;

这个数字应该尽可能低。减小报表拖延的可能性,增加价值thread_pool_stall_limit

当一个语句时,它可以推迟它实际上开始执行前的最大时间是什么时候?假设下列条件:

在最坏的情况下,10优先级高的陈述代表10交易持续很长的时间执行。因此,在最坏的情况下,不会因为它总是已经包含语句等待执行移动到高优先级队列。10秒后,新的说法是可以转移到高优先级队列。然而,在它可以移动,就必须移动以及所有的陈述。这可能需要另一个2秒,最大100报表每秒移动到高优先级队列。当声明达到高优先级队列,有可能是许多长期的语句在它前面。在最坏的情况下,他们中的每一个人会变得停滞不前,它将以1秒为每个语句之前的下一个语句是从高优先级队列中检索。因此,在这种情况下,需要222秒之前开始执行新的声明。

这个例子显示了一个应用程序的最坏情况。如何处理取决于应用。如果应用程序的响应时间要求很高,它应该最有可能在更高水平上节流用户本身。否则,它可以使用线程池的配置参数设置某种最大等待时间。

5.6.4的重写查询重写插件

MySQL支持查询重写插件,可以检查和修改SQL语句的服务器接收服务器执行之前。看到查询重写插件

MySQL分布包括了postparse查询重写插件命名Rewriter和安装插件及其相关组件的脚本。这些组件一起提供的语句重写能力:

  • 服务器端插件命名Rewriter检查报表和可重写,重写规则基于其在内存缓存。

  • 这些陈述受改写:

    独立的报表和编制报表须重写。陈述发生在视图定义或存储的程序不会重写。

  • 这个Rewriter插件使用一个数据库命名query_rewrite包含一个表名rewrite_rules。表提供了该插件的用途来决定是否重写语句的规则的持久性存储。用户沟通的插件通过修改存储在该表的规则集。该插件与用户通过设置消息表格行列

  • 这个query_rewrite数据库包含一个存储过程命名flush_rewrite_rules()加载到插件的规则表的内容。

  • 用户定义的函数名load_rewrite_rules()是用flush_rewrite_rules()存储过程

  • 这个Rewriter插件使系统变量,使插件配置和状态变量提供了运行时的操作信息。

以下各节描述了如何安装和使用Rewriter插件,并提供参考信息及其相关组件。

5.6.4.1安装或卸载重写查询重写插件

笔记

如果安装的Rewriter即使禁用插件涉及一些开销。为了避免这种开销,不安装插件,除非你想用它。

安装或卸载Rewriter查询重写插件,选择approropriate脚本位于分享你的MySQL安装目录:

  • install_rewriter.sql这个脚本:选择to install the重写插件及其相关部件

  • uninstall_rewriter.sql:选择此脚本卸载重写插件及其相关部件

运行选定的脚本如下:

shell> mysql -u root -p < install_rewriter.sql
Enter password: (enter root password here)

下面的示例使用install_rewriter.sql安装脚本。如果你选择不同的脚本进行适当的替代。

运行安装脚本应该安装并启用插件。验证,连接到服务器并执行该语句:

mysql> SHOW GLOBAL VARIABLES LIKE 'rewriter_enabled';
+------------------+-------+
| Variable_name    | Value |
+------------------+-------+
| rewriter_enabled | ON    |
+------------------+-------+

使用说明,见第5.6.4.2,“使用重写查询重写插件”。参考信息,看第5.6.4.3,“重写查询重写插件参考”

5.6.4.2使用重写查询重写插件

启用或禁用插件,启用或禁用rewriter_enabled系统变量。一个多月以前评论重写插件启用当你安装它(见第5.6.4.1,“安装或卸载的重写查询重写插件”)。设置初始状态明确的插件,你可以设置变量在服务器启动。例如,为了使一个选项文件的插件,使用这些线:

[mysqld]
rewriter_enabled=ON

也可以启用或禁用运行时插件:

SET GLOBAL rewriter_enabled = ON;
SET GLOBAL rewriter_enabled = OFF;

假设Rewriter插件启用,它检查和可能的修改重写声明每个服务器收到的。插件决定重写的重写规则的基于内存缓存的报表,这是装的rewrite_rules表中query_rewrite数据库

这些陈述受改写:

独立的报表和编制报表须重写。陈述发生在视图定义或存储的程序不会重写。

添加重写规则

添加规则的Rewriter插件,以添加行rewrite_rules表,然后调用flush_rewrite_rules()存储过程加载规则从表到插件。下面的示例创建一个简单的规则匹配的陈述,选择一个文本值:

query_rewrite.rewrite_rules(插入模式,更换)值(&#39;select?”,选择?1&#39;);

由此表内容看起来像这样:

mysql> SELECT * FROM query_rewrite.rewrite_rules\G
*************************** 1. row ***************************
                id: 1
           pattern: SELECT ?
  pattern_database: NULL
       replacement: SELECT ? + 1
           enabled: YES
           message: NULL
    pattern_digest: NULL
normalized_pattern: NULL

规则指定一个模板指示SELECT语句匹配,并更换模板说明如何重写匹配语句。然而,添加规则的rewrite_rules表不足以引起Rewriter插件的使用规则。你必须调用flush_rewrite_rules()该表的内容加载到内存中的缓存插件:

mysql> CALL query_rewrite.flush_rewrite_rules();
小贴士

如果你的重写规则似乎没有正常工作,确保你有重装上阵的规则表,通过调用flush_rewrite_rules()

当插件读取每一个规则的规则表,计算归一化(声明摘要)从模式和消化的哈希值,并用它们来更新normalized_patternpattern_digest专栏

mysql> SELECT * FROM query_rewrite.rewrite_rules\G
*************************** 1. row ***************************
                id: 1
           pattern: SELECT ?
  pattern_database: NULL
       replacement: SELECT ? + 1
           enabled: YES
           message: NULL
    pattern_digest: d1b44b0c19af710b5a679907e284acd2ddc285201794bc69a2389d77baedddae
normalized_pattern: select ?

有关报表信息消化、标准化报表,和消化的哈希值,见25.9节,“性能架构声明消化和采样”

如果规则不能被加载,由于一些错误,调用flush_rewrite_rules()产生一个错误:

MySQL的&#62;CALL query_rewrite.flush_rewrite_rules();错误1644(45000):一些规则加载(S)失败。

当这种情况发生时,该插件将错误信息发送到message该规则排列问题进行沟通。检查rewrite_rules行非表—NULL消息列值看到所存在的问题。

模式使用相同的语法的准备好的语句(见第13.5.1”准备,语法”)。一个在模式模板,?字符作为参数标记相匹配的数据值。参数标记可以用在数据值应该出现,不是SQL关键字,标识符,等等。这个字符不能包含在引号内。

喜欢的图案,更换可以包含?人物一个语句匹配模板、插件的改写,更换在使用数据值的模式对应的标记匹配的替代参数标记。结果是一个完整的语句字符串。插件要求服务器解析,并将结果返回给服务器的重写声明表示。

添加和加载规则后,检查是否按照是否重写语句匹配的规则模式:

mysql> SELECT PI();
+----------+
| PI()     |
+----------+
| 3.141593 |
+----------+
1 row in set (0.01 sec)

mysql> SELECT 10;
+--------+
| 10 + 1 |
+--------+
|     11 |
+--------+
1 row in set, 1 warning (0.00 sec)

没有重写发生第一SELECT声明,但做为第二。第二声明说明了当重写插件重写声明,它产生一个警告信息。查看信息,使用SHOW WARNINGS

MySQL的&#62;SHOW WARNINGS\G*************************** 1。行***************************水平:注意代码:1105message:查询“选择10”改写“10 1”选择的查询重写插件

声明不需要重写声明相同类型的。下面的示例加载规则,改写DELETE报表UPDATE声明:

INSERT INTO query_rewrite.rewrite_rules (pattern, replacement)VALUES('DELETE FROM db1.t1 WHERE col = ?',       'UPDATE db1.t1 SET col = NULL WHERE col = ?');CALL query_rewrite.flush_rewrite_rules();

启用或禁用现有的规则,修改其enabled柱和加载表到插件。禁用规则1:

UPDATE query_rewrite.rewrite_rules SET enabled = 'NO' WHERE id = 1;CALL query_rewrite.flush_rewrite_rules();

这使您可以停用规则没有消除的表。

重新启用的规则1:

UPDATE query_rewrite.rewrite_rules SET enabled = 'YES' WHERE id = 1;
CALL query_rewrite.flush_rewrite_rules();

这个rewrite_rules表包含pattern_databaseRewriter匹配,不符合数据库名称表名称的使用:

  • 在陈述限定的表名匹配名称的模式中如果相应的数据库和表的名称是相同的。

  • 在语句表的名称匹配模式中的不合格不合格只有默认的数据库是一样的pattern_database和表的名称是相同的

假设一个表名appdb.users有一个叫作身份证件和应用程序将选择使用查询的其中一种形式与表中的行,其中第二只能如果appdb是默认的数据库:

SELECT * FROM users WHERE appdb.id =id_value;SELECT * FROM users WHERE id =id_value

又假设id柱更名user_id(也许表必须修改添加另一种身份,有必要说明的更具体的是什么类型的IDid柱过程中represents)。

变化意味着应用程序必须参考user_id而不是身份证件WHERE条款.但如果有旧的应用程序不能写入更改选择他们会创造,他们不会让你的工作。theRewriter插件可以解决这个问题。匹配和重写语句是否限定的表名,添加下面的两条规则并重新加载规则表:

INSERT INTO query_rewrite.rewrite_rules    (pattern, replacement) VALUES(    'SELECT * FROM appdb.users WHERE id = ?',    'SELECT * FROM appdb.users WHERE user_id = ?'    );INSERT INTO query_rewrite.rewrite_rules    (pattern, replacement, pattern_database) VALUES(    'SELECT * FROM users WHERE id = ?',    'SELECT * FROM users WHERE user_id = ?',    'appdb'    );CALL query_rewrite.flush_rewrite_rules();

Rewriter使用第一个规则匹配语句,使用合格的表名称。它使用的第二匹配,使用不合格的报表,但只如果默认数据库数据库(价值pattern_database

多语句匹配工作

这个Rewriter插件使用声明的消化和消化的哈希值匹配阶段对重写规则来陈述。这个max_digest_length系统变量确定用于计算语句将缓冲区的大小。较大的值使区分不再陈述摘要计算。较小的值使用更少的内存而增加更长的语句具有相同的摘要值碰撞的可能性。

插件比赛每个语句重写规则如下:

  1. 计算语句消化哈希值和比较它的规则消化的哈希值。这是属于误报,但作为一个快速排斥试验。

  2. 如果语句消化的哈希值匹配任何模式消化的哈希值,与标准(表消化)的语句的匹配规则模式的归一化形式。

  3. 如果标准化的语句匹配规则,比较语句中的字面值和图案。一?在模式特征值匹配任何文字的声明。如果语句和声明,在模式匹配?在the statement。其他的对应文字,must be the same。

如果有多个规则匹配的声明,它是不确定的,一个插件使用重写声明。

如果一个模式包含了比更换更标记插件丢弃多余的数据值。如果一个模式包含标记比更换少,这是一个错误。插件注意到这当规则表是装的,写一个错误的信息,message该规则行沟通问题专栏,并设置Rewriter_reload_error状态变量打开(放)

重写的准备好的语句

准备好的语句改写在分析时(即,当他们准备),不执行时后。

准备好的语句与语句,它们可能含有nonprepared?作为参数标记字符。匹配在一份准备好的声明中,一个Rewriter模式必须包含在相同的位置。假设一个重写规则模式:

SELECT ?, 3

下表显示了几个准备SELECT报表是否规则模式匹配。

事先准备好的声明whether模式比赛的声明
PREPARE s AS 'SELECT 3, 3'
PREPARE s AS 'SELECT ?, 3'
PREPARE s AS 'SELECT 3, ?'
PREPARE s AS 'SELECT ?, ?'
重写插件操作信息

这个Rewriter插件使有关的操作可由几个状态变量:

MySQL的&#62;SHOW GLOBAL STATUS LIKE 'Rewriter%';----------------------------------- ------- | variable_name |价值| ----------------------------------- ------- | rewriter_number_loaded_rules | 1 | | rewriter_number_reloads |五| | rewriter_number_rewritten_queries | 1 | | rewriter_reload_error |在| ----------------------------------- -------

这些变量的描述,参见第5.6.4.3.4,“重写查询重写插件状态变量”

当你加载规则表通过调用flush_rewrite_rules()存储过程中,如果出现错误的一些规则,呼叫语句产生一个错误,和插件的设置Rewriter_reload_error状态变量打开(放)

mysql> CALL query_rewrite.flush_rewrite_rules();
ERROR 1644 (45000): Loading of some rule(s) failed.

mysql> SHOW GLOBAL STATUS LIKE 'Rewriter_reload_error';
+-----------------------+-------+
| Variable_name         | Value |
+-----------------------+-------+
| Rewriter_reload_error | ON    |
+-----------------------+-------+

在这情况下,检查一下rewrite_rules行非表—无效的message列值看到所存在的问题。

重写插件使用的字符集

rewrite_rules表加载到重写插件,插件将使用的当前全球价值陈述character_set_client系统变量。If the Globalcharacter_set_client值随之改变,规则表必须重装上阵。

客户必须有一个会议character_set_client价值是相同的全球价值是在规则表加载或规则匹配将不会为客户工作。

5.6.4.3重写查询重写插件参考

下面的讨论作为一个参考,这些成分与Rewriter查询重写插件:

  • 这个Rewriter在规则表query_rewrite数据库

  • Rewriter过程和函数

  • Rewriter系统状态变量

5.6.4.3.1重写查询重写插件规则表

这个rewrite_rules表中query_rewrite数据库提供持久存储的规则,Rewriter插件使用决定重写语句。

用户沟通的插件通过修改存储在该表的规则集。该插件将信息传达给用户通过设置表message专栏

笔记

规则表是由加载到插件flush_rewrite_rules存储过程。除非该程序被称为继最近修改的表,表的内容不一定是符合规则的插件使用设置。

这个rewrite_rules这些列的表:

  • id

    规则ID列是表的主键。你可以使用ID来唯一标识的任何规则。

  • pattern

    模板显示语句规则匹配模式。使用?代表参数标记相匹配的数据值。

  • pattern_database

    数据库用于报表不合格的表名匹配。在陈述限定的表名匹配名称的模式中如果相应的数据库和表的名称是相同的。在语句表的名称匹配模式中的不合格不合格只有默认的数据库是一样的pattern_database和表的名称是相同的

  • replacement

    模板说明如何重写语句匹配pattern列值。使用代表参数标记相匹配的数据值。在重写语句,插件替换?参数标记置换使用数据值匹配相应的标记pattern

  • enabled

    规则是否启用。加载操作(通过调用flush_rewrite_rules()存储过程)的负载规则由表入重写在内存中缓存只有柱YES

    本栏目可以停用规则没有消除:设置列以外的价值YES并重新加载表到插件

  • message

    该插件使用此列与用户进行通信。如果没有错误发生时的规则表加载到内存中,插件的设置message无效的。在非NULL值表示错误和栏目内容的错误消息。在这种情况下可能会发生错误:

    • 无论是图案或置换是一种错误的SQL语句产生语法错误。

    • 更换含有更多的?参数标记比模式

    如果负载发生错误,该插件还设置Rewriter_reload_error状态变量打开(放)

  • pattern_digest

    本栏目用于调试和诊断。如果列时存在的规则表加载到内存中,插件更新与模式消化。本栏目是有用的如果你正在试图确定为什么有些语句不能被重写。

  • normalized_pattern

    本栏目用于调试和诊断。如果列时存在的规则表加载到内存中,插件更新与模式的规范化形式。本栏目是有用的如果你正在试图确定为什么有些语句不能被重写。

5.6.4.3.2重写查询重写插件程序和功能

Rewriter插件的操作使用存储过程,加载到内存中的缓存规则表,和一个助手的用户自定义函数(UDF)。正常情况下,用户只调用存储过程。UDF的目的是通过存储过程调用,而不是直接由用户。

  • flush_rewrite_rules()

    此存储过程使用load_rewrite_rules()UDF要加载的内容rewrite_rules表进Rewriter在高速缓存存储器

    打电话flush_rewrite_rules()暗示COMMIT

    调用这个程序你修改规则表的插件来从新表内容更新缓存后。如果出现任何错误,插件的设置message为表中的行列,设置适当的规则Rewriter_reload_error状态变量打开(放)

  • load_rewrite_rules()

    这是一个用UDF Helper例程flush_rewrite_rules()存储过程

5.6.4.3.3重写查询重写插件系统变量

这个Rewriter查询重写插件支持下列系统变量。如果插件安装这些变量是可用的(见第5.6.4.1,“安装或卸载的重写查询重写插件”

5.6.4.3.4重写查询重写插件状态变量

这个Rewriter查询重写插件支持以下状态变量。如果插件安装这些变量是可用的(见第5.6.4.1,“安装或卸载的重写查询重写插件”

  • Rewriter_number_loaded_rules

    重写插件数改写成功加载的规则rewrite_rules表到内存使用重写插件

  • Rewriter_number_reloads

    多少次了rewrite_rules表被加载到内存缓存使用的重写插件

  • Rewriter_number_rewritten_queries

    查询重写的次数Rewriter查询重写插件,因为它是装。

  • Rewriter_reload_error

    是否出现了一个错误,最近的时间,rewrite_rules表加载到内存中的缓存使用的重写插件。if the value isOFF,没有发生错误。如果该值为打开(放),出现了一个错误;检查message列的rewriter_rules错误信息表

5.6.5版本标记

MySQL包括版本的令牌,一个功能,允许创建和同步在服务器应用程序可以使用令牌,防止错误的或过时的数据访问。

版本标记接口具有这些特点:

  • 版本标记由名称作为关键字或标识符对,加上一个值。

  • 版本标记可以被锁定。应用程序可以使用令牌锁表明合作的其它应用程序标记的使用不应该被修改。

  • 版本标记列表建立每服务器;例如,要指定服务器的配置或运行状态。此外,一个应用程序与服务器通信可以登记自己的标记,表明国家需要服务器在列表。一个SQL语句在服务器不需要的应用程序发送的状态产生一个错误。这是应用的一个信号,它应该寻求一个不同的服务器所需的状态接收SQL语句。

以下各节描述版本标记组成,讨论如何安装和使用,并提供参考信息的组件。

5.6.5.1令牌组件版本

版本标记是基于实现这些组件的插件库:

  • 服务器端插件命名version_tokens持有版本标记与服务器相关的列表和订阅的报表执行事件通知。这个_版本戳标记插件使用审计监视来自客户的陈述和匹配每一个客户的会话令牌列表对特定版本的服务器版本标记列表。如果有一个匹配,这个插件可以让声明通过服务器继续处理它。否则,插件错误返回到客户端和语句失败。

  • 一组用户自定义函数(UDF)提供了一个SQL级API操作和检查服务器版本的插件的列表保持令牌。这个VERSION_TOKEN_ADMINSUPER特权是需要调用任何版本的令牌UDF。

  • version_tokens插件的加载,它定义了VERSION_TOKEN_ADMIN动态权限。此权限可以授予用户的UDF。

  • 系统变量使客户指定版本标记,登记所需的服务器状态列表。如果服务器有一个不同的状态,当一个客户端发送的一份声明中,客户端接收到一个错误。

5.6.5.2安装或卸载版本标记

笔记

如果安装的版本标记涉及一些开销。为了避免这种开销,不安装它,除非你想用它。

本节介绍如何安装或卸载版本标记,这是实施一个插件库文件包含一个插件和用户定义的函数。关于安装或卸载插件和UDF的一般信息,看第5.6.1,“安装和卸载插件”,和第28.4.2.5,“UDF编译和安装”

通过将服务器可用的插件库文件必须位于MySQL插件目录(目录命名的plugin_dir系统变量)。如果有必要,设置值plugin_dir在服务器启动告诉服务器插件目录位置。

插件库文件的基名称是version_tokens。the file name for example(后缀为平台,differs。所以UNIX和类UNIX系统,.dllWindows)

安装版本标记插件和UDF,使用INSTALL PLUGINCREATE FUNCTION报表(调整。所以你的平台是必要的后缀):

INSTALL PLUGIN version_tokens SONAME 'version_token.so';
CREATE FUNCTION version_tokens_set RETURNS STRING SONAME 'version_token.so';
CREATE FUNCTION version_tokens_show RETURNS STRING SONAME 'version_token.so';
CREATE FUNCTION version_tokens_edit RETURNS STRING SONAME 'version_token.so';
CREATE FUNCTION version_tokens_delete RETURNS STRING SONAME 'version_token.so';
CREATE FUNCTION version_tokens_lock_shared RETURNS INT SONAME 'version_token.so';
CREATE FUNCTION version_tokens_lock_exclusive RETURNS INT SONAME 'version_token.so';
CREATE FUNCTION version_tokens_unlock RETURNS INT SONAME 'version_token.so';

您必须安装UDF管理服务器的版本标记列表,但你也必须因为UDF无法正常工作,安装插件。

如果插件和自定义函数,用于主复制服务器,安装在所有从服务器以及避免复制问题。

一旦安装如前所述,版本标记插件和UDF保持安装到卸载。删除它们,使用UNINSTALL PLUGINDROP FUNCTION声明:

卸载插件version_tokens;降功能version_tokens_set;降功能version_tokens_show;降功能version_tokens_edit;降功能version_tokens_delete;降功能version_tokens_lock_shared;降功能version_tokens_lock_exclusive;降功能version_tokens_unlock;

5.6.5.3使用版本标记

在使用之前的版本标记,安装它根据提供的指令第5.6.5.2,“安装或卸载版本标记”

一个场景,版本标记可以是有用的是一个系统访问集合的MySQL服务器,但需要管理它们的负载均衡的目的,通过监测,根据负荷变化调整服务器的任务。一个这样的系统包括这些组件:

  • MySQL服务器的收集管理。

  • 行政或管理应用程序与服务器进行通信并组织为高可用性组。集团服务于不同的目的,并在每一组中的服务器可以有不同的任务。一个组内的服务器分配可随时更改。

  • 客户端应用程序访问服务器以检索和更新数据,选择服务器按用途分。例如,一个客户端不发送更新只读服务器。

版本的许可证服务器访问令牌是根据分配不需要客户多次查询作业服务器托管:

  • 管理应用程序执行任务和建立服务器版本标记每个服务器上的反映其分配。应用程序缓存这些信息提供了一个中央接入点。

    如果在某一点上的管理应用程序需要更改服务器的配置(例如,改变它允许写入只读),它改变了服务器的版本标记列表和更新自己的缓存。

  • 为了提高性能,客户端应用程序管理应用获取缓存的信息,使他们能够避免检索每个语句的服务器分配的信息。基于类型的报表将发行(例如,读取与写入),客户选择合适的服务器和连接到它。

  • 此外,客户端向服务器发送自己的客户端特定版本的代币登记转让需要服务器。对于每一项由客户端发送到服务器,服务器将自己的令牌列表与客户端标记列表。如果服务器标记列表包含在客户端标记列表有相同价值观的所有标记,有匹配和服务器执行语句。

    另一方面,也许是管理的应用改变了服务器的配置及其版本标记列表。在这种情况下,新的服务器配置可以与客户要求不相容。一个令牌不匹配之间的服务器和客户端的令牌列表时,服务器返回的回复声明错误。这是一个迹象的客户端从管理应用程序缓存刷新版本的标记信息,并选择与一个新的服务器。

客户端逻辑检测版本标记错误,选择一个新的服务器,可以实现不同的方式:

  • 客户端可以处理所有版本标记注册,失配检测,连接开关本身。

  • 这些行动的逻辑可以实现连接管理和客户机间的连接MySQL服务器。这种连接器可能处理失配误差检测和语句重新本身,或者它可能传递错误的应用程序,让它重新发送报表的应用。

下面的示例说明了前面的讨论更具体的形式。

当版令牌初始化给定服务器上,服务器的版本标记列表是空的。标记列表的维护是通过调用用户自定义函数(UDF)进行。这个VERSION_TOKEN_ADMINSUPER特权是需要调用任何版本的令牌UDF,所以标记列表修改预计将通过一个管理或管理应用程序,有这个特权。

假设一个管理应用与一组服务器,查询客户访问员工和产品数据库(命名为emp产品,分别)。所有的服务器都允许过程数据检索语句,但只有其中的一些可以使数据库的更新。处理这一特定数据库的基础上,管理应用程序建立一个列表,每个服务器上的版本标记。在标记列表对于一个给定的服务器,令牌名称代表数据库名称和标记值read取决于数据库必须使用只读方式是否可以读取和写入。

客户端应用程序登记名单版本标记他们需要服务器匹配通过设置系统变量。变量设置是根据用户的具体情况不同,所以客户可以登记的不同要求。默认情况下,客户端的令牌列表是空的,它匹配任何服务器标记列表。当一个客户端的令牌列表非空值,匹配可能成功或失败,取决于服务器的版本标记列表。

定义版本的服务器标记列表管理应用程序调用version_token_set()UDF。(还有UDF修改和显示标记列表,稍后介绍。)例如,应用程序可能会把这些报表的一组三台服务器:

服务器1:

mysql> SELECT version_tokens_set('emp=read;prod=read');
+------------------------------------------+
| version_tokens_set('emp=read;prod=read') |
+------------------------------------------+
| 2 version tokens set.                    |
+------------------------------------------+

服务器2:

mysql> SELECT version_tokens_set('emp=write;prod=read');
+-------------------------------------------+
| version_tokens_set('emp=write;prod=read') |
+-------------------------------------------+
| 2 version tokens set.                     |
+-------------------------------------------+

服务器3:

mysql> SELECT version_tokens_set('emp=read;prod=write');
+-------------------------------------------+
| version_tokens_set('emp=read;prod=write') |
+-------------------------------------------+
| 2 version tokens set.                     |
+-------------------------------------------+

在每一种情况下的标记列表指定为一个分号分隔的列表name=value对.在这些服务器assingments令牌列表值的结果:

  • 任何服务器接收读取数据库。

  • 只有2接受更新的服务器emp数据库

  • 只有服务器三接受更新的prod数据库

除了分配给每个服务器版本标记列表管理应用维护缓存服务器的任务了。

在与服务器通信,客户端应用程序与管理应用和检索服务器分配的信息。然后客户端选择服务器基于这些作业。假设一个客户要进行读和写的emp数据库基于前面的作业,只有服务器2资格。客户端连接到服务器,服务器要求有2的寄存器设置的version_tokens_session系统变量:

mysql> SET @@session.version_tokens_session = 'emp=write';

随后的声明由客户端发送到服务器2,服务器比较自己的版本标记列表的客户名单是否匹配。如果是这样,语句执行正常:

mysql> UPDATE emp.employee SET salary = salary * 1.1 WHERE id = 4981;
Query OK, 1 row affected (0.07 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql> SELECT last_name, first_name FROM emp.employee WHERE id = 4981;
+-----------+------------+
| last_name | first_name |
+-----------+------------+
| Smith     | Abe        |
+-----------+------------+
1 row in set (0.01 sec)

服务器和客户端版本标记列表之间的差异可以发生两种方式:

只要服务器2的分配没有变化,客户继续使用它的读和写。但假设管理应用要更改服务器的任务让写的emp数据库必须发送到服务器1服务器而不是2。要做到这一点,它使用version_tokens_edit()修改emp在两个服务器令牌值(和更新其服务器分配缓存):

服务器1:

mysql> SELECT version_tokens_edit('emp=write');
+----------------------------------+
| version_tokens_edit('emp=write') |
+----------------------------------+
| 1 version tokens updated.        |
+----------------------------------+

服务器2:

mysql> SELECT version_tokens_edit('emp=read');
+---------------------------------+
| version_tokens_edit('emp=read') |
+---------------------------------+
| 1 version tokens updated.       |
+---------------------------------+

version_tokens_edit()修改指定的标记在服务器列表和其它符号的不变叶令牌。

下一次客户端发送报表服务器2,自己的令牌列表不再匹配服务器标记列表和错误发生:

mysql> UPDATE emp.employee SET salary = salary * 1.1 WHERE id = 4982;
ERROR 3136 (42000): Version token mismatch for emp. Correct value read

在这种情况下,客户应联系管理应用程序获取有关服务器的任务更新的信息,选择一个新的服务器,并发送失败的声明,新的服务器。

笔记

每个客户端必须与版令牌只发送报表按照它的寄存器与一个给定的标记列表服务器合作。例如,如果一个客户注册标记列表'emp=read',在版本标记以防止客户端发送更新的没有什么EMP数据库客户端本身必须避免这样做。

每个语句的接收从客户端、服务器隐式使用锁定,如下:

  • 把每个令牌的客户端标记列表中指定一个共享锁(即在version_tokens_session值)

  • 执行服务器和客户端的令牌列表之间的比较

  • 执行该语句或产生一个错误根据比较结果

  • 释放锁

服务器使用共享锁,比较可能发生多个会话不阻塞,同时防止更改令牌的任何会议,试图就操纵在服务器列表中名称相同的令牌令牌获取排他锁。

前面的示例只使用少数的定义包括在版本标记插件库,但有些。一套UDF允许版本标记的服务器列表进行操作和检查。另一套UDF允许令牌被锁定和解锁版。

这些udf允许版本标记服务器的列表被创建,更改,删除,和检查:

  • version_tokens_set()完全替换当前列表,分配一个新的列表。参数是一个分号分隔的列表name=value对.

  • version_tokens_edit()使局部修改当前列表。它可以添加新的令牌或改变现有令牌的值。参数是一个分号分隔的列表name=value对.

  • version_tokens_delete()从当前列表中删除标记。参数是一个分号分隔的标记名称列表。

  • version_tokens_show()显示当前标记列表。这不需要争论。

每个功能,如果成功,返回一个二进制串表示动作发生。下面的示例建立服务器标记列表,修改它以添加一个新的令牌,删除一些标记,并显示最终的标记列表:

mysql> SELECT version_tokens_set('tok1=a;tok2=b');
+-------------------------------------+
| version_tokens_set('tok1=a;tok2=b') |
+-------------------------------------+
| 2 version tokens set.               |
+-------------------------------------+
mysql> SELECT version_tokens_edit('tok3=c');
+-------------------------------+
| version_tokens_edit('tok3=c') |
+-------------------------------+
| 1 version tokens updated.     |
+-------------------------------+
mysql> SELECT version_tokens_delete('tok2;tok1');
+------------------------------------+
| version_tokens_delete('tok2;tok1') |
+------------------------------------+
| 2 version tokens deleted.          |
+------------------------------------+
mysql> SELECT version_tokens_show();
+-----------------------+
| version_tokens_show() |
+-----------------------+
| tok3=c;               |
+-----------------------+

但如果出现不完整的令牌list is:

mysql> SELECT version_tokens_set('tok1=a; =c');
+----------------------------------+
| version_tokens_set('tok1=a; =c') |
+----------------------------------+
| 1 version tokens set.            |
+----------------------------------+
1 row in set, 1 warning (0.00 sec)

mysql> SHOW WARNINGS\G
*************************** 1. row ***************************
  Level: Warning
   Code: 42000
Message: Invalid version token pair encountered. The list provided
         is only partially updated.
1 row in set (0.00 sec)

如前所述,版本标记使用分号分隔的列表定义name=value对.考虑调用version_tokens_set()

mysql> SELECT version_tokens_set('tok1=b;;; tok2= a = b ; tok1 = 1\'2 3"4')
+---------------------------------------------------------------+
| version_tokens_set('tok1=b;;; tok2= a = b ; tok1 = 1\'2 3"4') |
+---------------------------------------------------------------+
| 3 version tokens set.                                         |
+---------------------------------------------------------------+

版本标记解释论点如下:

  • 周围的空白的名称和值被忽略。在名称和值的空白是允许的。(为version_tokens_delete(),这需要一个名单没有价值观,周围的空白的名字被忽略。)

  • 没有引用机制

  • 为了表征不明显但如果令牌列表包含多个实例的一个给定的令牌名称,最后的价值优先于前值。

鉴于这些规则,前面的version_tokens_set()打电话的结果在两标记标记列表:TOK1有价值1'2 3"4,和tok2有价值a = b。为了验证这一点,叫version_tokens_show()

mysql> SELECT version_tokens_show();
+--------------------------+
| version_tokens_show()    |
+--------------------------+
| tok2=a = b;tok1=1'2 3"4; |
+--------------------------+

如果托克劳名单上有两个托克劳人,为什么要这样做。version_tokens_set()返回值3版的标记集?发生因为原来的标记列表包含两个定义tok1,和第二定义替换第一。

版本标记令牌操纵UDF地方这些约束令牌名称和值:

  • 令牌名称不能包含=字符,最大长度为64个字符。

  • 令牌值不能包含;人物长度值的值的约束max_allowed_packet系统变量

  • 版本标记将令牌名称和值为二进制字符串比较是区分大小写的,所以。

版本标记还包括一组能够使令牌被锁定和解锁:

  • version_tokens_lock_exclusive()获得独家版本令牌锁。它需要一个或多个锁的名字和一个超时值。

  • version_tokens_lock_shared()获取共享版令牌锁。它需要一个或多个锁的名字和一个超时值。

  • version_tokens_unlock()发布版本的令牌锁(独家分享)。这不需要争论。

每个锁函数返回非零成功。否则,发生了一个错误:

mysql> SELECT version_tokens_lock_shared('lock1', 'lock2', 0);
+-------------------------------------------------+
| version_tokens_lock_shared('lock1', 'lock2', 0) |
+-------------------------------------------------+
|                                               1 |
+-------------------------------------------------+

mysql> SELECT version_tokens_lock_shared(NULL, 0);
ERROR 3131 (42000): Incorrect locking service lock name '(null)'.

锁定使用版本标记锁定功能是咨询;应用程序必须同意合作。

它有可能锁定不存在的标记名称。这不创建令牌。

笔记

版本标记锁定功能是基于锁服务描述第28.3.1,“锁定服务”,从而具有相同的语义共享和独占锁。(版本标记使用锁定服务程序内置到服务器,不锁定服务UDF接口,所以这些udf不需要安装使用的版本标记。)版本标记使用锁定服务命名空间获得锁version_token_locks。锁锁服务可以使用性能模式监控,所以这个版本的令牌锁也是如此。详情见第28.3.1.2.3,“锁定服务监控”

版本的令牌,令牌名称参数锁定功能,准确的使用规定。周围的空白是不能忽视的,=特点是允许的。这是因为版令牌仅仅通过标记名称被锁是锁服务。

5.6.5.4版本标记参考

下面的讨论作为一个参考这些版本标记组件:

版本符号函数

版本标记插件库包括几个用户定义函数。一套UDF允许版本标记的服务器列表进行操作和检查。另一套UDF允许令牌被锁定和解锁版。这个VERSION_TOKEN_ADMINSUPER特权是需要调用任何版本标记的UDF。

下面的UDF允许版本标记服务器的列表被创建,更改,删除,和检查。解读name_listtoken_list参数(包括空格处理)发生了第5.6.5.3,“使用版本标记”,为指定令牌提供关于语法的详细信息,以及更多的例子。

  • version_tokens_delete(name_list)

    删除标记从服务器的列表的版本标记的使用name_list参数并返回一个字符串,表示该操作的结果。name_list是一个以分号分隔的版本标记名称删除列表。

    MySQL的&#62;SELECT version_tokens_delete('tok1;tok3');------------------------------------ |版本_戳标记_删除(“tok1;tok3”)| ------------------------------------ | 2版本戳标记deleted。| ------------------------------------

    一个论点NULL被视为一个空字符串,这对标记列表没有影响。

    version_tokens_delete()删除标记的命名参数,如果它们存在。(这是不删除不存在的标记。错误)明确标记列表完全不知道那些符号是在列表中,通无效的或一个字符串不包含标记version_tokens_set()

    MySQL的&#62;SELECT version_tokens_set(NULL);------------------------------ | version_tokens_set(空)| ------------------------------ |版本标记列表中清除。MySQLSELECT version_tokens_set('');------------------------------ | version_tokens_set(&#39;&#39;)| ------------------------------ |版本标记列表中清除。| ------------------------------
  • version_tokens_edit(token_list)

    修改服务器的列表的版本标记的使用token_list参数并返回一个字符串,表示该操作的结果。token_list以分号分隔的列表name=value对指定每个令牌的名字来定义及其价值。如果一个象征性的存在,其值与给定值的更新。如果标记不存在,它是与特定的价值创造。如果参数是无效的或一个字符串不包含令牌,令牌列表保持不变。

    mysql> SELECT version_tokens_set('tok1=value1;tok2=value2');
    +-----------------------------------------------+
    | version_tokens_set('tok1=value1;tok2=value2') |
    +-----------------------------------------------+
    | 2 version tokens set.                         |
    +-----------------------------------------------+
    mysql> SELECT version_tokens_edit('tok2=new_value2;tok3=new_value3');
    +--------------------------------------------------------+
    | version_tokens_edit('tok2=new_value2;tok3=new_value3') |
    +--------------------------------------------------------+
    | 2 version tokens updated.                              |
    +--------------------------------------------------------+
    
  • version_tokens_set(token_list)

    替代版本的定义令牌令牌服务器的列表token_list参数并返回一个字符串,表示该操作的结果。token_list以分号分隔的列表name=value对指定每个令牌的名字来定义及其价值。如果参数是无效的或一个字符串不包含令牌,令牌列表中清除。

    mysql> SELECT version_tokens_set('tok1=value1;tok2=value2');
    +-----------------------------------------------+
    | version_tokens_set('tok1=value1;tok2=value2') |
    +-----------------------------------------------+
    | 2 version tokens set.                         |
    +-----------------------------------------------+
    
  • version_tokens_show()

    作为一个二进制字符串包含一个分号分隔的列表返回版本标记的服务器列表name=value对.

    MySQL的&#62;SELECT version_tokens_show();+--------------------------+| version_tokens_show()    |+--------------------------+| tok2=value2;tok1=value1; |+--------------------------+

下面的UDF允许令牌被锁定和解锁版:

  • version_tokens_lock_exclusive(token_name[, token_name] ..., timeout)

    获取排他锁在一个或多个版本标记,按名称指定为字符串,定时与错误如果锁是不能获得在给定的超时值。

    mysql> SELECT version_tokens_lock_exclusive('lock1', 'lock2', 10);
    +-----------------------------------------------------+
    | version_tokens_lock_exclusive('lock1', 'lock2', 10) |
    +-----------------------------------------------------+
    |                                                   1 |
    +-----------------------------------------------------+
    
  • version_tokens_lock_shared(token_name[, token_name] ..., timeout)

    获取共享锁在一个或多个版本标记,按名称指定为字符串,定时与错误如果锁是不能获得在给定的超时值。

    mysql> SELECT version_tokens_lock_shared('lock1', 'lock2', 10);
    +--------------------------------------------------+
    | version_tokens_lock_shared('lock1', 'lock2', 10) |
    +--------------------------------------------------+
    |                                                1 |
    +--------------------------------------------------+
    
  • version_tokens_unlock()

    释放所有的锁被收购在当前会话中使用version_tokens_lock_exclusive()version_tokens_lock_shared()

    mysql> SELECT version_tokens_unlock();
    +-------------------------+
    | version_tokens_unlock() |
    +-------------------------+
    |                       1 |
    +-------------------------+
    

锁定功能共享这些特性:

  • 返回值为非零成功。否则,发生了一个错误。

  • 名称是字符串令牌

  • 在对比论证的UDF,操纵服务器标记列表处理,空格周围的令牌名称参数是不能忽视的,=特点是允许的

  • 它有可能锁定不存在的标记名称。这不创建令牌。

  • 超时值是非负整数代表在几秒钟的时间等待超时错误之前获取锁。如果超时是0,没有等待和函数产生一个错误,如果不能立即获得锁。

  • 版本标记锁定功能是基于锁服务描述第28.3.1,“锁定服务”

版本标记系统变量

版本标记支持下列系统变量。这些变量是不可用,除非安装版本标记插件(参见第5.6.5.2,“安装或卸载版本标记”

系统变量:

  • version_tokens_session

    财产价值
    命令行格式--version-tokens-session=value
    系统变量version_tokens_session
    范围全球会议
    动态
    看到的是_提示应用
    类型字符串
    默认值NULL

    这个变量的值指定的会话的客户端版本标记列表,表示客户端会话需要的服务器版本标记列表有令牌。

    如果version_tokens_session变量无效的(默认)或一个空值,任何服务器版本标记列表匹配。(事实上,一个空的值不匹配的要求。)

    如果version_tokens_session变量有一个非空的值,其值与服务器版本标记列表导致错误的任何会话发送给服务器的语句之间的任何不匹配。在这些条件下,一个不匹配的情况:

    它不是一个服务器版本标记列表包括一个令牌在不叫错配version_tokens_session价值

    假设一个管理应用程序设置服务器标记列表如下:

    mysql> SELECT version_tokens_set('tok1=a;tok2=b;tok3=c');
    +--------------------------------------------+
    | version_tokens_set('tok1=a;tok2=b;tok3=c') |
    +--------------------------------------------+
    | 3 version tokens set.                      |
    +--------------------------------------------+
    

    客户端注册的标记需要服务器设置的匹配version_tokens_session价值。然后,对于每一个随后的声明发出的客户端,服务器检查其对客户端的标记列表version_tokens_session价值和产生一个错误,如果有一个不匹配:

    MySQL的&#62;SET @@session.version_tokens_session = 'tok1=a;tok2=b';MySQL的&#62;SELECT 1;我| | - 1 - 1 | |——MySQL &#62;SET @@session.version_tokens_session = 'tok1=b';MySQL的&#62;SELECT 1;错误3136(42000):版本不匹配TOK1令牌。正确的价值

    第一SELECT成功因为客户端令牌TOK1tok2在服务器列表中每个令牌令牌服务器列表中相同的值。第二SELECT失败,因为,虽然TOK1在服务器端,标记列表,它比由客户指定不同的值。

    在这一点上,客户端发送的任何语句失败,除非服务器标记列表的这些变化,它匹配了。假设管理应用更改服务器标记列表如下:

    mysql> SELECT version_tokens_edit('tok1=b');
    +-------------------------------+
    | version_tokens_edit('tok1=b') |
    +-------------------------------+
    | 1 version tokens updated.     |
    +-------------------------------+
    mysql> SELECT version_tokens_show();
    +-----------------------+
    | version_tokens_show() |
    +-----------------------+
    | tok3=c;tok1=b;tok2=b; |
    +-----------------------+
    

    现在客户端version_tokens_session价值匹配服务器标记列表,客户端可以再次成功执行语句:

    MySQL的&#62;SELECT 1;--- | 1 | --- | 1 | ---
  • version_tokens_session_number

    财产价值
    命令行格式--version-tokens-session-number=N
    系统变量version_tokens_session_number
    范围全球会议
    动态
    看到的是_提示应用
    类型整数
    默认值0

    这个变量是内部使用

5.7运行多个MySQL实例在一台机器上

在某些情况下,你可能要运行MySQL的多个实例在同一台机器。你可能想要测试一个新的MySQL释放而使现有的生产装置不受干扰。或者你可能想给不同的用户访问不同的mysqld他们管理自己的服务器。(例如,你可能是一个互联网服务提供商要为不同客户提供独立的MySQL安装。)

可以使用不同的MySQL服务器的二进制每个实例或多个实例相同的二进制的使用,或任何组合的两种方法。例如,你可能从MySQL 5.7和MySQL 5.0服务器,来看看不同的版本处理给定的工作量。或者你可以运行当前的生产版本的多个实例,每一组不同的数据库管理。

你是否使用不同的服务器的二进制文件,每个实例运行,您必须配置几个操作参数的独特价值。这消除了实例之间的潜在冲突。参数可以设置命令行选项文件中,或通过设置环境变量。看到4.2.3节”指定程序选项”。看到一个给定的实例使用的值,连接到它,并执行SHOW VARIABLES声明

初级资源的MySQL实例管理是数据目录。每个实例都应该使用不同的数据目录,其中指定的位置使用--datadir=dir_name选项用自己的数据目录配置每个实例方法,以及如果不这样做的危险警告,看5.7.1节,“建立多个数据目录”

除了使用不同的数据目录,其他几个选项必须为每个服务器实例的值不同:

  • --port=port_num

    --port控制端口号为TCP/IP连接。另外,如果主机有多个网络地址,你可以使用--bind-address使每个服务器监听到一个不同的地址。

  • --socket={file_name|pipe_name}

    --socket在UNIX或Windows命名管道名称Unix套接字文件路径控制。在Windows中,要的只是那些服务器配置为允许命名管道连接指定不同的管道名称。

  • --shared-memory-base-name=name

    此选项仅用于Windows。它指定共享内存名Windows服务器允许客户端使用共享内存连接使用。要的只是那些服务器配置为允许共享内存共享内存连接指定不同的名称。

  • --pid-file=file_name

    此选项显示文件中的服务器的路径名称写的进程ID。

如果你使用下面的日志文件选项,其值必须是不同的服务器:

为日志文件选项的进一步讨论,见5.4节,“MySQL服务器日志”

为了实现更好的性能,您可以指定以下选项为每个服务器不同,传播的几个物理磁盘之间的负载:

具有不同的临时目录也使得它更容易确定MySQL服务器创建的任何临时文件。

如果你在不同的地点有多个MySQL的安装,您可以指定每个安装的基目录--basedir=dir_name选项这使每个实例自动使用不同的数据目录,日志文件,以及PID文件因为每个这些参数的默认值是相对于基础目录。在这种情况下,唯一的其他选择,你需要指定的--socket--port选项假设你安装不同版本的MySQL的使用焦油文件的二进制分布。这些安装在不同的位置,所以你可以使用命令每个安装启动服务器斌/ mysqld_safe其相应的基目录下_ mysqld safe确定适当的--basedir选择通过mysqld,你需要指定只有--socket--port选项_ mysqld safe

在下面的章节中讨论的,它可以启动其他服务器通过指定合适的命令选项或通过设置环境变量。然而,如果你需要运行多个服务器上的一个永久性的基础上,它是使用选项文件指定为每个服务器的选项的值必须是唯一的更方便。这个--defaults-file选择用于此目的的

5.7.1设置多个数据目录

机器上的每台MySQL实例应该有自己的数据目录。在指定的位置使用--datadir=dir_name选项

有建立一个新的实例数据目录的不同方法:

  • 创建一个新的数据目录。

  • 复制现有的数据目录

下面的讨论提供了每种方法的更多细节。

警告

通常情况下,你应该有两个服务器在同一个数据库中更新数据。也许如果你的操作系统不支持无故障系统锁定导致不愉快的意外。如果(尽管这警告)你运行多个服务器使用相同的数据目录,他们已启用日志记录,必须使用适当的选项来指定日志文件的名称,每个服务器的独特。否则,服务器尝试登录到相同的文件。

即使前注意观察,这种设置只适用于MyISAM合并表,不与任何其他存储引擎。同时,这一警告服务器之间共享数据目录总是适用于NFS环境。允许多个MySQL服务器通过NFS访问共同数据目录是非常糟糕的主意。主要的问题是,NFS是速度的瓶颈。这是不是意味着使用。另一个风险与NFS是你必须想个办法来保证两台或多台服务器互不干扰。通常是通过NFS文件锁定lockd守护进程,但目前还没有平台执行锁定百分之百可靠地在每一种情况。

创建一个新的数据目录

用这种方法,数据目录将在相同的状态,当你第一次安装MySQL。它会把MySQL账户和没有用户数据的默认。

在Unix系统中,初始化数据目录。看到2.9节,“安装后的设置和测试

在Windows中,数据目录包含在MySQL的分布:

  • MySQL的ZIP文件分布窗口包含一个未修改的数据目录。你可以把这样的分配到一个临时位置,然后复制它data目录在您设置的新实例。

  • Windows的MSI程序包安装程序创建和设置,安装的服务器将使用数据目录,还创造了一个质朴的模板数据目录data安装目录下。安装后一直使用MSI包,模板数据目录可以复制设置额外的MySQL实例。

复制现有的数据目录

用这种方法,任何MySQL帐户或用户数据在数据目录进行到新的数据目录。

  1. 停止现有的MySQL实例使用的数据目录。这必须是一个干净的关闭使实例将任何挂起的更改到磁盘。

  2. 复制的数据目录的位置应该是新的数据目录。

  3. 复制my.cnfmy.ini通过现有的实例使用选项文件。这是新的实例的基础上。

  4. 所以,任何路径参考原始数据目录引用新的数据目录修改新选项文件。同时,修改必须是唯一的每个实例的任何其他选项,如TCP / IP端口号和日志文件。一系列的参数必须是唯一的每个实例,看5.7节,“运行多个MySQL实例一机”

  5. 启动新的实例,告诉它使用新的选项文件。

5.7.2在Windows上运行多个MySQL实例

你可以通过启动手动从命令行运行在Windows多个服务器,每一个适当的操作参数,或通过安装多个服务器作为Windows服务运行方式。一般指示运行MySQL的命令行或服务了2.3节,“安装在微软Windows“MySQL。以下各节描述如何为这些选择必须是唯一的每个服务器的不同的价值观开始每个服务器,如数据目录。这些选项都列在5.7节,“运行多个MySQL实例一机”

5.7.2.1启动多个MySQL实例在Windows命令行

启动一个MySQL服务器手动从命令行程序的描述第2.3.5.6,“启动MySQL从Windows命令行”。启动多个服务器,这样,你可以在命令行中指定的文件或选择相应的选项。它是将选项在选项文件更方便,但要确保每个服务器都有自己的设置选项。为此,创建每个服务器选项文件,告诉服务器的文件名与--defaults-file当你选择运行它

假设你想运行一个实例mysqld在数据目录的端口未另列明的C:\mydata1,和3308端口与数据目录的另一个实例mydata2 C:\。使用此程序:

  1. 确保每个数据目录存在,包括其自己的副本mysql数据库包含授权表

  2. 创建两个选项文件。例如,创建一个文件名为C:\my-opts1.cnf看起来像这样:

    [mysqld]datadir = C:/mydata1port = 3307

    创建另一个文件名为C:\my-opts2.cnf看起来像这样:

    [mysqld]datadir = C:/mydata2port = 3308
  3. 使用--defaults-file选择与自己开始每个服务器选项文件:

    C:\>C:\mysql\bin\mysqld --defaults-file=C:\my-opts1.cnfC:\>C:\mysql\bin\mysqld --defaults-file=C:\my-opts2.cnf

    每个服务器的前景开始(没有新的提示出现在服务器退出后),所以你需要问题在单独的控制台窗口的那两个命令。

关闭服务器,连接到每个使用适当的端口号:

C:\> C:\mysql\bin\mysqladmin --port=3307 --host=127.0.0.1 --user=root --password shutdown
C:\> C:\mysql\bin\mysqladmin --port=3308 --host=127.0.0.1 --user=root --password shutdown

服务器配置为只描述允许客户端通过TCP / IP连接。如果您的Windows版本支持命名管道,你也要允许命名管道连接,指定选项,启用命名管道和指定其名称。每个服务器支持命名管道连接必须使用一个独特的管道名称。例如,在C:\my-opts1.cnf文件可能是这样写的:

[mysqld]datadir = C:/mydata1port = 3307enable-named-pipesocket = mypipe1

修改C:\my-opts2.cnf同样用二服务器。然后启动服务器,如前所述。

一个类似的应用程序服务器,你要允许共享内存连接。使用这种连接--shared-memory与每个服务器选项指定一个独特的共享内存的名字--shared-memory-base-name选项

5.7.2.2启动多个MySQL实例的Windows服务

在Windows中,MySQL服务器可以运行Windows服务。程序安装,控制,和删除单个MySQL服务描述第2.3.5.8,“启动MySQL作为Windows服务”

建立多个MySQL服务,您必须确保每个实例使用不同的服务名称,除了必须是唯一的每个实例的其他参数。

以下说明,假设你想跑mysqld从MySQL服务器被安装在两个不同的版本C:\mysql-5.5.9C:\ mysql-8.0.14,分别。(这可能如果你运行的是5.5.9作为生产服务器,如此也要进行测试,使用8.0.14。)

安装MySQL作为Windows服务,使用--install安装手册选项有关这些选项的信息,参见第2.3.5.8,“启动MySQL作为Windows服务”

基于上述信息,你需要设置多个服务的几种方式。下面的说明描述了一些例子。在尝试任何人,关闭和删除任何现有的MySQL服务。

  • 方法1:指定一个标准选项文件的所有服务选项。要做到这一点,每个服务器使用不同的服务名称。假设你想运行5.5.9mysqld使用服务名称mysqld1和8.0.14mysqld使用服务名称mysqld2。在这种情况下,你可以使用[ mysqld1 ]5.5.9和组[mysqld2]集团8.0.14。例如,您可以设置C:\ my.cnf这样地:

    # options for mysqld1 service
    [mysqld1]
    basedir = C:/mysql-5.5.9
    port = 3307
    enable-named-pipe
    socket = mypipe1
    
    # options for mysqld2 service
    [mysqld2]
    basedir = C:/mysql-8.0.14
    port = 3308
    enable-named-pipe
    socket = mypipe2
    

    安装服务:使用全服务器路径名字确保寄存器窗口的每一个服务的正确执行程序:

    C:\> C:\mysql-5.5.9\bin\mysqld --install mysqld1
    C:\> C:\mysql-8.0.14\bin\mysqld --install mysqld2
    

    启动服务,使用服务管理器,或使用启动与适当的服务名称:

    C:\> NET START mysqld1
    C:\> NET START mysqld2
    

    停止服务,使用服务管理器,或使用网站与适当的服务名称:

    C:\> NET STOP mysqld1
    C:\> NET STOP mysqld2
    
  • 方法2:指定在单独的文件中,使用每个服务器选项--defaults-file当你安装服务向每个服务器所使用的文件。在这种情况下,每个文件应该使用列表选项[ mysqld ]群组

    通过这种方法,可以指定为5.5.9选项mysqld,创建一个文件C:\my-opts1.cnf看起来像这样:

    [mysqld]basedir = C:/mysql-5.5.9port = 3307enable-named-pipesocket = mypipe1

    《8.0.14mysqld,创建一个文件C:\my-opts2.cnf看起来像这样:

    [mysqld]basedir = C:/mysql-8.0.14port = 3308enable-named-pipesocket = mypipe2

    安装服务如下(在一行中输入每个命令):

    C:\> C:\mysql-5.5.9\bin\mysqld --install mysqld1
               --defaults-file=C:\my-opts1.cnf
    C:\> C:\mysql-8.0.14\bin\mysqld --install mysqld2
               --defaults-file=C:\my-opts2.cnf
    

    当你安装一个MySQL服务器作为一种服务和使用--defaults-file服务名称必须选择,选择的分析。

    安装服务后,启动和停止他们以同样的方式如前面的示例。

删除多个服务,使用mysqld --删除对于每一个指定服务名继--remove选项如果服务名称是默认的(MySQL),你可以忽略它

5.7.3运行在UNIX多个MySQL实例

笔记

这里讨论使用_ mysqld safe启动MySQL的多个实例。使用RPM分配MySQL的安装、启动和关闭服务器管理系统几个Linux平台。在这些平台上,_ mysqld safe是不是因为它是不必要的安装。有关使用系统来处理多个MySQL实例的信息,参见第2.5.9、“系统”管理MySQL服务器

一个方法是运行多个MySQL实例在UNIX是编译不同的服务器有不同的默认的TCP / IP端口和Unix套接字文件,使每一个听不同的网络接口。编制在不同基础目录为每个安装结果自动在一个单独的,编译的数据目录,日志文件,以及各服务器的PID文件位置。

假设现有的5.7服务器配置为默认的TCP / IP端口号(三三六)和Unix套接字文件(/tmp/mysql.sock)。配置一个新的8.0.14服务器有不同的运行参数,使用CMake指挥这样的事情:

shell> cmake . -DMYSQL_TCP_PORT=port_number \
             -DMYSQL_UNIX_ADDR=file_name \
             -DCMAKE_INSTALL_PREFIX=/usr/local/mysql-8.0.14

在这里,port_numberfile_name必须不同于默认的TCP / IP端口号和Unix套接字文件路径名,和CMAKE_INSTALL_PREFIX值指定安装目录下的一个不同于现有的MySQL的安装位置。

如果你有一个MySQL服务器侦听特定端口号,你可以使用下面的命令来找出运行参数可用于一些重要的配置变量,包括基目录和Unix套接字文件名:

shell> mysqladmin --host=host_name --port=port_number variables

通过这个命令显示的信息,你就可以知道期权价值使用时,一个额外的服务器配置。

如果你指定localhost作为主机名称,mysqladmin默认使用UNIX套接字文件连接而不是TCP / IP。显式指定的连接协议,使用--protocol={TCP|SOCKET|PIPE|MEMORY}选项

你不需要编译一个新的MySQL服务器就开始与不同的Unix套接字文件和TCP / IP端口号。也可以使用相同的服务器的二进制开始每次调用它以不同的参数值在运行时。这样做的一种方法是使用命令行选项:

shell> mysqld_safe --socket=file_name --port=port_number

开始第二服务器,提供不同的--socket--port选项值,并通过--datadir=dir_name选项_ mysqld safe因此,服务器使用不同的数据目录。

另外,把每个选项的服务器在不同的设置文件,然后开始每个服务器使用--defaults-file选择适当的选项,指定文件的路径。例如,如果两个服务器实例的选项文件的命名/usr/local MySQL / my.cnf/usr/local/mysql/my.cnf2启动服务器,这样的命令:

内核&#62;mysqld_safe --defaults-file=/usr/local/mysql/my.cnf内核&#62;mysqld_safe --defaults-file=/usr/local/mysql/my.cnf2

另一种方式来实现类似的效果是使用环境变量设置UNIX套接字文件名和TCP / IP端口号:

shell> MYSQL_UNIX_PORT=/tmp/mysqld-new.sock
shell> MYSQL_TCP_PORT=3307
shell> export MYSQL_UNIX_PORT MYSQL_TCP_PORT
shell> bin/mysqld --initialize --user=mysql
shell> mysqld_safe --datadir=/path/to/datadir &

这是一个从第二服务器进行测试使用的快捷方式。这种方法的好处是,环境变量的设置适用于您调用同一内核任何客户端程序。因此,对于那些客户连接自动向第二服务器。

4.9节,“MySQL程序环境变量”,包括一系列其他的环境变量,你可以使用MySQL程序的影响。

在UNIX的mysqld _多脚本提供了另一种方式来启动多个服务器。看到4.3.4“,”mysqld _多管理多个MySQL服务器”

5.7.4使用客户端程序在多服务器环境

与一个客户端程序,一个是听不同的网络接口,从编译到你的MySQL服务器连接的客户端,您可以使用下列方法之一:

  • 启动客户端--host=host_name--port=port_number使用TCP/IP远程服务器的连接,与--host=127.0.0.1--port=port_number使用TCP / IP到本地服务器的连接,或与--host=localhost--socket=file_name连接到使用UNIX套接字文件或Windows命名管道服务器。

  • 启动客户端--protocol=TCP使用TCP / IP连接,--protocol=SOCKET使用Unix套接字文件连接,--protocol=PIPE使用命名管道连接,或--protocol=MEMORY使用共享内存连接。TCP/IP连接,您可能还需要指定--host--port选项用于连接其他类型,您可能需要指定一个--socket选项指定一个UNIX套接字文件或Windows命名管道的名字,或--shared-memory-base-name选项指定的共享内存的名字。共享内存连接只支持Windows。

  • 在Unix上,设置MYSQL_UNIX_PORTmysql_tcp_port环境变量指向Unix套接字文件和TCP / IP端口号在你开始你的客户。如果你通常使用一个特定的socket文件或端口号,你可以把你的这些命令来设置环境变量.login文件,使他们能够在您每次登录时。看到4.9节,“MySQL程序环境变量”

  • 指定默认的Unix套接字文件和TCP/IP的端口号[client]选择一组文件。例如,您可以使用C:\ my.cnf在Windows中,或.my.cnf在你的家目录文件在UNIX。看到第4.2.6、“使用选项文件”

  • 在C程序中,你可以在指定的套接字文件或端口号的争论mysql_real_connect()呼叫。你也可以通过调用的程序读取选项文件mysql_options()。看到27.7.7”型,C API函数》

  • 如果您使用的是PerlDBD::mysql模块,可以读取MySQL选项文件选项。例如:

    $dsn = "DBI:mysql:test;mysql_read_default_group=client;"        . "mysql_read_default_file=/usr/local/mysql/data/my.cnf";$dbh = DBI->connect($dsn, $user, $password);

    看到第27,MySQL Perl API”

    其他的编程接口可以读取选项文件提供类似的能力。