MySQL(InnoDB剖析):10---文件之(参数文件)

一、参数文件概述

  • 当MySQL实例启动时,数据库会先去读一个配置参数文件,用来寻找数据库的各种文件所在位置以及制定某些初始化参数
  • 在默认情况下,MySQL实例会按照一定的顺序在指定的位置进行参数文件的读取,用户只需通过下面的命令来进行查看即可:
    • 通过下图我们可以知道,MySQL在启动时读取配置文件的顺序是:/etc/my.cnf->/etc/mysql/my.cnf->/usr/etc/my.cnf->~/.my.cnf
mysql --help | grep my.cnf

 

参数文件有无对数据库启动的影响

  • MySQL数据库参数文件的作用和Oracle数据库的参数文件及其类似,不同的是,Oracle实例在启动时若找不到参数文件,是不能进行装载的。MySQL稍微有所不同,MySQL实例可以不需要参数文件,这时所有的参数值取决于编译MySQL时指定的默认值和源代码中指定参数的默认值
  • 但是,如果MySQL实例在默认的数据库目录下找不到mysql架构,则启动同样会失败,此时可能在错误日志文件中找到如下内容:
    • MySQL的mysql架构中记录了访问该实例的权限,当找不到这个架构时,MySQL实例不会成功启动

  • MySQL数据库的参数文件是以文本方式进行存储的
  • Oracle数据库存在所谓的隐藏参数,以供Oracle“内部人士”使用,SQL Server也有类似的参数。但是MySQL没有这类参数。当然,也不需要隐藏参数

二、参数文件的格式

  • 简答地说,可以把数据库参数看成一个键/值(key/value)对
  • 例如:inoodb_buffer_pool_size=1G,那么“inoodb_buffer_pool_size”就是键,“1G”就是值

三、查看参数

通过命令

  • 可以通过命令“show variables”查看数据库中的所有参数。当然也可以通过like过滤参数名
  • 例如下面查看“innodb_buffer_pool_size”参数
show variables like 'innodb_buffer_pool_size'\G;

 

通过表格

  • 从MySQL 5.1开始,可以通过查看information_schema架构下的global_variables视图来进行查找
select * from information_schema.global_variables
where variable_name like 'innodb_buffer_pool_size'\G;

 

四、参数类型

  • MySQL数据库中的参数分为两类:
    • 动态(dynamic)参数:动态参数意味着可以在MySQL实例运行中进行更改
    • 静态(static)参数:静态参数在整个实例声明周期内都不得进行更改(只读)

动态参数

  • 参数类别:
    • 有些参数值只可以在当前会话中生效,如autocommit
    • 有些参数可以在整个实例声明周期中生效,如binlog_cache_size
    • 有些参数既可以在会话中也可以在整个实例的生命周期内生效,如read_buffer_size
  • 动态参数可以通过set命令进行修改:
    • global:参数的修改是基于当前会话
    • session:参数的修改是基于整个实例的生命周期

  • 演示案例:例如下面使用set命令修改当前会话的“read_buffer_size”参数值,可以看到当前会话的参数修改了,但是全局参数依然没有变化

  • 用户也可以通过“set @@global|@@session”来修改当前会话/整个实例的参数。例如下面演示与上面类似的案例

  • 备注:set命令修改的参数仅在本次MySQL服务中有效,当MySQL重启之后,参数值恢复为原先的模样。如果想永久的改变参数值,应该去修改MySQL的配置文件

静态参数

  • 静态参数不能进行修改。如果修改了会得到以下的错误

发布了1372 篇原创文章 · 获赞 919 · 访问量 28万+

猜你喜欢

转载自blog.csdn.net/qq_41453285/article/details/104109148