首席DBA用SQL洪荒之力,造一把通向数据库的钥匙(2)
从上面的“数据价值密度、实时性”来看,传统关系型数据库适合于价值密度更高、实时性要求更高的场景(这也就不难理解类似账户、金额类信息都是保存在传统关系型数据库中);MPP架构的NewSQL次之,MPP架构的NoSQL更适合于低价值、实时性要求不高的场景. 从下面的“数据规模”来看,传统关系型数据库适合保存的大小限制在TB级别,而后两者可在更大尺度上(PB、EB)级保存数据. 从下面的“典型场景”来看,传统关系型数据库适合于OLTP在线交易系统;MPP架构的NewSQL适合于OLAP在线分析系统;而NoSQL的使用场景较多(利于KV型需求、数据挖掘等均可以考虑). 最后从“数据特征”来看,前两者适合于保存结构化数据,后者更适合于半结构化、乃至非结构化数据的保存. 归纳一下,不同技术有其各自特点,不存在谁代替谁的问题.传统关系型数据库有其自身鲜明特点,在某些场合依然是不二选择.而作为其主要交互语言,SQL必然长期存在发展下去. 我们再来对比一下传统数据库与大数据技术.从数据量、增长型、多样化、价值等维度对比两种技术,各自有其适用场景. 对于大数据领域而言,各种技术层出不穷.但对于广大使用者来说,往往会存在一定的使用门槛,因此现在的一种趋势就是在大数据领域也引入“类SQL”,以类似SQL的方式访问数据.这对于广大使用者来说,无疑大大降低了使用门槛. 解答一些疑问:
四、SQL仍然很重要!我们通过一个示例,说明一下理解SQL运行原理仍然很重要. 这是我在生产环境碰到的一个真实案例.Oracle数据库环境,两个表做关联.执行计划触目惊心,优化器评估返回的数据量为3505T条记录,计划返回量127P字节,总成本9890G,返回时间999:59:59. 从执行计划中可见,两表关联使用了笛卡尔积的关联方式.我们知道笛卡尔连接是指在两表连接没有任何连接条件的情况.一般情况下应尽量避免笛卡尔积,除非某些特殊场合.否则再强大的数据库,也无法处理.这是一个典型的多表关联缺乏连接条件,导致笛卡尔积,引发性能问题的案例. 从案例本身来讲,并没有什么特别之处,不过是开发人员疏忽,导致了一条质量很差的SQL.但从更深层次来讲,这个案例可以给我们带来如下启示:
五、SQL优化法则下面我们来看看常见的优化法则.这里所说的优化法则,其实是指可以从那些角度去考虑SQL优化的问题.可以有很多种方式去看待它.下面列举一二. (编辑:ASP站长网) |