MySQL 数据库5.5版本问题 死锁
数据库版本MySQL 5.5
1. 死锁概念
• 死锁是指两个或多个事务在互相等待对方持有的资源,从而导致所有事务都无法继续执行的一种情况。
2. 问题代码如下:
• ALTER TABLE • 对表进行操作 • 同时有查询
SQL
ALTER TABLE student ADD COLUMN `age` INT DEFAULT NULL COMMENT '年龄'
出现问题 Waiting for table metadata lock
的等待场景,导致了后台服务查询缓慢,卡住。
3. 原因分析
因为 ALTER TABLE的时候导致锁表,查询的时候,就进行了排队,发生了阻塞,当程序强制退出的时候,就又是的刚才ALTER TABLE的事务没有提交,导出一直发生阻塞,造成了大量的进程发生了阻塞 。
4. 解决方式:
1.show processlist;
发现ALTER TABLE这条语句导致大量查询语句处于等待状态Waiting for table metadata lock
2.kill {id}; 将处于处于等待的进程杀掉!
5. MySQL 5.5 与 5.6 特性对比
以下是 MySQL 5.5 和 MySQL 5.6 版本的主要功能差异对比,涵盖性能、存储引擎、优化器、复制、安全等方面:
特性 | MySQL 5.5 | MySQL 5.6 |
---|---|---|
全文索引 | 不支持 | 支持 |
InnoDB online DDL | 不支持 | 部分支持 |
REDO | 最大支持4 GB | 最大支持512 GB |
刷脏 | 单线程 | 单独的刷脏线程 |
purge | 单线程 | 多线程 |
EXCHANGE PARTITION | 不支持 | 支持 |
DML显式指定分区 | 不支持 | 支持 |
6. 总结:MySQL 5.6 的主要优势
- 性能提升:通过多线程 I/O、MRR、BKA 等优化,显著提升查询和写入性能。
- 高可用性:支持并行复制、GTID、动态半同步复制,简化故障恢复。
- 易用性:Online DDL、Memcached 接口、分区表增强,减少维护停机时间。
- 安全性:密码策略、SSL 默认启用,提升数据保护能力。
7. 适用场景建议
- MySQL 5.5:适合对性能要求不高、需稳定运行的传统应用,或作为旧系统迁移的过渡版本。
- MySQL 5.6:推荐用于需要高并发、高可用性、复杂查询优化的场景(如电商平台、金融系统)。