可能很多小伙伴会说:我们开发过程中,会遵循阿里开发手册中的规约,其中有一条规约如下:
我们不用外键了,也就不会出现前面的 [Err] 1451 错误了
其实阿里开发手册中的这条规约,不是说不让我们用外键,而是说不用数据库层面的外键约束,在应用代码层面解决外键逻辑
用数据库层面的外键,问题提示的很明显,也不会产生脏数据
而应用层解决外键,反而使外键约束的数据一致性问题更隐晦,产生脏数据,如下
从此我们踏上了修数据的不归路
2、主键加速自增
========
很多情况下,我们的主键是 int 或者 bigint 类型,并且设置成了自增
不管是 int 还是 bigint ,都有一个最大值,如果一直自增下去,总有一天会达到最大值(可能到地老天荒也达不到这个值)
replace into 的更新是先删除再插入,会导致主键自增 1(照理来说,更新是不应该导致主键自增 1)
如果更新频率远远大于插入频率,本不用考虑的自增主键用完的问题,可能就需要考虑了
另外也会导致主键不连续,主键值跳跃式的出现在表中
3、主从切换问题
========
master:master-local ,slave:slave-192.168.0.112 ,同步库:my_project
从上图可以看出,主从复制是正常的
接下来我们看看 replace into 对主从复制有什么影响