那个 2 users 表示用户连接数,指的是总连接数。
那个 load average 就是系统平均负载,1 分钟、5 分钟、15 分钟系统负载的平均值。
指的是一段时间内 CPU 正在处理以及等待 CPU 处理的进程数之和的统计信息,也就是 CPU 使用队列的长度的统计信息。这个数字越小越好。
然后再用 vmstat 命令看下 CPU 是否饱和
这里面的 r 就是等待 CPU 的进程数,可以用来判定 CPU 是否饱和,当 r 值高于 CPU 数时,就意味着饱和了。
最右边那个 us,sy,id,wa,st 表示所有 CPU 的使用百分比。它们分别是 user time,system time,idle,wait I/O 和 steal time 的缩写。将 us 和 sy 的百分比加和,可以确定 CPU 是否处于忙碌状态。
如果是多核的机器还可以使用 mpstat 命令查看是否均衡
与 CPU 相关的命令还有 pidstat
这个命令展示了 CPU 消耗在了哪些进程上面,消耗过大的进程需要格外关注下。
基本上你使用上述几个命令 就可以初步了解 CPU 出现了何种问题
有了猜测的方向之后 你就可以进一步深入去排查了
先 找到 CPU 高的线程,如果 CPU 高的线程号一直在变,那可能不是单个 SQL 引起的 CPU 消耗,需要用其他方法来辅助分析。找到线程任务processlist 。可以看到很多有用的信息:
1. 可以看到 processlist 中对应这根线程的信息
2. 可以找到其在 processlist 中的 ID,这样我们就可以下 kill 命令来结束 SQL
小贴士:
使用 performance_schema 时,需要大家注意 MySQL 使用了多个线程编号,源自于不同视角:
1. PROCESSLIST_ID:在 processlist 中的编号,是使用者视角的编号,使用者可以直接用 kill 命令。
2. THREAD_ID:是 MySQL 内部使用的线程编号,是 MySQL 内部视角的编号。
3. THREAD_OS_ID:是在 *** 作系统上,对应的线程编号,是 *** 作系统视角的编号。
大家使用时需要区分好,不要 kill 错了 SQL。
其他有用的信息,可以看到 SQL 执行的开始时间,正在使用了一张临时磁盘表。
如果开启了 performance_schema 的其他监控项,通过 Thread_ID 关联,可以找到更多信息。
当然,眼下这么明显的坑 SQL,我们 kill 掉就是了。
你好,你可以根据条件去添加索引,例如:
一、所有mysql索引列类型都可以被索引,对来相关类使用索引可以提高select查询性能,根据mysql索引数,可以是最大索引与最小索引,每种存储引擎对每个表的至少支持16的索引。总索引长度为256字节。
mysim和innodb存储引擎的表默认创建索引都是btree索引,目前mysql还不支持函数索引,但支持前缘索引,对字段前N个字符创建索引
二、mysql创建索引语法
Create [unioun|fulltext|spatial] index indexname[using indextype] on tablename( tablenamecol)
index_col_name:
col_name[ (length)][asc |desc]
如果你创建索引时搞错了,需要修改mysql索引我们可以用alert来修改索引,语法与create index创建索引差不多,我们就不说了,可以查看相关手册。
下面我们来看一个关于mysql创建索引实例教程。
mysql>create index cityname on city(city(2))
Query Ok,600 rows affected (0.26 sec)
Records :600 Duplicates:0 Warings 0:
我们现在来以city为条件进行查询,如下面。
->explain select * from city where city ='www.111cn.net' G
id:1
......
possible_keys:cityname
key:cityname
好了,现在我们来看看mysql删除索引等实例
Drop indexname on tablename
实例,我现在要删除刚才创建city索引
>drop index cityname on city
Query ok, .....
不过通常对百万级数据的查询或者其他 *** 作,都改换其他的大型的数据库了,希望能帮到你,望采纳。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)