12

MySQL半同步存在的问题

在开启MySQL半同步的时候,需要至少一个开启了半同步的slave。在master提交一个写事务之后,master会block这个事务,直到至少一个slave确认已经接受到了该复制事件,这时master才想应用程序确认提交成功。否则超时中断半同步,直到重新满足条件开启。

继续阅读全文

12

MySQL也能并发导入数据

对MySQL的用户而言,备受诟病的一个问题就是导入SQL备份文件时不能并发,使得导入的效率很低。今天,我们就来改变下思路,尝试一下并发导入的方法,供大家参考。1、问题分析想要实现并发导入,其实没那么难,最简单的思路就是:将完整的文件切分成多份,然后并发导入即可。在这里,我自己的做法是这样的:1) 首先,假设只有一个库;多个库的情况也是类似,无非就是循环2) 计算SQL文件总行数3) 计算SQL文件总大小4) 设定每个切分文…

继续阅读全文

09

Innodb 表和索引结构

因为Innodb表的数据是依赖于聚集索引顺序存放,同时聚集索引和数据一块存储,普通索引也需要存放一份聚集索引。所以对于聚集索引的设计尽量按顺序写入,必免数据分页,行迁移等对性能影响的现象。另外聚集索引要设计的尽可能短。从设计上必须锁的时间,大量随机IO的出现。

继续阅读全文

07

MySQL库目录下db.opt文件的作用

细心的朋友可能会发现有时候在某些库目录下有个 db.opt 文件,那这个文件是干什么用的呢?如果你用vi等编辑器打开看的话,内容很简单,是用来记录该库的默认字符集编码和字符集排序规则用的。也就是说如果你创建数据库指定默认字符集和排序规则,那么后续创建的表如果没有指定字符集和排序规则,那么该新建的表将采用db.opt文件中指定的属性。

继续阅读全文