mysql查看和修改系统参数

发布时间:2022-03-01 10:44:27 作者:yexindonglai@163.com 阅读(1003)

mysql 参数

MySQL提供了相当多的系统参数,涉及方方面面。我们可以使用show关键字来查看:

  1. show variables like '%autocommit%';
  2. 或者
  3. show status like '%xxx%';

修改参数值

mysql有一些参数是可以直接修改的,比如mysql的自动提交是默认开启,我们修改为关闭自动提交

  1. set autocommit = 1;

当然也有些系统参数不能直接修改里面的值,当我们修改时会报错,就像这样:

  1. mysql> set @@ft_max_word_len = 1;
  2. ERROR 1238 (HY000): Variable 'ft_max_word_len' is a read only variable

所以只能在配置文件中配置,配置参数后必须重启mysql方可生效

  • windows版本的mysql配置文件为 my.ini文件
  • linux版本的mysql配置文件为my.cnf 文件

[mysql] 参数说明

以下参数需要加到[mysql]下面

参数 说明
datadir=/xxx/xxx 数据文件存放目录
socket=/xx/xx/mysql.socket 本地连接文件,通过localhost来连接mysql需要用到的文件
pid_file 存储mysql的pid,可通过此id杀死mysql进程
port=3306 mysql的端口号
default_storage_engine=Innodb 存储引擎
skip_grant_tables 使登录时跳过权限检查;登录mysql时,不需要密码就可以登录了:mysql -u root -p

字符相关

参数 说明
character_set_client=GBK 客户端字符集
character_set_connection 处理客户端发来信息的编码格式
character_set_database 数据库默认的字符集
character_set_filesystem 文件系统的编码格式,把操作系统上的文件名转化成此字符集,即把 character_set_client转换character_set_filesystem, 默认binary是不做任何转换的
character_set_results mysql发送给客户端所用的字符集
character_set_server mysql server 默认字符集,这个变量建议由系统自己管理,不要人为定义。
character_set_system   数据库系统使用的编码格式,这个值一直是utf8,不需要设置,它是为存储系统元数据的编码格式。

连接相关(connection)

参数 说明
max_connections mysql最大连接数,默认151,可通过命令:show processlist查看连接数量,一行就是一个连接
max_user_connections 限制每个用户的连接个数,默认为0,0表示不限制
back_log 注意这不是日志,这是用来暂存连接的数量大小,默认是80个,当mysql线程在一个很短时间内得到非常多的连接请求时,就会起作用,连接数量超过 max_connections所设置的值,多出来的连接就会存放到back_log中,当back_log也存不下时,就会拒接掉新的连接;
wait_timeout mysql在关闭一个长连接(非交互式连接)之前需要等待的时长
interactive_timeout 关闭一个短连接(交互式连接)需要等待的秒数

日志相关(log)

参数 说明
log_error 指定错误日志文件名称和存放路径,用于记录mysql启动和停止时、以及服务器在运行中出现严重错误时的相关信息
log_bin 指定二进制日志文件名称和路径,用于记录所有对数据更改的sql语句;默认是关闭的,使用主从复制时,这个开关一定要开启。另外,如果数据丢失了,可通过此文件恢复数据,所以说,建议随时开启这个开关;只要配上路径就会自动打开:log-bin=/bin/mysql.bin
binlog_do_db 指定更新到二进制日志的库,比如我指定binlog_do_db=test,就只会将test库中的数据记录到二进制日志中,其他库都不记录,如果要设置多个库,就得分2行来配置:binlog_do_db=test,binlog_do_db=xx
binlog_ignore_db 指定不记录到二进制日志的库,
sync_binlog 指定多少次写日志后同步磁盘,用户修改数据后,会先将日志存在缓存中,每隔一段时间将缓存中的数据同步到磁盘中进行持久化存储;
general_log 是否开启查询日志记录,默认关闭
general_log_file 查询日志记录文件存放地址;记录所有的查询语句
slow_query_log 是否开启慢查询日志记录
slow_query_log_file 指定慢查询日志文件名称, 用于记录耗时比较长的查询语句
long_query_time 设置慢查询的时间,超过这个时间的查询语句就会被记录到show_query_log指定的文件中,
log_show_admin_statements 是否将管理语句写入慢查询日志

缓存相关(cache)

参数 说明
key_buffer_size 索引缓存区大小,只对myisam起作用,默认8M,一般情况下,默认值够用了
query_cache_size 查询缓存大小,mysql8.0以上版本已被删除<br>  show status like '%Qcache%'查看缓存的相关属性<br>  Qcache_free_blocks:缓存中相邻内存块的个数,如果值比较大,那么查询缓存中碎片比较多<br>  Qcache_free_memory:查询缓存中剩余的内存大小<br>  Qcachae_hits:表示有多少次命中缓存<br>  Qcache_inserts:表示多少次未命中而插入<br>  Qcache_lowmen_prunes:多少条query因为内存不足而被移除出cache<br>  Qcache_queries_in_cache:当前cache中缓存的query数量<br>  Qcache_total_blocks:当前cache中block的数量
query_cache_limit 超过此大小将不被缓存
query_cache_min_res_unit 缓存块最小值
query_cache_type 缓存类型,决定缓存什么样的查询,默认是关闭的,一共有三个值 <br>0:禁用<br>1:将缓存所有的结果,除非sql中使用sql_no_cache禁用查询缓存<br>2:只缓存select语句中通过sql_cache指定需要缓存的查询
sort_buffer_size 每个线程需要排序的线程分配该大小的缓冲区
max_allowed_packet=32M 限制server接收的数据包大小
join_buffer_size=2M 表示关联缓存的大小,join连表没有索引的时候会使用的缓存
thread_cache_size 这个和java的线程池很像,就是线程在用完之后不会马上销毁,而是先存起来,下次可以直接使用,省去了开启线程的开销<br>Threads_cached:代表当前此时此刻线程缓存中有多少空闲线程<br>Threads_connected:代表当前已建立连接的数量<br>Threads_created:代表最近一次服务驱启动,已创建线程的数量,如果该值比较大,那么服务器会一直再创建线程;<br>Threads_running:代表当前激活的线程数

innodb相关

参数 说明
innodb_buffer_pool_size 该参数可以设置指定大小的内存来缓冲数据和索引,最大可以设置为物理内存的80%
innodb_flush_log_at_trx_commit 主要控制innodb将log buffer中的数据写入日志文件并flush磁盘的时间点,值分别为:0,1,2
innodb_thread_concurreney 设置innodb线程的并发数,设为0表示不限制,如果要设置建议设为cpu核心数一直,或者是cpu核心数的2倍
innodb_log_buffer_size 此参数确定日志文件所用的内存大小,单位:M
innodb_log_file_size 此参数确定数据日志爱文件的大小,单位:M
innodb_log_files_in_group 以循环方式将日志文件写入到多个文件中
read_buffer_size mysql读入缓冲区大小,对表进行顺序扫描的请求将分配到一个读入缓冲区
read_md_buffer_size mysql随机读的缓存区大小
innodb_file_per_table 此参数确定为每张表分配一个新的文件;默认开启,如果关闭了,创建表之后,将不会产生后缀为.ibd的文件,他的数据会存储到ibdata1这个表空间文件中;最好是一张表一张文件;

关键字Mysql