关注我,获取更多的分析。
在MySQL中,我们经常使用如下两个命令来查看MySQL服务器的一些参数配置信息。
show status like '%xxx%';show variables like '%xxx%';
有时候又用到如下两个命令:
show global status like '%xxx%';show global variables like '%xxx%';
下面的两个命令带有关键词global,上面的两个命令不带有global,这个我们应该都知道,带有global关键字的命令是查看全局参数的值,而不带global关键字的命令是只查看当前session级别的参数的值。
那具体什么是全局参数?什么又是会话session级别的参数?
所谓的全局参数:某个参数的值设置之后,对所有连接到MySQL服务的用户都生效,所有用户登录到MySQL后,该参数都是使用同一个值。
而会话级别的参数:某个参数的值设置之后,只对当前连接到MySQL服务器的当前会话生效,当前会话退出后,这个参数就恢复了默认值。并且当连接A登录的时候,这个参数对A生效。但是对于新开一个连接服务B,在B的会话中,设置的参数并不会生效。
但是show status和show variables有什么区别?我们简单总结一下。
何时用status何时用variables
给我一个参数名称,我怎么确定我该用哪个命令来查看它的值是多少?一开始的时候,我是两个命令都执行一次,哪个命令有结果输出那么就证明应该使用哪个命令来查看这个参数的值。
但是,今天我仔细查了一下规律:
凡是参数的开头字母是大写的参数,都需要使用 show status命令来查看该参数的具体值是多少,用另外一个命令查看该参数输出内为空。凡是参数的开头字母是小写的参数,都需要使用 show variables命令来查该参数的具体值是多,用另外一个命令查看该参数输出内为空。区别
status
status查看的参数值是由MySQL自己统计计算得到的。它是MySQL服务运行状态具体的量化体现。都是不可以修改的,也就是不能通过setxxx=yyy;的方式来改变它的值的。这种参数大多数以大写的英文字母开头。
variables
variables查看的参数是MySQL服务的配置参数,在启动MySQL服务的时候,是可以修改具体的参数值来达到对MySQL进行动态配置的目的,通常配置在MySQL的my.cnf配置文件中。这些参数中,有些动态的参数可以通过setxxx=yyy;的方式来动态修改。这种参数大多数以小写的英文字母开头。
使用示例
下面示例分别使用show status和show variables查看了大小写开头的参数的值。可以看出结果和上面我们总结的是可以匹配的。
mysql> show status like '%innodb_buffer%';+---------------------------------------+--------------------------------------------------+|Variable_name|Value|+---------------------------------------+--------------------------------------------------+|Innodb_buffer_pool_dump_status|Dumping of buffer pool not started ||Innodb_buffer_pool_load_status|Buffer pool(s) load completed at 20050917:54:00||Innodb_buffer_pool_resize_status|||Innodb_buffer_pool_pages_data|7007||Innodb_buffer_pool_bytes_data|114802688||Innodb_buffer_pool_pages_dirty|0||Innodb_buffer_pool_bytes_dirty|0||Innodb_buffer_pool_pages_flushed|45090529||Innodb_buffer_pool_pages_free|1024||Innodb_buffer_pool_pages_misc|160||Innodb_buffer_pool_pages_total|8191||Innodb_buffer_pool_read_ahead_rnd|0||Innodb_buffer_pool_read_ahead|2982307001||Innodb_buffer_pool_read_ahead_evicted|2992094||Innodb_buffer_pool_read_requests|338849182502||Innodb_buffer_pool_reads|348763394||Innodb_buffer_pool_wait_free|1135862||Innodb_buffer_pool_write_requests|2591272346|+---------------------------------------+--------------------------------------------------+18 rows inset(0.00 sec)mysql> show variables like '%innodb_buffer%';+-------------------------------------+----------------+|Variable_name|Value|+-------------------------------------+----------------+| innodb_buffer_pool_chunk_size |134217728|| innodb_buffer_pool_dump_at_shutdown | ON || innodb_buffer_pool_dump_now | OFF || innodb_buffer_pool_dump_pct |25|| innodb_buffer_pool_filename | ib_buffer_pool || innodb_buffer_pool_instances |1|| innodb_buffer_pool_load_abort | OFF || innodb_buffer_pool_load_at_startup | ON || innodb_buffer_pool_load_now | OFF || innodb_buffer_pool_size |134217728|+-------------------------------------+----------------+10 rows inset(0.00 sec)mysql>mysql> show status like '%innodb_buffer_pool_size%';Emptyset(0.00 sec)mysql> show variables like '%innodb_buffer_pool_size%';+-------------------------+-----------+|Variable_name|Value|+-------------------------+-----------+| innodb_buffer_pool_size |134217728|+-------------------------+-----------+1 row inset(0.00 sec)mysql> show variables like '%Innodb_buffer_pool_write_requests%';Emptyset(0.00 sec)mysql> show status like '%Innodb_buffer_pool_write_requests%';+-----------------------------------+------------+|Variable_name|Value|+-----------------------------------+------------+|Innodb_buffer_pool_write_requests|2591286410|+-----------------------------------+------------+1 row inset(0.00 sec)mysql>
以上是关于MySQL中show status和show variables命令的区别。希望能够给你带来一些启发。
关注我,获取更多的分析。