您的位置:首页 > 数据库 > MySQL

MySQL系统变量

2015-08-05 14:01 513 查看
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值无关。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: