• 售前

  • 售后

热门帖子
入门百科

查找MySQL中查询慢的SQL语句方法

[复制链接]
路人52014 显示全部楼层 发表于 2021-10-25 19:40:21 |阅读模式 打印 上一主题 下一主题
如安在mysql查找服从慢的SQL语句呢?这大概是困然很多人的一个问题,MySQL通过慢查询日记定位那些实验服从较低的SQL 语句,用--log-slow-queries[=file_name]选项启动时,mysqld 会写一个包含全部实验时间凌驾long_query_time 秒的SQL语句的日记文件,通过查察这个日记文件定位服从较低的SQL 。下面先容MySQL中如何查询慢的SQL语句
一、MySQL数据库有几个设置选项可以资助我们及时捕捉低效SQL语句
1,slow_query_log
这个参数设置为ON,可以捕捉实验时间凌驾一定数值的SQL语句。
2,long_query_time
当SQL语句实验时间凌驾此数值时,就会被记录到日记中,发起设置为1或者更短。
3,slow_query_log_file
记录日记的文件名。
4,log_queries_not_using_indexes
这个参数设置为ON,可以捕捉到全部未利用索引的SQL语句,只管这个SQL语句有大概实验得挺快。
二、检测mysql中sql语句的服从的方法
1、通过查询日记
(1)、Windows下开启MySQL慢查询
MySQL在Windows系统中的设置文件一样平常是是my.ini找到[mysqld]下面加上
代码如下
log-slow-queries = F:/MySQL/log/mysqlslowquery。log
long_query_time = 2
(2)、Linux下启用MySQL慢查询
MySQL在Windows系统中的设置文件一样平常是是my.cnf找到[mysqld]下面加上
代码如下
log-slow-queries=/data/mysqldata/slowquery。log
long_query_time=2
说明
log-slow-queries = F:/MySQL/log/mysqlslowquery。
为慢查询日记存放的位置,一样平常这个目录要有MySQL的运行帐号的可写权限,一样平常都将这个目录设置为MySQL的数据存放目录;
long_query_time=2中的2表现查询凌驾两秒才记录;
2.show processlist 下令
WSHOW PROCESSLIST表现哪些线程正在运行。您也可以利用mysqladmin processlist语句得到此信息。
各列的含义和用途:
ID列
一个标识,你要kill一个语句的时候很有效,用下令杀掉此查询 /*/mysqladmin kill 历程号。
user列
表现单前用户,假如不是root,这个下令就只表现你权限范围内的sql语句。
host列
表现这个语句是从哪个ip的哪个端口上发出的。用于追踪出问题语句的用户。
db列
表现这个历程目前连接的是哪个数据库。
command列
表现当前连接的实验的下令,一样平常就是休眠(sleep),查询(query),连接(connect)。
time列
此这个状态连续的时间,单位是秒。
state列
表现利用当前连接的sql语句的状态,很重要的列,后续会有全部的状态的形貌,请注意,state只是语句实验中的某一个状态,一个 sql语句,以查询为例,大概需要颠末copying to tmp table,Sorting result,Sending data等状态才可以完成
info列
表现这个sql语句,由于长度有限,以是长的sql语句就表现不全,但是一个判断问题语句的重要依据。
这个下令中最关键的就是state列,mysql列出的状态主要有以下几种:
Checking table
 正在查抄数据表(这是自动的)。
Closing tables
 正在将表中修改的数据革新到磁盘中,同时正在关闭已经用完的表。这是一个很快的操作,假如不是这样的话,就应该确认磁盘空间是否已经满了或者磁盘是否正处于重负中。
Connect Out
 复制从服务器正在连接主服务器。
Copying to tmp table on disk
 由于临时结果集大于tmp_table_size,正在将临时表从内存存储转为磁盘存储以此节流内存。
Creating tmp table
 正在创建临时表以存放部分查询结果。
deleting from main table
 服务器正在实验多表删除中的第一部分,刚删除第一个表。
deleting from reference tables
 服务器正在实验多表删除中的第二部分,正在删除其他表的记录。
Flushing tables
 正在实验FLUSH TABLES,等待其他线程关闭数据表。
Killed
 发送了一个kill请求给某线程,那么这个线程将会查抄kill标记位,同时会放弃下一个kill请求。MySQL会在每次的主循环中查抄kill标记位,不外有些情况下该线程大概会过一小段才能死掉。假如该线程程被其他线程锁住了,那么kill请求会在锁释放时立刻见效。
Locked
 被其他查询锁住了。
Sending data
 正在处置惩罚SELECT查询的记录,同时正在把结果发送给客户端。
Sorting for group
 正在为GROUP BY做排序。
 Sorting for order
 正在为ORDER BY做排序。
Opening tables
 这个过程应该会很快,除非受到其他因素的干扰。比方,在执ALTER TABLE或LOCK TABLE语句行完从前,数据表无法被其他线程打开。正实验打开一个表。
Removing duplicates
 正在实验一个SELECT DISTINCT方式的查询,但是MySQL无法在前一个阶段优化掉那些重复的记录。因此,MySQL需要再次去掉重复的记录,然后再把结果发送给客户端。
Reopen table
 得到了对一个表的锁,但是必须在表结构修改之后才能得到这个锁。已经释放锁,关闭数据表,正实验重新打开数据表。
Repair by sorting
 修复指令正在排序以创建索引。
Repair with keycache
 修复指令正在利用索引缓存一个一个地创建新索引。它会比Repair by sorting慢些。
Searching rows for update
 正在讲符合条件的记录找出来以备更新。它必须在UPDATE要修改相干的记录之前就完成了。
Sleeping
 正在等待客户端发送新请求.
System lock
 正在等待取得一个外部的系统锁。假如当前没有运行多个mysqld服务器同时请求同一个表,那么可以通过增长--skip-external-locking参数来禁止外部系统锁。
Upgrading lock
 INSERT DELAYED正在实验取得一个锁表以插入新记录。
Updating
 正在搜索匹配的记录,而且修改它们。
User Lock
 正在等待GET_LOCK()。
Waiting for tables
 该线程得到关照,数据表结构已经被修改了,需要重新打开数据表以取得新的结构。然后,为了能的重新打开数据表,必须等到全部其他线程关闭这个表。以下几种情况下会产生这个关照:FLUSH TABLES tbl_name, ALTER TABLE, RENAME TABLE, REPAIR TABLE, ANALYZE TABLE,或OPTIMIZE TABLE。
waiting for handler insert
 INSERT DELAYED已经处置惩罚完了全部待处置惩罚的插入操作,正在等待新的请求。
 大部分状态对应很快的操作,只要有一个线程保持同一个状态好几秒钟,那么大概是有问题发生了,需要查抄一下。
 另有其他的状态没在上面中列出来,不外它们大部分只是在查察服务器是否有存在错误是才用得着。
比方如图:

3、explain来相识SQL实验的状态
explain表现了mysql如何利用索引来处置惩罚select语句以及连接表。可以资助选择更好的索引和写出更优化的查询语句。
利用方法,在select语句前加上explain就可以了:
比方:
  1. explain select surname,first_name form a,b where a.id=b.id
复制代码
结果如图

EXPLAIN列的表明
table
表现这一行的数据是关于哪张表的
type
这是重要的列,表现连接利用了何种类型。从最好到最差的连接类型为const、eq_reg、ref、range、indexhe和ALL
possible_keys
表现大概应用在这张表中的索引。假如为空,没有大概的索引。可以为相干的域从WHERE语句中选择一个合适的语句
key
实际利用的索引。假如为NULL,则没有利用索引。很少的情况下,MYSQL会选择优化不敷的索引。这种情况下,可以在SELECT语句 中利用USE INDEX(indexname)来逼迫利用一个索引或者用IGNORE INDEX(indexname)来逼迫MYSQL忽略索引
key_len
利用的索引的长度。在不损失精确性的情况下,长度越短越好
ref
表现索引的哪一列被利用了,假如大概的话,是一个常数
rows
MYSQL以为必须查抄的用来返回请求数据的行数
Extra
关于MYSQL如何剖析查询的额外信息。将在表4.3中讨论,但这里可以看到的坏的例子是Using temporary和Using filesort,意思MYSQL根本不能利用索引,结果是检索会很慢
extra列返回的形貌的意义
Distinct
一旦MYSQL找到了与行相连合匹配的行,就不再搜索了
Not exists
MYSQL优化了LEFT JOIN,一旦它找到了匹配LEFT JOIN尺度的行,就不再搜索了
Range checked for each Record(index map:#)
没有找到理想的索引,因此对于从前面表中来的每一个行组合,MYSQL查抄利用哪个索引,并用它来从表中返回行。这是利用索引的最慢的连接之一
Using filesort
看到这个的时候,查询就需要优化了。MYSQL需要举行额外的步调来发现如何对返回的行排序。它根据连接类型以及存储排序键值和匹配条件的全部行的行指针来排序全部行
Using index
列数据是从仅仅利用了索引中的信息而没有读取实际的举措的表返回的,这发生在对表的全部的请求列都是同一个索引的部分的时候
Using temporary
看到这个的时候,查询需要优化了。这里,MYSQL需要创建一个临时表来存储结果,这通常发生在对不同的列集举行ORDER BY上,而不是GROUP BY上
Where used
利用了WHERE从句来限定哪些行将与下一张表匹配或者是返回给用户。假如不想返回表中的全部行,而且连接类型ALL或index,这就会发生,或者是查询有问题不同连接类型的表明(按照服从高低的次序排序)
const
表中的一个记录的最大值能够匹配这个查询(索引可以是主键或惟一索引)。由于只有一行,这个值实际就是常数,由于MYSQL先读这个值然后把它当做常数来对待
eq_ref
在连接中,MYSQL在查询时,从前面的表中,对每一个记录的连合都从表中读取一个记录,它在查询利用了索引为主键或惟一键的全部时利用
ref
这个连接类型只有在查询利用了不是惟一或主键的键或者是这些类型的部分(好比,利用最左边前缀)时发生。对于之前的表的每一个行连合,全部记录都将从表中读出。这个类型严峻依赖于根据索引匹配的记录多少—越少越好
range
这个连接类型利用索引返回一个范围中的行,好比利用>或<查找东西时发生的情况
index
这个连接类型对前面的表中的每一个记录连合举行完全扫描(比ALL更好,由于索引一样平常小于表数据)
ALL
这个连接类型对于前面的每一个记录连合举行完全扫描,这一样平常比力糟糕,应该只管制止
MySQL - 查察慢SQL
查察MySQL是否启用了查察慢SQL的日记文件
(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]区段,增长日记的设置,如下示例:
[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啦。
查询到服从低的 SQL 语句 后,可以通过 EXPLAIN 或者 DESC 下令获取 MySQL 如何实验 SELECT 语句的信息,包括在 SELECT 语句实验过程中表如何连接和连接的次序,好比我们想盘算 2006 年全部公司的销售额,需要关联 sales 表和 company 表,而且对 profit 字段做求和( sum )操作,相应 SQL 的实验筹划如下:
mysql> explain select sum(profit) from sales a,company b where a.company_id = b.id and a.year = 2006\G;
*************************** 1. row ***************************
id: 1
select_type: SIMPLE
table: a
type: ALL
possible_keys: NULL
key: NULL
key_len: NULL
ref: NULL
rows: 12
Extra: Using where
*************************** 2. row ***************************
id: 1
select_type: SIMPLE
table: b
type: ALL
possible_keys: NULL
key: NULL
key_len: NULL
ref: NULL
rows: 12
Extra: Using where
2 rows in set (0.00 sec)
每个列的表明如下:
•select_type :表现 SELECT 的 类型,常见的取值有 SIMPLE (简朴表,即倒霉用表连接或者子查询)、 PRIMARY (主查询,即外层的查询)、 UNION ( UNION 中的第二个或者背面的查询语句)、 SUBQUERY (子查询中的第一个 SELECT )等。
•table :输出结果集的表。
•type :表现表的连接类型,性能由好到差的连接类型为 system (表中仅有一行,即常量表)、 const (单表中最多有一个匹配行,比方 primary key 或者 unique index )、 eq_ref (对于前面的每一行,在此表中只查询一条记录,简朴来说,就是多表连接中利用 primary key 或者 unique index )、 ref (与 eq_ref 雷同,区别在于不是利用 primary key 或者 unique index ,而是利用普通的索引)、 ref_or_null ( 与 ref 雷同,区别在于条件中包含对 NULL 的查询 ) 、 index_merge ( 索引归并优化 ) 、 unique_subquery ( in 的背面是一个查询主键字段的子查询)、 index_subquery ( 与 unique_subquery 雷同,区别在于 in 的背面是查询非唯一索引字段的子查询)、 range (单表中的范围查询)、 index (对于前面的每一行,都通过查询索引来得到数据)、 all (对于前面的每一行,都通过全表扫描来得到数据)。
•possible_keys :表现查询时,大概利用的索引。
•key :表现实际利用的索引。
•key_len :索引字段的长度。
•rows :扫描行的数目。
•Extra :实验情况的说明和形貌。
在上面的例子中,已经可以确认是 对 a 表的全表扫描导致服从的不理想,那么 对 a 表的 year 字段创建索引,详细如下:
mysql> create index idx_sales_year on sales(year);
Query OK, 12 rows affected (0.01 sec)
Records: 12 Duplicates: 0 Warnings: 0
创建索引后,这条语句的实验筹划如下:
mysql> explain select sum(profit) from sales a,company b where a.company_id = b.id and a.year = 2006\G;
*************************** 1. row ***************************
id: 1
select_type: SIMPLE
table: a
type: ref
possible_keys: idx_sales_year
key: idx_sales_year
key_len: 4
ref: const
rows: 3
Extra:
*************************** 2. row ***************************
id: 1
select_type: SIMPLE
table: b
type: ALL
possible_keys: NULL
key: NULL
key_len: NULL
ref: NULL
rows: 12
Extra: Using where
2 rows in set (0.00 sec)
可以发现创建索引后对 a 表需要扫描的行数显着镌汰(从全表扫描镌汰到 3 行),可见索引的利用可以大大提高数据库的访问速率,尤其在表很巨大的时候这种上风更为显着,利用索引优化 sql 是优化问题 sql 的一种常用基本方法,在背面的章节中我们会详细先容如何使索引来优化 sql 。
本文主要先容的是MySQL慢查询分析方法,前一段日子,我曾经设置了一次记录在MySQL数据库中对慢于1秒钟的SQL语句举行查询。想起来有几个非常设置的方法,有几个参数的名称死活回忆不起来了,于是重新整理一下,自己做个笔记。
  对于排查问题找出性能瓶颈来说,最容易发现并解决的问题就是MySQL慢查询以及没有得用索引的查询。
  OK,开始找出MySQL中实验起来不“爽”的SQL语句吧。
  MySQL慢查询分析方法一:
  这个方法我正在用,呵呵,比力喜欢这种即时性的。
  MySQL5.0以上的版本可以支持将实验比力慢的SQL语句记录下来。
  MySQL> show variables like 'long%';
  注:这个long_query_time是用来界说慢于多少秒的才算“慢查询”
  +-----------------+-----------+
  | Variable_name | Value |
  +-----------------+-----------+
  | long_query_time | 10.000000 |
  +-----------------+-----------+
  1 row in set (0.00 sec)
  MySQL> set long_query_time=1;
  注: 我设置了1, 也就是实验时间凌驾1秒的都算慢查询。
  Query OK, 0 rows affected (0.00 sec)
  MySQL> show variables like 'slow%';
  +---------------------+---------------+
  | Variable_name | Value |
  +---------------------+---------------+
  | slow_launch_time | 2 |
  | slow_query_log | ON |
  注:是否打开日记记录
  | slow_query_log_file | /tmp/slow.log |
  注: 设置到什么位置
  +---------------------+---------------+
  3 rows in set (0.00 sec)
  MySQL> set global slow_query_log='ON'
  注:打开日记记录
  一旦slow_query_log变量被设置为ON,MySQL会立即开始记录。
  /etc/my.cnf 内里可以设置上面MySQL全局变量的初始值。
  long_query_time=1 slow_query_log_file=/tmp/slow.log
  MySQL慢查询分析方法二:
  MySQLdumpslow下令
  /path/MySQLdumpslow -s c -t 10 /tmp/slow-log
  这会输出记录次数最多的10条SQL语句,其中:
  -s, 是表现按照何种方式排序,c、t、l、r分别是按照记录次数、时间、查询时间、返回的记录数来排序,ac、at、al、ar,表现相应的倒叙;
  -t, 是top n的意思,即为返回前面多少条的数据;
  -g, 后边可以写一个正则匹配模式,巨细写不敏感的;
  好比
  /path/MySQLdumpslow -s r -t 10 /tmp/slow-log
  得到返回记录集最多的10个查询。
  /path/MySQLdumpslow -s t -t 10 -g “left join” /tmp/slow-log
  得到按照时间排序的前10条内里含有左连接的查询语句。

简朴点的方法:
打开 my.ini ,找到 [mysqld] 在其下面添加   long_query_time = 2 log-slow-queries = D:/mysql/logs/slow.log #设置把日记写在那里,可以为空,系统会给一个缺省的文件 #log-slow-queries = /var/youpath/slow.log linux下host_name-slow.log log-queries-not-using-indexes   long_query_time 是指实验凌驾多长时间(单位是秒)的sql会被记录下来,这里设置的是2秒。
以下是mysqldumpslow常用参数说明,详细的可应用mysqldumpslow -help查询。   -s,是表现按照何种方式排序,c、t、l、r分别是按照记录次数、时间、查询时间、返回的记录数来排序(从大到小),ac、at、al、ar表现相应的倒叙。   -t,是top n的意思,即为返回前面多少条数据。 www.jb51.net  -g,后边可以写一个正则匹配模式,巨细写不敏感。   接下来就是用mysql自带的慢查询工具mysqldumpslow分析了(mysql的bin目录下 ),我这里的日记文件名字是host-slow.log。   列出记录次数最多的10个sql语句   mysqldumpslow -s c -t 10 host-slow.log   列出返回记录集最多的10个sql语句  mysqldumpslow -s r -t 10 host-slow.log   按照时间返回前10条内里含有左连接的sql语句   mysqldumpslow -s t -t 10 -g "left join" host-slow.log   利用mysqldumpslow下令可以非常明白的得到各种我们需要的查询语句,对MySQL查询语句的监控、分析、优化起到非常大的资助

在一样平常开发当中,经常会遇到页面打开速率极慢的情况,通过排除,确定了,是数据库的影响,为了迅速查找详细的SQL,可以通过Mysql的日记记录方法。
-- 打开sql实验记录功能
set global log_output='TABLE'; -- 输出到表
set global log=ON; -- 打开全部下令实验记录功能general_log, 全部语句: 成功和未成功的.
set global log_slow_queries=ON; -- 打开慢查询sql记录slow_log, 实验成功的: 慢查询语句和未利用索引的语句
set global long_query_time=0.1; -- 慢查询时间限定(秒)
set global log_queries_not_using_indexes=ON; -- 记录未利用索引的sql语句
-- 查询sql实验记录
select * from mysql.slow_log order by 1; -- 实验成功的:慢查询语句,和未利用索引的语句
select * from mysql.general_log order by 1; -- 全部语句: 成功和未成功的.
-- 关闭sql实验记录
set global log=OFF;
set global log_slow_queries=OFF;
-- long_query_time参数说明
-- v4.0, 4.1, 5.0, v5.1 到 5.1.20(包括):不支持毫秒级别的慢查询分析(支持精度为1-10秒);
-- 5.1.21及以后版本 :支持毫秒级别的慢查询分析, 如0.1;
-- 6.0 到 6.0.3: 不支持毫秒级别的慢查询分析(支持精度为1-10秒);
-- 6.0.4及以后:支持毫秒级别的慢查询分析;
通过日记中记录的Sql,迅速定位到详细的文件,优化sql看一下,是否速率提拔了呢?

本文针对MySQL数据库服务器查询渐渐变慢的问题, 举行分析,并提出相应的解决办法,详细的分析解决办法如下:会经常发现开发人员查一下没用索引的语句或者没有limit n的语句,这些没语句会对数据库造成很大的影...
  
本文针对MySQL数据库服务器查询渐渐变慢的问题, 举行分析,并提出相应的解决办法,详细的分析解决办法如下:
会经常发现开发人员查一下没用索引的语句或者没有limit n的语句,这些没语句会对数据库造成很大的影响,比方一个几千万条记录的大表要全部扫描,或者是不绝的做filesort,对数据库和服务器造成io影响等。这是镜像库上面的情况。
而到了线上库,除了出现没有索引的语句,没有效limit的语句,还多了一个情况,mysql连接数过多的问题。说到这里,先来看看从前我们的监控做法
1. 摆设zabbix等开源分布式监控系统,获取每天的数据库的io,cpu,连接数
2. 摆设每周性能统计,包含数据增长量,iostat,vmstat,datasize的情况
3. Mysql slowlog网络,列出top 10
从前以为做了这些监控已经是很完美了,如今摆设了mysql节点历程监控之后,才发现很多毛病
第一种做法的毛病: zabbix太巨大,而且不是在mysql内部做的监控,很多数据不是非常准备,如今一样平常都是用来查阅历史的数据情况
第二种做法的毛病:由于是每周只跑一次,很多情况没法发现和报警
第三种做法的毛病: 当节点的slowlog非常多的时候,top10就变得没意义了,而且很多时候会给出那些是一定要跑的定期任务语句给你。。参考的价值不大
那么我们怎么来解决和查询这些问题呢
对于排查问题找出性能瓶颈来说,最容易发现并解决的问题就是MYSQL的慢查询以及没有得用索引的查询。
OK,开始找出mysql中实验起来不“爽”的SQL语句吧。
方法一: 这个方法我正在用,呵呵,比力喜欢这种即时性的。
Mysql5.0以上的版本可以支持将实验比力慢的SQL语句记录下来。
mysql> show variables like 'long%'; 注:这个long_query_time是用来界说慢于多少秒的才算“慢查询”
+-----------------+-----------+
| Variable_name | Value |
+-----------------+-----------+
| long_query_time | 10.000000 |
+-----------------+-----------+
1 row in set (0.00 sec)
mysql> set long_query_time=1; 注: 我设置了1, 也就是实验时间凌驾1秒的都算慢查询。
Query OK, 0 rows affected (0.00 sec)
mysql> show variables like 'slow%';
+---------------------+---------------+
| Variable_name | Value |
+---------------------+---------------+
| slow_launch_time | 2 |
| slow_query_log | ON | 注:是否打开日记记录
| slow_query_log_file | /tmp/slow.log | 注: 设置到什么位置
+---------------------+---------------+
3 rows in set (0.00 sec)
mysql> set global slow_query_log='ON' 注:打开日记记录
一旦slow_query_log变量被设置为ON,mysql会立即开始记录。
/etc/my.cnf 内里可以设置上面MYSQL全局变量的初始值。
long_query_time=1
slow_query_log_file=/tmp/slow.log
方法二:mysqldumpslow下令
/path/mysqldumpslow -s c -t 10 /tmp/slow-log
这会输出记录次数最多的10条SQL语句,其中:
-s, 是表现按照何种方式排序,c、t、l、r分别是按照记录次数、时间、查询时间、返回的记录数来排序,ac、at、al、ar,表现相应的倒叙;
-t, 是top n的意思,即为返回前面多少条的数据;
-g, 后边可以写一个正则匹配模式,巨细写不敏感的;
好比
/path/mysqldumpslow -s r -t 10 /tmp/slow-log
得到返回记录集最多的10个查询。
/path/mysqldumpslow -s t -t 10 -g “left join” /tmp/slow-log
得到按照时间排序的前10条内里含有左连接的查询语句。
末了总结一下节点监控的长处
1. 轻量级的监控,而且是实时的,还可以根据实际的情况来定制和修改
2. 设置了过滤步伐,可以对那些一定要跑的语句举行过滤
3. 及时发现那些没有效索引,或者是不合法的查询,固然这很耗时行止理那些慢语句,但这样可以制止数据库挂掉,照旧值得的
4. 在数据库出现连接数过多的时候,步伐会自动保存当前数据库的processlist,DBA举行缘故原由查找的时候这但是利器
5. 利用mysqlbinlog 来分析的时候,可以得到明白的数据库状态非常的时间段
有些人会建义我们来做mysql设置文件设置
调治tmp_table_size 的时候发现别的一些参数
Qcache_queries_in_cache 在缓存中已注册的查询数目
Qcache_inserts 被加入到缓存中的查询数目
Qcache_hits 缓存采样数数目
Qcache_lowmem_prunes 由于缺少内存而被从缓存中删除的查询数目
Qcache_not_cached 没有被缓存的查询数目 (不能被缓存的,或由于 QUERY_CACHE_TYPE)
Qcache_free_memory 查询缓存的空闲内存总数
Qcache_free_blocks 查询缓存中的空闲内存块的数目
Qcache_total_blocks 查询缓存中的块的总数目
Qcache_free_memory 可以缓存一些常用的查询,假如是常用的sql会被装载到内存。那样会增长数据库访问速率

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

帖子地址: 

回复

使用道具 举报

分享
推广
火星云矿 | 预约S19Pro,享500抵1000!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

草根技术分享(草根吧)是全球知名中文IT技术交流平台,创建于2021年,包含原创博客、精品问答、职业培训、技术社区、资源下载等产品服务,提供原创、优质、完整内容的专业IT技术开发社区。
  • 官方手机版

  • 微信公众号

  • 商务合作