最近有网友遇到了在RR隔离级别下insert A select B where B.COL=** 由于select表也就是B表引发的死锁的问题。分析死锁日志后,笔者进行模拟重现了这位网友遇到了2种场景并且在本文中进行详细的描述。
本文使用版本Percona 5.7.14修改版,能够打印出事务所有的行锁信息结构链(不包含隐含锁)
本文中的测试是在RR隔离级……继续阅读 »
彭东稳
8个月前 (06-22) 4782浏览 0评论
2个赞
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……继续阅读 »
彭东稳
10个月前 (05-11) 5608浏览 0评论
3个赞
今天公司的项目视图查询报错,报错如:ERROR 1615 (HY000): Prepared statement needs to be re-prepared
网上找了一圈,都说调整以下值就好了:
mysql> set global table_open_cache=16384;
mysql> set globa……继续阅读 »
彭东稳
1年前 (2018-01-23) 7449浏览 0评论
1个赞
先了解一下MySQL的shutdown流程
1、启动关机过程。
2、如有必要,服务器创建一个关闭线程。
3、服务器将停止接受新连接。
4、服务器终止当前的活动。
5、服务器关机或关闭存储引擎。
6、在服务器退出。
以上只是官方文档中介绍的一些基本的关机流程,正确的关机命令当然是mysqladmin -xx shutdown。接下来,我们来关注一下我们的问题。……继续阅读 »
彭东稳
1年前 (2018-01-22) 4586浏览 0评论
0个赞
MySQL多表join时报错如下:[Err]1267 – Illegal mix of collations(utf8_general_ci,IMPLICIT) and (utf8_unicode_ci,IMPLICIT) for operation ‘=
就是说两个表的排序规则(COLLATION)不同,无法完成比较。COLLATION是用在排……继续阅读 »
彭东稳
1年前 (2017-09-26) 3974浏览 0评论
1个赞
首先考虑,CPU为什么会占用过高?答案是CPU很忙,那么什么会导致CPU很忙呢?
1. 频繁的上下文切换
2. 计算量巨大
3. 磁盘访问等待严重
4. 死循环
5. 等等,还有我不知道的
遵循上面的分析,可以推导,在MySQL服务器上,如果看到CPU过高,该怎么解决问题?
频繁的上下文切换包括:锁很多,等待处理的线程特别多。这种情况在MySQL服务器上该如……继续阅读 »
彭东稳
1年前 (2017-09-01) 5296浏览 0评论
1个赞
现在数据库标配基本都是SSD了,在使用SSD之前,对SSD进行了充分的测试,这其中当然包括最为关键的性能测试部分。下面就跟大家分享一下在SSD性能测试过程中遇到的一个问题和解决问题的思路。
我们的性能测试使用的测试工具是Sysbench,测试场景主要包括5类:全内存非事务更新(nontrx)、全内存事务更新(complex)、非全内存查询(select)、非……继续阅读 »
彭东稳
2年前 (2017-08-24) 6256浏览 0评论
3个赞
从XtraBackup的备份过程可以看出,XtraBackup可以实现Innodb表的无锁备份,但是一个数据库中,即使所有的业务表都是InnoDB表,但是还存在一些MySQL系统库下的user表等,均是myisam表(MySQL 8.0均替换为InnoDB),同时备份过程需要获取Binlog文件名和位置,也要保证表定义文件的一致性,所以从整个实例的角度,即使……继续阅读 »
彭东稳
2年前 (2017-08-22) 8419浏览 0评论
5个赞
源起
线上执行ALTER时,通过show processlist查看到出现Waiting for table metadata lock ,导致后面的查询都无法执行。
5217122 | create_table_04 | 172.100.207.148:31291 | finance | Query | 1829 | Wa……继续阅读 »
彭东稳
2年前 (2017-06-09) 8513浏览 0评论
2个赞
一、innodb_rollback_on_timeout变量
有时侯会发生事务超时的情况,MySQL会返回类似这样的错误:
ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction.
……继续阅读 »
彭东稳
2年前 (2017-05-09) 5890浏览 0评论
1个赞
一、准备知识
在阅读本文之前,需要读者至少了解以下基础知识
CPU Cache的基本概念,具体可参见 关于CPU Cache – 程序猿需要知道的那些事。
NUMA的基本概念,具体可参见 NUMA架构的CPU — 你真的用好了么?。
目前Linux基于多核CPU繁忙程度的线程调度机制,参看Chip Multi Processing aware ……继续阅读 »
彭东稳
2年前 (2017-05-06) 8343浏览 0评论
1个赞
下面来对GROUP BY后面有多个字段进行测试。
一、环境搭建
CREATE TABLE `work` (
`id` int DEFAULT 0,
`name` varchar(20) DEFAULT NULL,
`address` varchar(20) DEFAULT NULL,
`work` var……继续阅读 »
彭东稳
2年前 (2017-05-03) 5062浏览 0评论
1个赞