MySql锁表解决(死)

1. show open tables where In_use>0; 查看被锁的表
In_use show how many threads are currently using this table, meaning have it locked or waiting on the table lock for this table to lock it.
2.show processlist; 查看所有执行线程

如果在线上不慎执行了一个复杂sql,ctrl + c不一定会终止sql在服务端的执行,可以通过以上两个sql,检查表是否被锁,以及执行线程是否终结。如果还在执行,手动kill一下线程

演示:(id 7是我用python 来连过来的一个会话,虽然是状态是sleep,为了演示,干掉他)

mysql> show processlist;
+—-+——+———–+——+———+——+——-+——————+
| Id | User | Host | db | Command | Time | State | Info |
+—-+——+———–+——+———+——+——-+——————+
| 7 | root | localhost | yy | Sleep | 154 | | NULL |
| 8 | root | localhost | NULL | Query | 0 | NULL | show processlist |
+—-+——+———–+——+———+——+——-+——————+
2 rows in set (0.00 sec)

mysql> kill 7;

mysql> show processlist;
+—-+——+———–+——+———+——+——-+——————+
| Id | User | Host | db | Command | Time | State | Info |
+—-+——+———–+——+———+——+——-+——————+
| 8 | root | localhost | NULL | Query | 0 | NULL | show processlist |
+—-+——+———–+——+———+——+——-+——————+
1 row in set (0.00 sec)

MySQL(my.ini)配置文件详解

说明
1,红色代表重点参数
2,“全局缓存”、“线程缓存”,全局缓存是所有线程共享,线程缓存是每个线程连接上数据时创建一个线程(
如果没有设置线程池),假如有200连接、那就是200个线程,如果参数设定值是10M,那么参数值就是10*200=2000M=2G,很有可能吃垮内存,所以线程缓存并不是像全局缓存一样设定多少就占用多少,不可设置过大,一定注意

character-set-server=utf8 继续阅读“MySQL(my.ini)配置文件详解”

MAC 安装 新版本 mysql5.7 密码问题

安装mysql5.7pkg中会有一个弹出框上面有一个随机密码一定要记住,在到命令行中输入系统变量 export PATH=${PATH}:/usr/local/mysql/bin
然后到系统偏好最下面有一个 mysql 然后点击启动mysql 然后进到/usr/local/mysql/bin 中键入 mysqladmin -u root -p password 回车会提示你输入密码 把临时密码输入进去 在设置新密码.