博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
2020/06/05 mysql操作
阅读量:3926 次
发布时间:2019-05-23

本文共 3243 字,大约阅读时间需要 10 分钟。

mysql 查看当前正在执行的语句;

查看当前正在执行的语句 show processlist:

root@localhost [(none)]>show processlist;+----+-------------+---------------------+------+-------------+-------+---------------------------------------------------------------+------------------+| Id | User        | Host                | db   | Command     | Time  | State                                                         | Info             |+----+-------------+---------------------+------+-------------+-------+---------------------------------------------------------------+------------------+|  3 | system user |                     | NULL | Connect     | 53528 | Waiting for master to send event                              | NULL             ||  4 | system user |                     | NULL | Connect     | 53528 | Slave has read all relay log; waiting for more updates        | NULL             ||  5 | repluser    | 192.168.30.37:51622 | NULL | Binlog Dump | 53496 | Master has sent all binlog to slave; waiting for more updates | NULL             || 13 | root        | localhost           | NULL | Query       |     1 | starting                                                      | show processlist |+----+-------------+---------------------+------+-------------+-------+---------------------------------------------------------------+------------------+4 rows in set (0.22 sec)

结束正在执行的语句进程 kill 进程id

在这里插入图片描述

select @@global.query_cache_size;

set @@global.query_cache_size=16777216;

stream {

server {
listen 3336;
proxy_pass db;
}
upstream db {
server 10.211.7.11:3306;
server 10.211.7.12:3306 backup;
}
}

mysql找到所有索引

SELECT a.TABLE_SCHEMA,
a.TABLE_NAME,
a.index_name,
GROUP_CONCAT(column_name ORDER BY seq_in_index) AS Columns
FROM information_schema.statistics a
GROUP BY a.TABLE_SCHEMA,a.TABLE_NAME,a.index_name

mysql主从时不时进入Slave_SQL_Running_State:system lock,然后恢复到 Slave has read all relay log; waiting for more updates

五、system lock 延迟的原因

这里先直接给出原因供大家直接参考,简单的说从库出现 system lock 应该视为正在干活,而不是名称看到的“lock”,这是由于 slave 端不存在语句(row 格式)的执行,都是 Event 的直接 apply,状态没有切换的机会,也可以认为是 slave 端状态划分不严谨,其实做一个 pstack 就能完全看出问题。下面是产生的必要条件:

由于大量的小事物,比如 UPDATE/DELETE table where 处理一行数据,这会出现只包含一行数据库的 DML event 的语句,如果 table 是一张大表,则会加剧这种可能。

这个表上没有主键或者唯一键,问题加剧。
由于类似 Innodb lock 堵塞,也就是 slave 从库修改了数据同时和 sql_thread 也在修改同样的数据,问题加剧。
确实 I/O 扛不住了,可以尝试修改参数。
如果是大量的表没有主键或者唯一键可以考虑修改参数 slave_rows_search_algorithms 试试。关于 slave_rows_search_algorithms 在我的系列中有一章详细讨论,这里不做赘述。
这里还特地请教了阿里的印风兄验证了一下 mysql_lock_tables 是 myisam 实现表锁的函数 Innodb 会设置为共享锁。

这里我们先抛开 query event/map event 等。只考虑 DML event,下面就是 system lock 出现的流程:

如果一个小事物只有一条 DML event 的场景下逻辑如下:

->进入reading eventfrom the relay log状态  ->读取一条event(参考next_event函数)   ->进入system lock状态    ->Innodb层进行查找和修改数据

如果是一个大事物则包含了多条 DML event 的场景逻辑如下:

->进入reading eventfrom the relay log状态  ->读取一条event(参考next_event函数)   ->进入system lock状态    ->Innodb层进行查找和修改数据 ->进入reading eventfrom the relay log状态  ->读取一条event(参考next_event函数)   ->Innodb层进行查找和修改数据 ->进入reading eventfrom the relay log状态  ->读取一条event(参考next_event函数)   ->Innodb层进行查找和修改数据 ....直到本事物event执行完成

因此我们看到对于一个小事物我们的 sql_thread 会在加 system lock 的情况下进行对数据进行查找和修改。

因此得出了我的结论,同时如果是 Innodb 层锁造成的 sqlthread 堵塞也会在持有 system lock 的状态下。但是对于一个大事物则不一样,虽然出现同样的问题,但是其状态是 reading event from the relay log。

所以如果出现 system lock 一般就是考虑前文给出的结论。

转载地址:http://vqzgn.baihongyu.com/

你可能感兴趣的文章
poj 1947 Rebuilding Roads(树形DP)
查看>>
ural 1056 Computer Net(树形DP)需要用到两遍dfs
查看>>
poj 1848 Tree(树形DP,太难了,三种状态,四种状态转换)
查看>>
zoj 3626 Treasure Hunt I(树形DP+分组背包)
查看>>
hdu 1011 Starship Troopers(树形DP+背包问题)
查看>>
poj 3107 Godfather(树形DP,点的个数较多, 删点使得剩余部分结点最多的最小值)
查看>>
poj 2378 Tree Cutting(树形DP,删点使得独立的部分结点数不超过n/2)
查看>>
poj 1655 Balancing Act(树形DP,删点)
查看>>
hdu 4276 The Ghost Blows Light(树形DP+最短路+分组背包)好题。。。
查看>>
zoj 3537 Cake(区间DP+最优三角形剖分)待续
查看>>
poj 2955 Brackets(区间DP,经典问题)求有规律的括号的最大长度
查看>>
hdu 1754 I Hate It(线段树,单点替换,求区间最值)
查看>>
poj 2828 Buy Tickets(线段树中单点更新较难的题目)
查看>>
poj 1991 Turning in Homework(区间DP,大区间推出小区间的思想)好题,想法很独特
查看>>
codeforces 395 B1. iwiwi(待续)
查看>>
hdu 4283 You Are the One(区间DP)题目转换难,状态难,。。。
查看>>
poj 2299 Ultra-QuickSort(树状数组+离散化的题目)据说是简单题,不过还是觉得好难。。。
查看>>
codeforces 397B. On Corruption and Numbers
查看>>
SqlMapConfig.xml中的setting属性设置
查看>>
hdu 3172 Virtual Friends(简单并查集)
查看>>