- max_allowed_packet
Command-Line Format | --max-allowed-packet=# |
---|---|
System Variable | max_allowed_packet |
Scope | Global, Session |
Dynamic | Yes |
Type | Integer |
Default Value | 4194304 |
Minimum Value | 1024 |
Maximum Value | 1073741824 |
Block Size | 1024 |
一个包的最大值,or any generated/intermediate string,或者由接口函数 mysql_stmt_send_long_data()
发送的参数,默认值是4MB。
包的消息缓存默认被初始化为 net_buffer_length
字节大小,这个默认的值实在是太小了,为了能够抓取更大的包,可以将参数值设置到max_allowed_packet
字节大小。
如果你需要用到blob大对象或者长字符串,那么就需要增加max_allowed_packet
的值,他应该被设置成你想用的最大的大对象一样大,这个参数的大小限制是1GB.这个值的大小应该被设置成1024的倍数,否则会按大于1024倍数的部分会被截断掉。
当你通过改变参数max_allowed_packet
的大小来改变消息缓冲大小的时候,你也应该要改变你客户端应用程序使用的该缓存的大小,一般内置到客户端库的max_allowed_packet
默认值是1GB,但是个别的客户端程序可能会覆盖掉这个值。比如:mysql和mysqldump的默认值默认的分别是16MB和24MB,我们可以通过配置文件或者命令行的方式改掉这一默认值。
这个变量会话级别的值是只读的,客户端能接收的最大值跟参数会话级别的当前值大小有关,但是,server端是无法发送超过当前max_allowed_packet
全局设置大小的包给客户端的(如果客户端连接上server端后再调整max_allowed_packet
全局大小的设置,那么max_allowed_packet
global级别的设置是可能小于session级别的)
- net_buffer_length
Command-Line Format | --net-buffer-length=# |
---|---|
System Variable | net_buffer_length |
Scope | Global, Session |
Dynamic | Yes |
Type | Integer |
Default Value | 16384 |
Minimum Value | 1024 |
Maximum Value | 1048576 |
Block Size | 1024 |
每个线程都会有一个与之对应的连接buffer和结果buffer,两者的初始大小都是net_buffer_length
参数的大小,但是在需要的时候可以动态扩展到max_allowed_packet
字节大小,每个sql语句执行完成后结果buffer会收缩到 net_buffer_length
大小
通常来说,不用改变这个变量的大小,但是如果内存比较缺乏的话,我们可以将其设置得小一点,跟你客户端发送sql语句的大小差不多大小,如果你的语句大小超过变量的大小设置,这个连接buffer是会自动增大的,net_buffer_length
的最大值是1MB
这个变量会话级别是只读的。
innodb_max_dirty_pages_pct
innodb_max_dirty_pages_pct_lwm
innodb_max_purge_lag
innodb_max_purge_lag_delay
innodb_max_undo_log_size