mysql最大连接数

来源:互联网 发布:java处理nullpointer 编辑:程序博客网 时间:2024/06/03 22:56
1.查看
show variables like 'max_connections';
2.显示当前运行的Query
show processlist
3.查看当前状态

show status

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

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。


各ip链接数量
SELECT COUNT(id) FROM (SELECT id FROM ( SELECT a.*,b.banknote_code,b.name AS banknote_name,b.issue_quantity FROM spot_price a,banknote b WHERE a.related_id = b.id AND a.type = 2 AND b.status = 1 ORDER BY b.type DESC,a.create_time DESC ) t GROUP BY related_id) f
0 0