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

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


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


资料查询情况总结如下:

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

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

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

主要隐患:

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

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

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

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

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


  具体问题及验证

SQL优化-标量子查询(数据仓库设计的隐患-标量子查询)的更多相关文章

  1. Oracle Sql优化之报表和数据仓库运算

    1.行转列:有两种写法,一种是case when end写法,另一种写法是pivot(oracle 11g新增) select job, then sal end) as sal10, then sa ...

  2. SQL夯实基础(四):子查询及sql优化案例

    首先我们先明确一下sql语句的执行顺序,如下有前至后执行: (1)from  (2) on   (3) join  (4) where  (5)group by  (6) avg,sum...  (7 ...

  3. SQL优化系列——子查询

    sql调优方法: (1)not in子查询优化 尽量避免子查询select * from a where id not in(select id from b); select * from a wh ...

  4. 数据库设计与SQL优化的建议

    1. 用程序中,保证在实现功能的基础上,尽量减少对数据库的访问次数:通过搜索参数,尽量减少对表的访问行数,最小化结果集,从而减轻网络负担:能够分开的操作尽量分开处理,提高每次的响应速度:在数据窗口使用 ...

  5. mysql系列十一、mysql优化笔记:表设计、sql优化、配置优化

    可以从这些方面进行优化: 数据库(表)设计合理 SQL语句优化 数据库配置优化 系统层.硬件层优化 数据库设计 关系数据库三范式 1NF:字段不可分; 2NF:有主键,非主键字段依赖主键; 3NF:非 ...

  6. sql优化 慢查询分析

    查询速度慢的原因很多,常见如下几种 SQL慢查询分析 转自:https://www.cnblogs.com/firstdream/p/5899383.html 1.没有索引或者没有用到索引(这是查询慢 ...

  7. mysql,存储引擎,事务,锁,慢查询,执行计划分析,sql优化

    基础篇:MySql架构与存储引擎 逻辑架构图: 连接层: mysql启动后(可以把mysql类比为一个后台的服务器),等待客户端请求,当请求到来后,mysql建立一个一个线程处理(线程池则分配一个空线 ...

  8. 大数据量数据库设计与优化方案(SQL优化)

    转自:http://blog.sina.com.cn/s/blog_6c0541d50102wxen.html 一.数据库结构的设计 如果不能设计一个合理的数据库模型,不仅会增加客户端和服务器段程序的 ...

  9. MySql数据表设计,索引优化,SQL优化,其他数据库

    MySql数据表设计,索引优化,SQL优化,其他数据库 1.数据表设计 1.1数据类型 1.2避免空值 1.3text类型优化 2.索引优化 2.1索引分类 2.2索引优化 3.SQL优化 3.1分批 ...

随机推荐

  1. 过时的PreferenceActivity导致Fragment显示问题

    问题描写叙述: 在一个点击preferenceactivity中某项显示一个Fragment的场景中,出现错误: java.lang.RuntimeException: This should be ...

  2. uva 1555 Garland

    题意:有n个灯笼.第一个的高度是A,最后一个是B.灯笼的关系给出.并要求每一个灯笼的高度是非负数的.求最低的B 思路:推出公式:H[i]=2*H[i-1]+2-H[i-2],然后枚举H[2],在知道H ...

  3. ubuntu终端白屏的解决方法

    昨天突发奇想的想为teminal设置一个背景, 这样.... 不过过了一会就高兴不起来了,,,,终端白屏!好吧,现在我页没办法彻底解决, 不过暂时的一个方法是可以把首选项->背景->背景图 ...

  4. linux系统下块设备驱动程序

    顾名思义,块设备驱动程序就是支持以块的方式进行读写的设备.块设备和字符设备最大的区别在于读写数据的基本单元不同.块设备读写数据的基本单元为块,例 如磁盘通常为一个sector,而字符设备的基本单元为字 ...

  5. java基本数据类型(二)和分支结构

    基本数据类型(四类八种):不能为null一.整数型 byte----2的8次方 short----2的16次方 int----2的32次方 long----2的64次方二.浮点型 float----4 ...

  6. guice基本使用,guice整合guice-servlet,web scope注解(六)

    guice servlet提供了几个比较有用的web scope,类似与传统servlet 的session,request这些提供的范围等. guice servlet 提供的web scope 如 ...

  7. 第六课: - GroupBy函数

    第 6 课   让我们看一看 groupby 函数. In [1]: # Import libraries import pandas as pd import sys In [2]: print(' ...

  8. css简单介绍

    css层叠样式表,主要作用就是解决内容与表现分离的问题.html标签有自己的意义当然也是有自己的默认样式的,但有时候我们想修改他的样式,这时候就需要了css. 例:给字体加上颜色,我们有如下几种方法: ...

  9. <Android Framework 之路>Android5.1 MediaScanner

    前言 MediaScanner是Android系统中针对媒体文件的扫描过程,将储存空间中的媒体文件通过扫描的方式遍历并存储在数据库中,然后通过MediaProvider提供接口使用,在Android多 ...

  10. 使用JDK和axis2发布webservice

    最近使用webservice进行远程调用一直很火,自从JDK1.6版本发布后,发布一个webservice项目变得更加简单了 笔者由于工作的需要针对JDK和axis2如何发布webservice做过相 ...