MySQL系统变量

  • 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

posted @ 2021-06-22 15:59  geek_ace  阅读(157)  评论(0编辑  收藏  举报