MySQL参数

MySQL在启动的时候会去加载初始化一系列的参数文件,这些参数动态的决定了MySQL运行时的特性。MySQL中的参数是由一个个键值对(key-value)组成的,可以分为以下两类:

  • 动态参数:可以在MySQL实例运行时改变其value的值。
  • 静态参数:只能在MySQL实例启动的时候进行初始化,运行期间其value是只读的,不可改变。

MySQL实例在启动的时候是按照一定的顺序去读取这一系列参数文件的,Linux模式下,我们通过以下的命令去查看这些配置文件以及他们读取的先后顺序


这些文件可能在你的环境中不会存在,但是这并不影响MySQL实例的启动,若有则读之,若没有则自动忽略,倘若这些配置文件都不存在,MySQL还是可以正常的启动,因为它会读取编译时代码中的初始值进行初始化,需要注意的是这些文件中后面的配置文件会覆盖前面的配置文件中key相同项的value。


查看MySQL实例的参数

除了可以在配置文件中查看到已经定义了的变量值,在MySQL命令行下,我们可以通过show variables命令查看相关的参数文件。

比如,我们查看MySQL的error.log文件位置,可以通过下面的方式


查看MySQL数据文件的地址


修改配置文件

我们可以在参数文件中修改那些静态参数,可以在MySQL命令行使用SET命令在运行时修改动态参数。MySQL参数的作用域分为会话级参数(session)全局参数(global),在参数文件中修改的静态参数是对所有的会话都生效的,使用SET命令在运行时设置的参数是可以分为会话级和全局级的,有的参数只能是会话级,比如autocommit参数,有些则只能是全局级的,比如binlog_cache_size参数,而另外的一些则是既可以设置为会话级也可以设为全局级的,比如,read_buffer_size参数。

在配置文件中修改参数

[root@localhost etc]# vi /etc/my.cnf

# For advice on how to change settings please see
# http://dev.mysql.com/doc/refman/5.6/en/server-configuration-defaults.html
# *** DO NOT EDIT THIS FILE. It's a template which will be copied to the
# *** default location during install, and will be replaced if you
# *** upgrade to a newer version of MySQL.

[mysqld]

# Remove leading # and set to the amount of RAM for the most important data
# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
# innodb_buffer_pool_size = 128M

# Remove leading # to turn on a very important data integrity option: logging
# changes to the binary log between backups.
# log_bin

# These are commonly set, remove the # and set as required.
# basedir = .....
# datadir = .....
# port = .....
# server_id = .....
# socket = .....

# Remove leading # to set options mainly useful for reporting servers.
# The server defaults are faster for transactions and fast SELECTs.
# Adjust sizes as needed, experiment to find the optimal values.
# join_buffer_size = 128M
# sort_buffer_size = 2M
# read_rnd_buffer_size = 2M
#这里设置两个静态参数
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

innodb_purge_threads=2

在运行时修改动态参数( 注意下面这个有趣的列子)

mysql> show variables like 'autocommit';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| autocommit    | ON    |
+---------------+-------+
1 row in set (0.00 sec)

mysql> set global autocommit=0;
Query OK, 0 rows affected (0.00 sec)

mysql> show variables like 'autocommit';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| autocommit    | ON    |
+---------------+-------+
1 row in set (0.00 sec)

mysql> set session autocommit=0;
Query OK, 0 rows affected (0.00 sec)

mysql> show variables like 'autocommit';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| autocommit    | OFF   |
+---------------+-------+
1 row in set (0.00 sec)

因为autocommit参数只是会话级的,所以当强制把它设置为全局有效时,语句可以正常的执行但是autocommit的值并不会改变,当使用session级别时,方可设置生效,当然,当不加session或global的时候,默认是session。但是,对于那些即可设置全局生效,有可设置当前会话生效的参数,不加域限制,默认只在当前会话生效,比如,下面的例子

mysql> select @@session.read_buffer_size\G
*************************** 1. row ***************************
@@session.read_buffer_size: 131072
1 row in set (0.15 sec)

mysql> select @@global.read_buffer_size\G
*************************** 1. row ***************************
@@global.read_buffer_size: 131072
1 row in set (0.00 sec)

mysql> set read_buffer_size=524288;
Query OK, 0 rows affected (0.02 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: 131072
1 row in set (0.00 sec)

这里使用了 select @@session 和 select @@global方式进行查看会话参数和全局参数,同样可以使用set @@global和set @@session进行设置全局和会话参数。

如果在运行期间改变静态参数会直接报错,因为它们是只读的。

mysql> set @@global.datadir='/root/mysql';
ERROR 1238 (HY000): Variable 'datadir' is a read only variable


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MySQL是目前最常用的关系型数据库管理系统之一,配置合适的参数对于提升MySQL的性能至关重要。以下是一些关于MySQL参数配置的说明: 1. 缓冲区参数MySQL使用缓冲区来提高读写性能。其中,key_buffer用于缓存索引数据,为了提高查询速度,这个参数应该设置为适当的大小。innodb_buffer_pool_size用于缓存InnoDB数据和索引,这个参数应该根据系统的可用内存进行调整。 2. 连接参数MySQL有一个最大连接数限制,可以通过max_connections参数进行配置。该参数取决于应用程序的并发连接数和服务器的硬件规格。如果连接数过多,可能会导致服务器负载过重。 3. 查询缓存参数MySQL可以将查询结果缓存起来以提高查询性能。query_cache_size参数配置了查询缓存的大小。然而,并不是所有类型的查询都适合使用查询缓存,因此在使用查询缓存时需要评估查询的频率和复杂度来确定是否启用缓存。 4. 日志参数MySQL的日志可以用于数据恢复和查询审计。这些日志包括二进制日志、事务日志和错误日志等。log_bin参数用于启用二进制日志,根据需要进行配置。 5. 硬件参数MySQL的性能也受到服务器硬件的影响。例如,如果服务器的磁盘速度较慢,InnoDB的写入性能可能会受到影响。可以通过配置innodb_io_capacity参数来优化InnoDB的磁盘写入性能。 总之,合理配置MySQL参数对于提高数据库性能至关重要。为了确定最佳的参数配置,需要根据应用程序的需求、服务器的硬件规格以及数据库的负载情况进行评估和测试。同时,需要监控和调整参数配置以适应数据库性能的变化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值