gpt4 book ai didi

mysql - 等待 MySQL 表上的表级锁定

转载 作者:可可西里 更新时间:2023-11-01 08:17:08 25 4
gpt4 key购买 nike

最近几天,我的网站有时变得非常慢。我开始尽我所能进行调查。我看到 MySQL 进程使用了​​服务器可用内存的 85% - 95%(我是否也应该升级我的内存?)。

我检查了我的 MySQL 进程日志,我注意到一个巨大的查询列表:

Waiting for table level lock

但我还注意到,所有这些带有“表级锁定”的查询只是与我的名为 users 的表有关的查询。

我有 20 个其他表,有不断的查询,但我没有在列表中看到它们。所以我猜问题出在 users 表上?

我想知道如何改进表,并最终解除表级锁?

我也跑过这个:

SHOW VARIABLES LIKE 'query_cache%';

结果是:

query_cache_limit
1048576
query_cache_min_res_unit
4096
query_cache_size
33554432
query_cache_type
ON
query_cache_wlock_invalidate
OFF

请让我知道我可以做些什么来改进我的数据库/mysql。

这是进程列表:

   | 228 | db_user | localhost | db_db| Query          |    5 | Waiting for table level lock | SELECT count(*) FROM users WHERE createtime>'1396411200' OR createtime='1396411200'                  |
| 229 | db_user | localhost | db_db| Query | 4 | Waiting for table level lock | UPDATE users SET upline_clicks=upline_clicks+'1', upline_earnings=upline_earnings+'0.0000' WHERE use |
| 203 | db_user | localhost | db_db| Query | 6 | Waiting for table level lock | SELECT SUM(cashedout) FROM users |
| 204 | db_user | localhost | db_db| Query | 4 | Waiting for table level lock | UPDATE users SET upline_clicks=upline_clicks+'1', upline_earnings=upline_earnings+'0.0000' WHERE use |
| 205 | db_user | localhost | db_db| Query | 1 | Waiting for table level lock | SELECT * FROM users WHERE id='12055' |
| 206 | db_user | localhost | db_db| Query | 2 | Waiting for table level lock | SELECT * FROM users WHERE id='22530'
| 197 | db_user | localhost | db_db| Query | 3 | Waiting for table level lock | SELECT * FROM `users` WHERE `username` = 'ptc4life123' LIMIT 1 |
| 200 | db_user | localhost | db_db| Query | 3 | Waiting for table level lock | UPDATE users SET upline_clicks=upline_clicks+'1', upline_earnings=upline_earnings+'0.0050' WHERE use |

这基本上就是所有锁定进程的样子。

最佳答案

在其中一个缓慢的时期,运行这个命令:

show processlist;

这将向您显示正在运行的实际 SQL 命令,以及在添加索引方面要查找的位置。如果可能,发布运行时间最长的 SQL。

添加索引看起来像这样:

 ALTER TABLE MYTABLE ADD INDEX idx_columnname (COLUMN_NAME ASC) ;

但是你要小心不要在生产期间这样做。乍一看,您想对用户表中的 ID 和用户名列执行此操作。

关于mysql - 等待 MySQL 表上的表级锁定,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22809439/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com