标签:MySQL FAQ
MySQL一次数据插入故障记录
某天突然收到报警,数据库大量事务等待,进到数据库后发线大量的插入操作被阻塞,且都是同一个表的。 通过 show engine innodb status 发现插入操作都是在等待索引 idx_create_time(create_time) 的 insert intention lock(跟 gap 锁互斥),由于某些原因数据库是 RR 隔离级别。 ……
MySQL诡异的更新操作
这几天线上出现一个诡异的更新问题,看下面这个测试案例,主看看表结构及更新结果。 mysql> select * from t1; +------+----------------------+ | id | c | +------+----------------------……
MySQL InnoDB RR隔离级别下INSERT…SELECT对SELECT表加锁模型和死锁案列
最近有网友遇到了在RR隔离级别下insert A select B where B.COL=** 由于select表也就是B表引发的死锁的问题。分析死锁日志后,笔者进行模拟重现了这位网友遇到了2种场景并且在本文中进行详细的描述。 本文使用版本Percona 5.7.14修改版,能够打印出事务所有的行锁信息结构链(不包含隐含锁) 本文中的测试是在RR隔离级……
MySQL 8.0:持久化自增列值
MySQL 8.0修复了一个MySQL十年之久的自增列Bug,在2003年由Percona的CEO(当时应该还没Percona吧)提出的bug#199。先重现一下这个BUG。 create table t1(id int auto_increment, a int, primary key (id)) engine=innodb……
MySQL视图查询报错:Prepared statement needs to be re-prepared
今天公司的项目视图查询报错,报错如:ERROR 1615 (HY000): Prepared statement needs to be re-prepared 网上找了一圈,都说调整以下值就好了: mysql> set global table_open_cache=16384; mysql> set globa……
MySQL Shutdown异常处理和分析
先了解一下MySQL的shutdown流程 1、启动关机过程。 2、如有必要,服务器创建一个关闭线程。 3、服务器将停止接受新连接。 4、服务器终止当前的活动。 5、服务器关机或关闭存储引擎。 6、在服务器退出。 以上只是官方文档中介绍的一些基本的关机流程,正确的关机命令当然是mysqladmin -xx shutdown。接下来,我们来关注一下我们的问题。……
MySQL表排序规则不同错误
MySQL多表join时报错如下:[Err]1267 – Illegal mix of collations(utf8_general_ci,IMPLICIT) and (utf8_unicode_ci,IMPLICIT) for operation ‘= 就是说两个表的排序规则(COLLATION)不同,无法完成比较。COLLATION是用在排……
MySQL主机CPU负载太高解决思路
首先考虑,CPU为什么会占用过高?答案是CPU很忙,那么什么会导致CPU很忙呢? 1. 频繁的上下文切换 2. 计算量巨大 3. 磁盘访问等待严重 4. 死循环 5. 等等,还有我不知道的 遵循上面的分析,可以推导,在MySQL服务器上,如果看到CPU过高,该怎么解决问题? 频繁的上下文切换包括:锁很多,等待处理的线程特别多。这种情况在MySQL服务器上该如……
针对SSD的MySQL IO优化
现在数据库标配基本都是SSD了,在使用SSD之前,对SSD进行了充分的测试,这其中当然包括最为关键的性能测试部分。下面就跟大家分享一下在SSD性能测试过程中遇到的一个问题和解决问题的思路。 我们的性能测试使用的测试工具是Sysbench,测试场景主要包括5类:全内存非事务更新(nontrx)、全内存事务更新(complex)、非全内存查询(select)、非……
MySQL备份恢复:Xtrabackup锁问题分析
从XtraBackup的备份过程可以看出,XtraBackup可以实现Innodb表的无锁备份,但是一个数据库中,即使所有的业务表都是InnoDB表,但是还存在一些MySQL系统库下的user表等,均是myisam表(MySQL 8.0均替换为InnoDB),同时备份过程需要获取Binlog文件名和位置,也要保证表定义文件的一致性,所以从整个实例的角度,即使……
MySQL Waiting for table metadata lock故障分析
源起 线上执行ALTER时,通过show processlist查看到出现Waiting for table metadata lock ,导致后面的查询都无法执行。 5217122 | create_table_04 | 172.100.207.148:31291 | finance | Query | 1829 | Wa……
MySQL数据库innodb_rollback_on_timeout默认值的危害?
一、innodb_rollback_on_timeout变量 有时侯会发生事务超时的情况,MySQL会返回类似这样的错误: ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction. ……