SQL优化-标量子查询(数据仓库设计的隐患-标量子查询)

  项目数据库集群出现了大规模节点宕机问题。经查询,问题在于几张表被锁。主要问题在于近期得几个项目在数据库SQL编写时大量使用了标量子查询。

为确定为题确实是由于数据表访问量超过单节点限制,做了一些测试。


   数据库集群环境为:Gbase 8a


资料查询情况总结如下:

  标量子查询是一个非常恐怖的用法。

  当外部表返回的数据量不大时,完全不会引起性能问题。但是此时隐患已经埋下随着外部表数据量的增加,标量的性能会慢慢受到影响,一旦过了这个临界值。

  性能下降的非常明显和可怕。所以在数据仓库中应该用外连接代替标量,避免给程序埋下隐患。

主要隐患:

  1、外部表有多少条不重复的数据(可能是唯一主键、可能是唯一索引,主要看标查询和外部查询的条件),子查询就会被执行多少次。

             关联字段为唯一主键,没有重复值,那么外部表返回多少行,子查询表(内不表)就要被执行多少次。

          关联字段的distinct值只有n个,那子查询表只执行n次。

       2、执行效率低,执行失败。

   3、导致数据库被锁表、数据库节点宕机。


  具体问题及验证

原文地址:https://www.cnblogs.com/fameg/p/10105676.html