名站网址导航为大家提供关于数据库教程相关的教程网站知识。
解析一个通过添加本地分区索引提高SQL性能的案例
该sql如下:,复制具体相关代码 具体相关代码如下:,Select /* parallel(src, 8) */ distinct src.systemname as systemname , src.databasename as dat,复制具体相关代码 具体相关代码如下:,----------------------------------------------------------------------------------------------------,下面是NESTED LOOP的介绍: 嵌套连接把要处理的数据集分为外部循环(驱动数据源)和内部循环(被驱动数据源),外部循环只执行一次,内部循环执行的次数等于外部循环执行返回的数据个数。 这种连接的好,复制具体相关代码 具体相关代码如下:
首先谈谈它们的共同点吧:它们本质上都是一种对资源的独占锁定,都是由并发引起(假如如果网站数据库只有一个session,就谈不上锁定)。
接着着重谈谈它们的不同点:
首先,它们的目的不一样,enqueue (即Lock,Oracle官方文档混合使用这两个名词,在等待事件里,可以看到大量的enqueue,其实就是lock)是为了解决业务层面的数据争用,而latch是为了解决内存资源的争用。
其次,它们的运行相关方式不一样,enqueue采用排队相关方式,先到先得,而latch的竞争近乎无序,以一种随机的相关方式,先到不一定先得,得靠抢,而且它还以一种时间片轮训的相关方式,不会一直霸占,即时还没运行完,时间片一到也。
第三,会话持有的时长不一样,enqueue根据业务情况,可能会持有较长时间,而latch通常非常短。第四,引起的原因不一样,enqueue太多通常是业务设计的问题,而latch过多,一般是网站数据库层面的问题(如未使用绑定变量、表或索引热块等)。
关于数据库教程相关的教程网站知识今天我们就说到这里了,希望可以帮到大家。