频道栏目
读书频道 > 数据库 > Mysql > MySQL技术内幕:InnoDB存储引擎(第2版)
3.1.2 参数类型
2013-05-24 08:43:32     我来说两句
收藏   我要投稿
本书由国内资深MySQL专家亲自执笔,国内外多位数据库专家联袂推荐。作为国内唯一一本关于InnoDB的专著,本书的第1版广受好评,第2版不仅针对最新的MySQL 5.6对相关内容进行了全面的补充,还根据广大读者的反馈意...  立即去当当网订购

MySQL数据库中的参数可以分为两类:

动态(dynamic)参数

静态(static)参数

动态参数意味着可以在MySQL实例运行中进行更改,静态参数说明在整个实例生命周期内都不得进行更改,就好像是只读(read only)的。可以通过SET命令对动态的参数值进行修改,SET的语法如下:

SET

| [global | session] system_var_name= expr

| [@@global. | @@session. | @@]system_var_name= expr

这里可以看到global和session关键字,它们表明该参数的修改是基于当前会话还是整个实例的生命周期。有些动态参数只能在会话中进行修改,如autocommit;而有些参数修改完后,在整个实例生命周期中都会生效,如binlog_cache_size;而有些参数既可以在会话中又可以在整个实例的生命周期内生效,如read_buffer_size。举例如下:

mysql>SET read_buffer_size=524288;

Query OK, 0 rows affected (0.00 sec)

 

mysql>SELECT @@session.read_buffer_size\G;

*************************** 1. row ***************************

@@session.read_buffer_size: 524288

1 row in set (0.00 sec)

 

mysql>SELECT @@global.read_buffer_size\G;

*************************** 1. row ***************************

@@global.read_buffer_size: 2093056

1 row in set (0.00 sec)

上述示例中将当前会话的参数read_buffer_size从2MB调整为了512KB,而用户可以看到全局的read_buffer_size的值仍然是2MB,也就是说如果有另一个会话登录到MySQL实例,它的read_buffer_size的值是2MB,而不是512KB。这里使用了set global|session来改变动态变量的值。用户同样可以直接使用SET@@globl|@@session来更改,如下所示:

mysql>SET @@global.read_buffer_size=1048576;

Query OK, 0 rows affected (0.00 sec)

 

mysql>SELECT @@session.read_buffer_size\G;

*************************** 1. row ***************************

@@session.read_buffer_size: 524288

1 row in set (0.00 sec)

 

mysql>SELECT @@global.read_buffer_size\G;

*************************** 1. row ***************************

@@global.read_buffer_size: 1048576

1 row in set (0.00 sec)

这次把read_buffer_size全局值更改为1MB,而当前会话的read_buffer_size的值还是512KB。这里需要注意的是,对变量的全局值进行了修改,在这次的实例生命周期内都有效,但MySQL实例本身并不会对参数文件中的该值进行修改。也就是说,在下次启动时MySQL实例还是会读取参数文件。若想在数据库实例下一次启动时该参数还是保留为当前修改的值,那么用户必须去修改参数文件。要想知道MySQL所有动态变量的可修改范围,可以参考MySQL官方手册的Dynamic System Variables的相关内容。

对于静态变量,若对其进行修改,会得到类似如下错误:

mysql>SET GLOBAL datadir='/db/mysql';

ERROR 1238 (HY000): Variable 'datadir' is a read only variable

您对本文章有什么意见或着疑问吗?请到论坛讨论您的关注和建议是我们前行的参考和动力  
上一篇:3.1.1 什么是参数
下一篇:3.2 日志文件
相关文章
图文推荐
排行
热门
最新书评
特别推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站