监控计算器(Mysql)

上一篇 / 下一篇  2011-10-14 17:34:09 / 个人分类:mysql

 Mysql系统信息常用命令

use information_schema;--切换information_schema表。

show status;--查看系统配置。

select version();--查看Mysql版本,在终端下:mysql –V或在HELP中查找mysql --help | grep Distribmysql中:status;

show variables like '%connect%';-- MySQL通过系统变量记录很多配置信息,比如最大连接数max_connections

set global max_connections=500;--设置最大连接数.

show variables like 'table_open%';-- table_open_cache参数是64,这就是说所有的MySQL线程一共能同时打开64个表,我们可以搜集系统的打开表的数量的历史记录和这个参数来对比,决定是否要增加这个参数的大小。

show status';-- Open tables输出时64,这就是说当前数据库打开的表的数量是64个,要注意的是这个64并不是实际的64个表,因为MySQL是多线程的系统,几个不同的并发连接可能打开同一个表,这就需要为不同的连接session分配独立的内存空间来存储这些信息以避免冲突。因此连接数的增加会导致MySQL需要的文件描述符数目的增加。另外对于MyISAM表,还会建立一个共享的索引文件描述符。

show status like 'open%';;--查看当前的打开表的数目的办法一个是用上边提到过的status命令,另外可以直接查询这个系统变量的值:

show global status like 'open%';-- Open_tables就是当前打开表的数目,通过flush tables命令可以关闭当前打开的表。而全局范围内查看的Opened_tables是个历史累计值。这个值如果过大,并且如果没有经常的执行flush tables命令,可以考虑增加table_open_cache参数的大小。

show variables like 'max_tmp%';--max_tmp_tables参数:

show global status like '%tmp%table%';--对比这两个值来判断临时表的创建位置,一般选取BLOBTEXT列、Group byDistinct语句的数据量超过512 bytes,或者union的时候select某列的数据超过512 bytes的时候,就直接在磁盘上创建临时表了,另外内存中的临时表变大的时候,也可能被MySQL自动转移到磁盘上(由tmp_table_sizemax_heap_table_size参数决定)。继续原来的讨论,增加table_open_cachemax_tmp_tables参数的大小后,从操作系统的角度看,mysqld进程需要使用的文件描述符的个数就要相应的增加,这个是由open_files_limit参数控制的。但是这个参数是OS限制的,所以我们设定的值并不一定总是生效。如果OS限制MySQL不能修改这个值,那么置为0。如果是专用的MySQL服务器上,这个值一般要设置的尽量大,就是没有报Too many open files错误的最大值,这样就能一劳永逸了

show variables like 'open_files%';--有两个状态变量记录了当前和历史的文件打开信息:

show status like '%thread%';-- MySQL为每个连接分配线程来处理,可以通过threads_connected参数查看当前分配的线程数量:

show processlist;--查看每个thread的更详细的信息,可以使用processlist命令:执行这个命令需要有Process_priv权限,具体的权限分配信息可以查看mysql.user表。

对于影响系统运行的thread,可以狠一点,用kill connection|query threadid的命令杀死它。


TAG:

 

评分:0

我来说两句

Open Toolbar