1.查看
show variables like 'max_connections';
2.显示当前运行的Query
show processlist
3.查看当前状态
show status

具体参数说明

Threads_connected  当前的连接数
Max_used_connections  服务器启动后已经同时使用的连接的最大数量。

Aborted_clients 由于客户没有正确关闭连接已经死掉,已经放弃的连接数量。 


Aborted_connects 尝试已经失败的MySQL服务器的连接的次数。 


Connections 试图连接MySQL服务器的次数。 


Created_tmp_tables 当执行语句时,已经被创造了的隐含临时表的数量。 


Delayed_insert_threads 正在使用的延迟插入处理器线程的数量。 


Delayed_writes 用INSERT DELAYED写入的行数。 


Delayed_errors 用INSERT DELAYED写入的发生某些错误(可能重复键值)的行数。 


Flush_commands 执行FLUSH命令的次数。 




 show variables like '%time%'; 




 SET GLOBAL  connect_timeout = 15;


set interactive_timeout = 1; 






4.设置新的MySQL最大连接数为200:


set GLOBAL max_connections=200


也可以按照如下修改


在 my.cnf 配置文件里面修改 max_connections 的值,然后重启 mysql 就行。如果 my.ini 文件中没有找到 max_connections 条目,可自行添加以下条目


max_connections = 200




5.查看当前链接列表


SHOW FULL PROCESSLIST;  SELECT 


           count(*)


       FROM user a


       WHERE 1=1


show processlist; 可以显示前100条连接信息 show full processlist; 可以显示全部。随便说下,如果用普通账号登录,就只显示这用户的。注意命令后有分号 




6.查看当前最大连接数




SHOW STATUS LIKE '%max%';




7.Mysql设置自增长主键的初始值


alter table test AUTO_INCREMENT = 200;




8.mysql超时关闭连接设置


查看


SHOW GLOBAL VARIABLES LIKE 'wait_timeout';


设置


set global wait_timeout=864000;




/etc/my.cnf文件,在[mysqld]下方添加文字:


wait_timeout=864000








(1) 查看慢SQL日志是否启用




mysql> show variables like 'log_slow_queries'; 


+------------------+-------+


| Variable_name    | Value |


+------------------+-------+


| log_slow_queries | ON    |


+------------------+-------+


1 row in set (0.00 sec)




(2) 查看执行慢于多少秒的SQL会记录到日志文件中


mysql> show variables like 'long_query_time';


+-----------------+-------+


| Variable_name   | Value |


+-----------------+-------+


| long_query_time | 1     |   


+-----------------+-------+


1 row in set (0.00 sec)




这里value=1, 表示1秒




 




2. 配置my.ini文件(inux下文件名为my.cnf), 查找到[mysqld]区段,增加日志的配置,如下示例(linux没有引号):


[mysqld]


log="C:/temp/mysql.log"


log_slow_queries="C:/temp/mysql_slow.log"


long_query_time=1


 


log指示日志文件存放目录;


log_slow_queries指示记录执行时间长的sql日志目录;


long_query_time指示多长时间算是执行时间长,单位s。


 


Linux下这些配置项应该已经存在,只是被注释掉了,可以去掉注释。但直接添加配置项也OK啦。




3.优化




MyISAM在读操作占主导的情况下是很高效的。可一旦出现大量的读写并发,同InnoDB相比,MyISAM的效率就会直线下降,而且,MyISAM和InnoDB的数据存储方式也有显著不同:通常,在MyISAM里,新数据会被附加到数据文件的结尾,可如果时常做一些UPDATE,DELETE操作之后,数据文件就不再是连续的,形象一点来说,就是数据文件里出现了很多洞洞,此时再插入新数据时,按缺省设置会先看这些洞洞的大小是否可以容纳下新数据,如果可以,则直接把新数据保存到洞洞里,反之,则把新数据保存到数据文件的结尾。之所以这样做是为了减少数据文件的大小,降低文件碎片的产生。但InnoDB里则不是这样,在InnoDB里,由于主键是cluster的,所以,数据文件始终是按照主键排序的,如果使用自增ID做主键,则新数据始终是位于数据文件的结尾。




了解了这些基础知识,下面说说MyISAM几个容易忽视的配置选项:




concurrent_insert:




通常来说,在MyISAM里读写操作是串行的,但当对同一个表进行查询和插入操作时,为了降低锁竞争的频率,根据concurrent_insert的设置,MyISAM是可以并行处理查询和插入的:




当concurrent_insert=0时,不允许并发插入功能。


当concurrent_insert=1时,允许对没有洞洞的表使用并发插入,新数据位于数据文件结尾(缺省)。


当concurrent_insert=2时,不管表有没有洞洞,都允许在数据文件结尾并发插入。




这样看来,把concurrent_insert设置为2是很划算的,至于由此产生的文件碎片,可以定期使用OPTIMIZE TABLE tableName语法优化。




max_write_lock_count:




缺省情况下,写操作的优先级要高于读操作的优先级,即便是先发送的读请求,后发送的写请求,此时也会优先处理写请求,然后再处理读请求。这就造成一个问题:一旦我发出若干个写请求,就会堵塞所有的读请求,直到写请求全都处理完,才有机会处理读请求。此时可以考虑使用max_write_lock_count:




max_write_lock_count=1




有了这样的设置,当系统处理一个写操作后,就会暂停写操作,给读操作执行的机会。




low-priority-updates:




我们还可以更干脆点,直接降低写操作的优先级,给读操作更高的优先级。




low-priority-updates=1




综合来看,concurrent_insert=2是绝对推荐的,至于max_write_lock_count=1和low-priority-updates=1,则视情况而定,如果可以降低写操作的优先级,则使用low-priority-updates=1,否则使用max_write_lock_count=1。