MySQL系统变量

6. log_output

功能:决定通用查询日志和慢查询日志的输出位置

取值:TABLE(输出到表),FILE(默认值,输出到文件),NONE(不输出,优先级高),以逗号分隔的关键字列表

说明:

①log_output = NONE时,通用查询日志和慢查询日志无论是否开启,均不起作用

②FILE的性能优于TABLE

类型:全局系统变量

设置:set log_output = FILE;



5. slow_query_log

功能:开启/关闭慢查询日志

取值:0关闭,1开启

类型:全局系统变量

设置:set slow_query_log = 1;

说明:慢查询日志起作用的前提是,log_output全局系统变量为FILE



4. innodb_buffer_pool_instances



3. innodb_file_per_table

功能对后续新创建的InnoDB表,使用的表空间类型为FILE_PER_TABLE

取值:0开启,1关闭

作用域:全局

类型:动态变量,随时设置随时生效

设置:set global innodb_file_per_table = 1;


说明

开启该设置后,后续新创建的InnoDB表,其索引和数据,放入自己的表空间,即对应数据库目录下的同名.ibd文件。

关闭该设置后,新表的索引和数据,放入系统表空间,即顶层数据目录下的ibdata文件。


好处:

1. 



2. wait_timeout

功能:决定超时时间

作用域:全局和会话

类型:动态变量,随时设置随时生效

取值:[1, 31536000],单位秒,跨度:1秒——1年,系统默认值28800(8小时)


说明

存在一个全局wait_timeout,每个连接又有各自的wait_timeout、是为会话级wait_timeout。

会话级wait_timeout在连接建立时被初始化,初始值由client连接类型决定:

连接选项包含CLIENT_INTERACTIVE,由全局interactive_timeout初始化,如navicat premium的命令行界面;

否则,由全局wait_timeout初始化,如mysql-connector/c++的Connection* sql::Driver::connect()


设置

set global wait_timeout = n1;

set session wait_timeout = n2;

设置全局级wait_timeout对当前会话级wait_timeout无任何影响,当前会话级wait_timeout已在连接建立时初始化。该设置对后续新建连接的会话级wait_timeout的影响取决于client的连接类型。如果想改变当前会话级wait_timeout,需要显示调用语句二。


查看

show global variables like "wait_timeout";

show session variables like "wait_timeout";



1. innodb_flush_log_at_trx_commit

功能:决定log buffer写入log file最后刷到磁盘的时机

影响:insert操作的速度

取值:0, 1, 2

        0——每秒写入一次,伴随着刷新一次

        1——每当有事物提交,即写入一次刷新一次

        2——每当有事物提交,即写入一次,刷新为每秒一次

作用域:全局

类型:动态变量,随时设置随时生效

设置:set global innodb_flush_log_at_trx_commit = 0;

说明:设置成功后,所有会话均受影响;MySQL重启后,该变量由配置文件初始化,默认为1


安全性:1 > 2 > 0

        进程mysqld崩溃,type0一秒内的事物全丢;

        操作系统崩溃或意外断电,type2一秒内的事物全丢;

        type1符合ACID,安全级别最高。


测试

表结构:


测试工具:mysqlslap

测试条件:单用户执行1000次insert,insert内容相同。

结果:speed0 = 2 * speed2 = 8 * speed1



前言

系统变量的作用域,包括全局级和会话级。

允许一个变量,既有全局级对象,又有会话级对象,如global var_name和session var_name同时存在。

若系统变量同时拥有全局级对象和会话级对象,则有如下结论: 

1. 全局级作为会话级的初始默认值

2. 由会话级控制具体行为


例如,假设存在系统变量Mario,功能:控制是否修水管,作用域:全局和会话,则有如下结论:

1. 每个新进连接的session Mario由global Mario初始化;

2. 某时刻,global Mario改变,不影响已打开连接的session Mario。只影响后续打开连接的session Mario;

3. 每个连接,是否修水管的行为,由该连接的session Mario值决定,与当前global Mario值无关。

原文地址:https://www.cnblogs.com/chaikefusibushiji/p/7475591.html