最近几天,我的网站在随机时间变得非常缓慢。我尽力进行了调查。我发现MySQL进程正在使用服务器可用内存的85-95%(我应该升级内存吗?)。
我检查了MySQL进程日志,并注意到一个巨大的查询列表:
“等待表级锁定”
但是我还注意到,所有这些具有“表级锁定”的查询都只涉及名为“users”的表。
我有其他20个表,有不断的查询,但我没有在列表上看到它们...所以我猜问题出在用户表上?
我想知道如何改进表格,并最终删除表级锁定?
我还运行了以下命令:
这导致了这样的结果:
请告诉我如何提高我的数据库/MySQL的性能。以下是一些处理过程列表:
这基本上就是所有被锁定进程的样子。
我检查了MySQL进程日志,并注意到一个巨大的查询列表:
“等待表级锁定”
但是我还注意到,所有这些具有“表级锁定”的查询都只涉及名为“users”的表。
我有其他20个表,有不断的查询,但我没有在列表上看到它们...所以我猜问题出在用户表上?
我想知道如何改进表格,并最终删除表级锁定?
我还运行了以下命令:
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 |
这基本上就是所有被锁定进程的样子。