摘要:
之前有一个同事问到我,为什么多个线程同时去做删除同一行数据的操作,老是报死锁,在线上已经出现好多次了,我问了他几个问题:1. 是不是在一个事务中做了好几件事情? 答:不是,只做一个删除操作,自动提交2. 有多少个线程在做删除? 答:差不多10个3. 是什么隔离级别? 答:可重复读当时觉得不可思议,按说自动提交的话行锁,如果已经有事务加锁了,则会等待,等提交之后再去做,发现已经删除了,就会返回,删除0条,为什么会死锁?但事情已经出了,必须研究一下,不然终究是心头之苦啊。然后想到既然线上有这么简单的操作就可以死锁,那么应该写个简单的程序就可以重现,然后同事李润杰兄弟咔嚓咔嚓没多时就给我了,在... 阅读全文
阅读排行榜
Mysql查询阻塞初探
2013-12-04 19:28 by 竹 石, 12241 阅读, 收藏,
摘要:
第一次值班,报警打电话给我说,数据库复制延时一个多小时,那个时候是半夜啊,但我还是很清醒的起来,开机、vpn、登录、show processlist,结果发现情况是这样的:红线框表示的是当前每个线程已经执行、等待的时间,最长的3962其实已经超过一个小时,再看其它的操作都是查询,另外还有一个线程在做flush table操作从每个线程的状态可以看出,第一个线程为Copying to tmp table,可以看出这个线程正在做操作,这是一个查询操作。现在的问题是数据库复制延时,那么在这个图片上面还有一个线程是在做插入操作,状态为Waiting for tables flush,时间也是3900多 阅读全文
mysql的又一个让人捉摸不透的bug?
2013-09-29 16:58 by 竹 石, 8566 阅读, 收藏,
摘要:
这次就不说很多没有写博客了,因为前几天已经写过了。\^o^/昨天我们刚讨论了关于自动化运维工作的实现方式,如果批量执行,中间出错怎么办?突然有人提出mysql支持--force,可以跳过出错继续执行。那么我就想看看它这个功能是什么样子的,看看我能不能借鉴一下。然后我就在一个测试机器上写入如下命令:mysql -h127.0.0.1 -P3307 -uwzf -pxxxxxxx mysql --force -e "insert into myinfo (1,'asdf');insert into myinfo values(1,'asdf');然后报错: 阅读全文
Percona Xtradb Cluster的设计与实现
2014-02-10 17:48 by 竹 石, 6755 阅读, 收藏,
摘要:
Percona Xtradb Cluster的设计与实现Percona Xtradb Cluster的实现是在原mysql代码上通过Galera包将不同的mysql实例连接起来,实现了multi-master的集群架构,如下图所示:上图中有三个实例,组成了一个集群,而这三个节点与普通的主从架构不同,它们都可以作为主节点,三个节点是对等的,这种一般称为multi-master架构,当有客户端要写入或者读取数据时,随便连接哪个实例都是一样的,读到的数据是相同的,写入某一个节点之后,集群自己会将新数据同步到其它节点上面,这种架构不共享任何数据,是一种高冗余架构。一般的使用方法是,在这个集群上面,再搭 阅读全文
mysql Alter table设置default的问题,是bug么?
2013-10-24 16:41 by 竹 石, 6731 阅读, 收藏,
摘要:
不用不知道,用了没用?昨天在线上创建了一个表,其中有两个列是timestamp类型的,创建语句假设是这样的:create table timetest(id int, createtimetimestamp,updatetimetimestamp);但是在创建完成之后,显示一下它的创建语句show create table timetest;CREATE TABLE `timetest` (`id` int(11) DEFAULT NULL,`createtime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_T 阅读全文
浙公网安备 33010602011771号