Ted's Blog



千万级别文章数据修改作者ID


场景:有两张表 文章表(5000万)、作者表

需求:更改文章中作者

问题:实际上innodb在进行update操作时,除了要记录日志,还要记录 undo信息,所以如果每次更新的数据量特别大,会导致 这另个文件的空间不够用,这个时候如果去扩展空间,就会要很长时间,在加上还有被阻塞的可能,所以问题还是比较复杂的

解决方式:增加关系关联表


举例:原有表结构

文章表

文章ID

文章标题

作者ID

1

标题一

1

2

标题二

1

3

标题三

2

4

标题四

2

5

标题五

3

6

标题六

3

 

作者表

作者ID

作者名称

1

张三

2

李四

3

王五


这时小数据量更改 可以直接 upate 文章表 set 作者ID=目标作者ID where 条件; 

 但是如果更改数据量变大就不好用了


所以我们创建一个关系关联表

关系关联表

编号ID

作者ID

1

1

2

2

3

3

编号ID:如果是在线扩容可以将作者ID作为编号ID

文章表-作者ID:此时作者ID和关联表编号ID做对应关联


当需要修改文章作者时 可以修改 文章对应的编号ID 所对应的作者ID


好处:大大减少了mysql数据更改的条数 提升了处理效率 便于维护管理


2024-05-22:间接映射的策略通过引入一个中间表,间接管理需要频繁更新的字段,优化了数据库的更新操作,提高了系统的性能和可维护性。


思路来源:无敌我大鑫哥 http://dream128.cn

分享:

写评论


Contact ME

github:https://github.com/tebie6

email:liumingyuphp@163.com

友情链接

无敌我大鑫哥:http://dream128.cn