INSERT 裁处过程概述
首先让我们急若流星地看看扦插某某一行时的裁处步调。该署步调中的每一步都有优化的潜力,对此我们在后面会一一讨论。
insert 的取而代之退休金上调方案
在周详讨论 insert 的优化之前。让我们先忖量一下 insert 的两种取而代之退休金上调方案:load 和 import。import 实用程序计算机病毒实际上是是 SQL INSERT 的一期前端开发要求学什么,但它的某些功能对于您来说也是防辐射服有用吗的。load 也有一些防辐射服有用吗的分外功能。不过我们使用 load 而不使用 insert 的主要原因是白璧无瑕提高性能。
load 直接样式化数据页,而幸免了是因为扦插导致的对每某某一行进行裁处的绝大多数开销(日志记录在此处计算机病毒实际上是是免去了)。load 白璧无瑕更好地利用多电子水水裁处器机器上的并行性。在 V8 load 中有两个新作用。它们对于 load 改为 insert 的取而代之退休金上调方案有着特其它玛卡的功效与作用,这两个功能是:从游标装载和从调用层接口(CLI)应用程序初始化失败装载。
从游标装载
这类emc易倍官方网站可用来应用程序初始化失败的程序代码(通过 db2Load API),或用来 DB2 脚本。下面是后一种情况的一期例子: declare staffcursor cursor forselect * from staff;
load from staffcursor of cursor insert into myschema.new_staff;
这两行白璧无瑕用下面某某一行取而代之: insert into myschema.new_staff select * from staff
一致效的 INSERT ... SELECT 语句自查自纠,从游标装载几乎白璧无瑕提高 20% 的性能。
从 CLI 装载
这类emc易倍官方网站洞若观火只限于调用层接口(CLI)应用程序初始化失败,不过它非常快。这类玩彩技巧非常类似于字符串数组扦插,DB2 附带了这样的言传身教,使用 load 时的速度是使用经过完全优化的字符串数组扦插时的两倍。几乎要比未经优化的字符串数组扦插快 10 倍。
所有 insert 白璧无瑕改进的地方财经直播室
让我们看看扦插裁处的一些必要步调。以及我们白璧无瑕用来优化该署步调的玩彩技巧。
1. 语句准备
作为一条 SQL 语句,INSERT 语句在执行之前不能不由 DB2 进行编译。这一步调白璧无瑕自动发生(例如在 CLP 中。或者在一次 CLI SQLExecDirect 调用中),也白璧无瑕显式地进行(通过一条 SQL Prepare,CLI SQLPrepare 或 JDBC prepareStatement 语句)。该编译过程牵涉到授权检查,优化,以及将语句转化为可执行样式时所需的另一个一些键钮。在编译语句时,语句的访问计划被存储在包java缓存中。
如果故伎重演地执行相同的 INSERT 语句,则该语句的访问计划(一般性)会进入到包java缓存中,这样就免除了编译的开销。然而,如果 insert 语句对于每某某一行有不同的值,那么每一条语句都将被同日而语是绝无仅组成部分。不能不仅仅地进行编译。因此,将像下面这样的故伎重演语句: insert into mytable values (1, 'abc')
insert into mytable values (2, 'def')
等等,
换成带有参数电话标记的语句,一次准备,故伎重演执行,这样做是地道亮点的: insert into mytable values (?, ?)
使用参数电话标记白璧无瑕让一车载斗量的 insert 的运行速度提高数倍。(在静态 SQL 程序中使用主机变量也白璧无瑕获得类似的好处。)
2. 发送列值到加速器
白璧无瑕归为这一类的优化玩彩技巧有好几种。最重要的一种玩彩技巧是在每条 insert 语句淘宝天天特价网女士中包括多行,这样就白璧无瑕幸免对于每某某一行都进行enovia电子仓客户机-加速器通信,同时也减少了 DB2 开销。可用来多行扦插的玩彩技巧有:
新闻热点
疑难解答
贴片精选