首批通过分布式安全可靠测评,为关键业务系统打造
JOIN 表使用建议
更新时间:2024-06-26 16:10:58
对数据库而言,某些资源密集型的 SQL 查询可能导致一系列的性能问题,如主从复制的长时间延迟、连接中断,甚至导致数据库实例崩溃。这些耗能大的 SQL 长时间占用资源,从而降低了数据库集群的并发处理能力。在业务流量激增(无论是由业务本身增长或是网络抖动引起)的情况下,这些重资源查询会使得 SQL 积压现象严重,并可能超出数据库本身的并发处理限额,对业务的正常运行造成不利影响。
OceanBase 数据库虽然不限制关联表(Join 表)的数量,但在某些复杂函数的使用上,如正则表达式相关的 regexp_substr 等,其执行效能通常较低,因此对业务性能有较大影响。
为了确保数据库稳定、可扩展且可控,业务应尽可能使用简单的SQL语句来执行基本的增加、删除、修改和查询操作。衡量业务中 SQL 是否优秀的关键在于这些 SQL 语句的简洁性以及其是否在合理的性能范围内。这里的“合理范围”指的是随着业务和数据规模的扩展,SQL 的性能开销保持低廉并且稳定,不会导致大量 CPU 或 I/O 资源的占用。例如,一个基于主键进行查询的 SQL 语句,在处理少量数据和处理百万级数据时,比如处理一行数据与一千万行数据,性能开销变化不大。这样的查询提供了稳定的性能,业务可以在此基础上合理预估流量增加对数据库扩容的需求,确保数据库可支撑未来的业务增长。
然而,如果业务查询中大量依赖复杂的 SQL 语句且性能开销大,即使是数据库前端或网络的微小变动也可能导致性能问题,使得 SQL 积压和实例并发数量剧增,并对业务稳定性造成威胁。复杂的 SQL 查询可能导致数据库集群性能波动明显,使得集群的并发能力降低,业务不可控。