分库分表中间表优化

简介: 【7月更文挑战第21天】

这个基本方案可以从两个角度刷亮点:
第一个角度是结合主键生成策略,优化中间表的设计

在设计订单主键的时候,将买家ID编码放到了订单ID里,中间表里就可以考虑删除买家ID列。

第二个角度是讨论中间表的缺陷,最大的缺陷是性能瓶颈

这个方案的一个重大缺陷是中间表的性能瓶颈。如果中间表的数据只插入,不存在更新的话,主要是读瓶颈,那么多加几个从库就可以解决;但是如果中间表的一些列是需要频繁被更新的,那么中间表本身就扛不住写压力,但是中间表是不能分库分表的,因为分库分表后不知道该查询哪张中间表。

中间表最让人害怕的就是写瓶颈,可以考虑提供一个解决方案:

一般来说,在设计中间表的时候就应该包含尽可能少的列,而且这些列的值应该尽可能不变,会频繁更新的列就不要放了。比如 订单ID这种ID列的基本不会变,状态这种经常变更的就不要放了。

中间表还有两个明显的缺陷:难以适应灵活多变的查询场景,还有数据一致性问题。

中间表还有一个缺陷就是表结构很固定,如果将来需要支持新的查询场景,必须要修改中间表的表结构,大多数情况下会增加新的列。另一方面,中间表本身往往是一个大表,大表改表结构是一个非常危险的事情,当然也可以考虑增加新的中间表,但是治标不治本,而且中间表越多越难维护,数据一致性越难保证。

进一步思考,中间表要想解决写瓶颈,是不是也可以分库分表?

目录
打赏
0
2
2
1
108
分享
相关文章
|
12月前
|
分库分表键的选择 重试方案
【7月更文挑战第19天】
119 5
连续四年,稳居第一!
连续四年,稳居第一!
144 1
关于权限系统的一些思考
【10月更文挑战第24天】权限系统在现代软件应用中至关重要,关乎数据安全、用户体验和合规性。本文深入探讨了权限系统的重要性、设计原则、实现技术和面临的挑战,强调了最小权限、职责分离、灵活性与可扩展性及易用性原则,并介绍了RBAC、ABAC和ACL等常见技术。同时,文章提出了应对权限管理复杂性、用户身份认证集成、系统安全性和性能优化的策略。
184 4
在Docker中,stage和step有什么区别?
在Docker中,stage和step有什么区别?
PowerDesigner16.5逆向工程导入
本文介绍了如何通过现有数据库或SQL将数据逆向导入PowerDesigner。首先,需下载并安装PowerDesigner 16.5(32位),并通过指定链接获取软件及教程。接着,安装对应的MySQL ODBC驱动,配置ODBC数据源。最后,在PowerDesigner中通过文件>反向工程>database选项导入数据库。若环境不匹配,可直接导入SQL脚本文件。文中提供了详细步骤与截图指导。
294 0
干货分享!基于 Github Action 的 taosX CI 搭建
去年随着 3.1.1.0 版本的发布,TDengine 数据接入工具 taosX 正式推出。该工具具备强大的数据抓取、清洗、转换及加载(ETL)功能。它不仅能无缝对接物联网中的 MQTT 协议,更重要的是能够连接到工业数据源如 OPC-UA、OPC-DA、PI System 等。借助这一模块,工业场景中常用的 SCADA、DCS 等系统无需编写任何代码,仅需通过简单配置即可实现数据的实时、持续导入至 TDengine。
113 1
云资源的使用规范是什么?
【5月更文挑战第9天】云资源的使用规范是什么?
302 1
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等

登录插画

登录以查看您的控制台资源

管理云资源
状态一览
快捷访问