跳至主要內容

系统参数

chanchaw大约 3 分钟编程语言数据库mysql

概述

sql_mode

查看参数:show variables like 'sql_mode'; 有3个枚举值:

  1. 空白字符串 - 默认
  2. PAD CHAR_TO_FULL_LENGTH - 返回数据时保留尾部空格
  3. STRICT_ALL_TABLES - 严格模式 - 插入数据长度超过char指定长度时,数据库给出错误提示,不保存数据其他情况会对长字符串做截断处理

group_concat_max_len

自动提交

# 查看会话级
how session variables like '%autocommit%';

# 查看全局级
show global variables like 'autocommit';

# 修改会话级
set session autocommit = 0;

# 修改全局级
set global autocommit = 0;

# 自动提交模式设置为关闭状态下,开始一个新事务时系统会隐式提交之前的结果然后再开始新的事务

服务端缓存状态

SHOW VARIABLES LIKE 'query_cache%'; // query_cache_type = OFF 表示缓存没有开启,5.7默认是关闭该功能的

服务端数据容量

服务端一次能接收到的数据容量的最大值

#计量单位是字节,如104857600表示100M
SHOW VARIABLES LIKE 'max_allowed_packet';

# 临时设置
-- 设置全局参数(影响所有新连接)
SET GLOBAL max_allowed_packet = 1073741824;  -- 1GB
-- 设置会话参数(仅影响当前连接)
SET SESSION max_allowed_packet = 1073741824;
-- 查看当前设置
SHOW VARIABLES LIKE 'max_allowed_packet';

# 永久设置
# linux系统找到配置文件 /etc/my.cnf 或者/etc/mysql/my.cnf
# windows系统找到配置文件 my.ini
# 修改如下配置项
[mysqld]
max_allowed_packet = 1G  # 可以使用K、M、G单位

查看MYSQL 版本号

select version();
select version() from dual;

max_allowed_packet

作用目标:

  1. 客户端发送给MYSQL服务端的单个 SQL STATEMENT
  2. 服务端发送给客户端的单笔数据的最大大小
  3. master 发送给 slave 一个 binary log event 的大小

由于服务端和客户端都有该参数,所以两边要同步调整 系统运行中有超过该容量时报错:EN_NET_PACKET_TOO_LARGE,并且关闭 connection 在有的客户端中也显示信息:Lost connection to MySQL server during query 查看:show global variables like 'max_allowed_packet';显示的数字单位是字节 - Byte MYSQL8.0 最大允许1GB 增大本参数可以加快查询速度,设置为200M: set global max_allowed_packet = 200 * 1024 * 1024; 在MYSQL IDE 中通过上面代码设置会立即生效,但是服务器重启后会恢复原始数值 要永久修改要在配置文件 C:\ProgramData\MySQL\MySQL Server 5.7\my.ini 下搜索 max_allowed_packet 进行设置,示例:max_allowed_packet=4M

innodb_buffer_pool_size

缓冲池是用于存储InnoDB表,索引和其他辅助缓冲区的缓存数据的内存区域。缓冲池的大小对于系统性能很重要。更大的缓冲池可以减少磁盘I/O来多次访问同一表数据。在专用数据库服务器上,可以将缓冲池大小设置为计算机物理内存大小的80%。 查看:show global variables like 'innodb_buffer_pool_size'; 设置:set global innodb_buffer_pool_size=1073741824;设置为1G

innodb_buffer_pool_chunk_size

innodb_buffer_pool_instances

innodb_buffer_pool_instances 表示innodb引擎中缓冲池的个数,innodb_buffer_pool_chunk_size表示单个缓冲池的大小,所以一般 innodb_buffer_pool_size = innodb_buffer_pool_chunk_size * innodb_buffer_pool_instances 设置 innodb_buffer_pool_instances 数字大些有利于提供并发度

wait_timeout & interactive_timeout

wait_timeout 表示非交互式的连接在释放前等待的 sleep 时长。如何查看连接空闲的时长:

连接超时.png
连接超时.png

看上图中最大的空闲时长达到1700+,此时设置的 wait_timeout 是1800,单位是秒,同时还要注意配置给 MySQL 的最大连接数,使用命令:show variables like '%max_connections%'; 查看,当达到该数值之后就不会再增加连接了,那么会拒绝所有访问MYSQL的服务。 interactive_timeout 表示交互式连接释放时等待空闲的时长(数据库管理工具),要修改这两个参数的值注意有 session 级别和 global 级别,要同时设置 wait_timeoutinteractive_timeout 两个参数才有能生效(两个参数的计量单位都是秒),如下:

查看参数设置


show variables like '%wait_timeout%';
show variables like 'interactive_timeout%';

show GLOBAL variables like '%wait_timeout%';
show GLOBAL variables like 'interactive_timeout%';

设置参数

DELIMITER $$
set global wait_timeout=300;
set global interactive_timeout=300;$$
DELIMITER ;


DELIMITER $$
set wait_timeout=300;
set interactive_timeout=300;$$
DELIMITER ;