亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁(yè) > 數(shù)據(jù)庫(kù) > DB2 > 正文

DB2中提高Insert性能的技巧

2024-09-06 23:57:57
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

本文詳細(xì)地講述了DB2數(shù)據(jù)庫(kù)中對(duì)INSERT語(yǔ)句性能優(yōu)化的過(guò)程。

1、INSERT的執(zhí)行步驟。

這些步驟中的每一步都有優(yōu)化的潛力,對(duì)此我們?cè)诤竺鏁?huì)一一討論。

(1)在客戶機(jī)準(zhǔn)備語(yǔ)句。對(duì)于動(dòng)態(tài) SQL,在語(yǔ)句執(zhí)行前就要做這一步,此處的性能是很重要的;對(duì)于靜態(tài) SQL,這一步的性能實(shí)際上關(guān)系不大,因?yàn)檎Z(yǔ)句的準(zhǔn)備是事先完成的。

(2)在客戶機(jī),將要插入的行的各個(gè) 列值組裝起來(lái),發(fā)送到 DB2 服務(wù)器。

(3)DB2 服務(wù)器確定將這一行插入到哪一頁(yè)中。

(4)DB2 在 用于該頁(yè)的緩沖池中預(yù)留一個(gè)位置。如果 DB2 選定的是一個(gè)已有的頁(yè),那么就需要讀磁盤;如果使用一個(gè)新頁(yè),則要在表空間(如果是SMS,也就是系統(tǒng)管理存儲(chǔ)的表空間)中為該頁(yè)物理地分配空間。插入了新行的每一頁(yè)最后都要從緩沖池寫(xiě)入到磁盤。

(5)在目標(biāo)頁(yè)中對(duì)該行進(jìn)行格式化,并獲得該行上的一個(gè)X(exclusive,獨(dú)占的) 行鎖。

(6)將反映該 insert 的一條記錄寫(xiě)入到日志緩沖區(qū)中。

(7)最后提交包含該 insert 的事務(wù),如果這時(shí)日志緩沖區(qū)中的記錄還沒(méi)有被寫(xiě)入日志文件的話,則將這些記錄寫(xiě)到日志文件中。

此外,還可能發(fā)生很多類型的附加處理,這取決于數(shù)據(jù)庫(kù)配置,例如,索引或觸發(fā)器的存在。這種額外的處理對(duì)于性能來(lái)說(shuō)也是意義重大的,我們?cè)诤竺鏁?huì)討論到。

2、insert 的替代方案

在詳細(xì)討論 insert 的優(yōu)化之前,讓我們先考慮一下 insert 的兩種替代方案:load 和 import。import 實(shí)用程序?qū)嶋H上是 SQL INSERT 的一個(gè)前端,但它的某些功能對(duì)于您來(lái)說(shuō)也是有用的。load 也有一些有用的額外功能,但是我們使用 load 而不使用 insert 的主要原因是可以提高性能。

(1)load 直接格式化數(shù)據(jù)頁(yè),而避免了由于插入導(dǎo)致的對(duì)每一行進(jìn)行處理的大部分開(kāi)銷(例如,日志記錄在這里實(shí)際上是消除了)。而且,load 可以更好地利用多處理器機(jī)器上的并行性。在 V8 load 中有兩個(gè)新功能,它們對(duì)于 load 成為 insert 的替代方案有著特別的功效,這兩個(gè)功能是:從游標(biāo)裝載和從調(diào)用層接口(CLI)應(yīng)用程序裝載。

(2)從游標(biāo)裝載

這種方法可用于應(yīng)用程序的程序代碼(通過(guò) db2Load API),或用于 DB2 腳本。下面是后一種情況的一個(gè)例子:

以下是代碼片段:
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 語(yǔ)句相比,從游標(biāo)裝載幾乎可以提高 20% 的性能。

(3)從 CLI 裝載

這種方法顯然只限于調(diào)用層接口(CLI)應(yīng)用程序,但是它非常快。這種技巧非常類似于數(shù)組插入,DB2 附帶了這樣的示例,使用 load 時(shí)的速度是使用經(jīng)過(guò)完全優(yōu)化的數(shù)組插入時(shí)的兩倍,幾乎要比未經(jīng)優(yōu)化的數(shù)組插入快 10 倍。

3、所有 insert 可以改進(jìn)的地方

讓我們看看插入處理的一些必要步驟,以及我們可以用來(lái)優(yōu)化這些步驟的技巧。

(1) 語(yǔ)句準(zhǔn)備

作為一條 SQL 語(yǔ)句,INSERT 語(yǔ)句在執(zhí)行之前必須由 DB2 進(jìn)行編譯。這一步驟可以自動(dòng)發(fā)生(例如在 CLP 中,或者在一次 CLI SQLExecDirect 調(diào)用中),也可以顯式地進(jìn)行(例如,通過(guò)一條 SQL Prepare、CLI SQLPrepare 或 JDBC prepareStatement 語(yǔ)句)。該編譯過(guò)程牽涉到授權(quán)檢查、優(yōu)化,以及將語(yǔ)句轉(zhuǎn)化為可執(zhí)行格式時(shí)所需的其他一些活動(dòng)。在編譯語(yǔ)句時(shí),語(yǔ)句的訪問(wèn)計(jì)劃被存儲(chǔ)在包緩存中。

如果重復(fù)地執(zhí)行相同的 INSERT 語(yǔ)句,則該語(yǔ)句的訪問(wèn)計(jì)劃(通常)會(huì)進(jìn)入到包緩存中,這樣就免除了編譯的開(kāi)銷。然而,如果 insert 語(yǔ)句對(duì)于每一行有不同的值,那么每一條語(yǔ)句都將被看成是惟一的,必須單獨(dú)地進(jìn)行編譯。因此,將像下面這樣的重復(fù)語(yǔ)句:

以下是代碼片段:
insert into mytable values (1, 'abc')
  insert into mytable values (2, 'def')

等等,換成帶有參數(shù)標(biāo)記的語(yǔ)句,一次準(zhǔn)備,重復(fù)執(zhí)行,這樣做是十分可取的:

以下是代碼片段:
insert into mytable values (?, ?)

使用參數(shù)標(biāo)記可以讓一系列的 insert 的運(yùn)行速度提高數(shù)倍。(在靜態(tài) SQL 程序中使用主機(jī)變量也可以獲得類似的好處。)

(2)發(fā)送列值到服務(wù)器

可以歸為這一類的優(yōu)化技巧有好幾種。最重要的一種技巧是在每條 insert 語(yǔ)句中包括多行,這樣就可以避免對(duì)于每一行都進(jìn)行客戶機(jī)-服務(wù)器通信,同時(shí)也減少了 DB2 開(kāi)銷。可用于多行插入的技巧有:

在 VALUES 子句中包含多行的內(nèi)容。例如,下面的語(yǔ)句將插入三行:INSERT INTO mytable VALUES (1, 'abc'), (2, 'def'), (3, 'ghi')

在 CLI 中使用數(shù)組插入(array insert)。這需要準(zhǔn)備一條帶參數(shù)標(biāo)記的 INSERT 語(yǔ)句,定義一個(gè)用于存儲(chǔ)要插入的值的數(shù)組,將該數(shù)組綁定到參數(shù)標(biāo)記,以及對(duì)于每個(gè)數(shù)組中的一組內(nèi)容執(zhí)行一次 insert。而且,示例程序 sqllib/samples/cli/tbload.c 提供了數(shù)組插入的基本框架(但是執(zhí)行的是 CLI LOAD)。從不使用數(shù)組改為使用包含 100 行的數(shù)組,可以將時(shí)間縮短大約 2.5 倍。所以應(yīng)該盡可能地使用包含至少 100 行的數(shù)組。

在 JDBC 中使用批處理操作。這跟 CLI 中的數(shù)組插入一樣,基于相同的概念,但是實(shí)現(xiàn)細(xì)節(jié)有所不同。當(dāng)通過(guò) prepareStatement 方法準(zhǔn)備了 insert 語(yǔ)句之后,剩下的步驟是針對(duì)每一列調(diào)用適當(dāng)?shù)?setXXXX 方法(例如,setString 或 setInt),然后是 addBatch。對(duì)于要插入的每一行,都要重復(fù)這些步驟,然后調(diào)用 executeBatch 來(lái)執(zhí)行插入。要查看這方面的例子,請(qǐng)參閱“參考資料”一節(jié)中的 JDBC Tutorial。

使用 load 將數(shù)據(jù)快速地裝入到一個(gè) staging 表中,然后使用 INSERT ... SELECT 填充主表。(通過(guò)這種方法節(jié)省下來(lái)的代價(jià)源于 load 的速度非??欤偌由?INSERT ... SELECT 是在 DB2 內(nèi)(在服務(wù)器上)傳輸數(shù)據(jù)的,從而消除了通信上的代價(jià)。一般情況下我們不會(huì)使用這種方法,除非在 INSERT ... SELECT 中還要另外做 load 無(wú)法完成的處理。

如果不可能在一條 insert 語(yǔ)句中傳遞多行,那么最好是將多條 insert 語(yǔ)句組成一組,將它們一起從客戶機(jī)傳遞到服務(wù)器。(不過(guò),這意味著每條 insert 都包含不同的值,都需要準(zhǔn)備,因而其性能實(shí)際上要比使用參數(shù)標(biāo)記情況下的性能更差一些。)將多條語(yǔ)句組合成一條語(yǔ)句可以通過(guò) Compound SQL 來(lái)實(shí)現(xiàn):

在 SQL 中,復(fù)合語(yǔ)句是通過(guò) BEGIN ATOMIC 或 BEGIN COMPOUND 語(yǔ)句創(chuàng)建的。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
高清一区二区三区av| 91亚洲精品乱码久久久久久蜜桃| 国产综合福利在线| 亚洲女人天堂在线| www.亚洲高清| 亚洲男人天天操| 三级在线观看| 国产精品白浆流出视频| 深夜福利在线看| 中文资源在线网| 午夜裸体女人视频网站在线观看| 黄网在线观看网址入口| 亚洲av无一区二区三区久久| 欧美日韩1234| 国产亚洲人成a在线v网站| 日本r级电影在线观看| 国模gogo一区二区大胆私拍| 国产99精品一区| 亚洲国产精品99久久| 亚洲老女人视频免费| 精品人妻一区二区免费视频| 日本不卡一区二区三区视频| 国产区精品视频在线观看豆花| 亚洲自拍偷拍色片视频| 黄色片一级视频| 九色porny丨精品自拍视频| 精品人妻一区二区三| 日韩欧美国产精品| 国产黄色免费电影| 久久成人麻豆午夜电影| 夜夜爽www精品| 最近中文字幕第一页| 99九九99九九九99九他书对| 欧美日韩一级二级三级| 中文国语毛片高清视频| 国产精品网曝门| 国产在视频线精品视频| 国产成人精品久久亚洲高清不卡| 欧美激情xxxx性bbbb| 黑人巨大精品欧美一区二区奶水| 国产精品美女久久久久aⅴ国产馆| 亚洲v日本v欧美v久久精品| 色乱码一区二区三区网站| 亚洲av无码国产精品久久不卡| 精品中文一区| 天天做天天摸天天爽天天爱| 中文av字幕在线观看| 精品人妻大屁股白浆无码| 秋霞a级毛片在线看| 国产女主播一区| 国产浴室偷窥在线播放| 五月激激激综合网色播| 亚洲国产欧美日本视频| 波多野结衣影院| 国产精品流白浆在线观看| www.日本在线视频| 性少妇videosexfreexxx片| 成人久久精品人妻一区二区三区| 国产又爽又黄的激情精品视频| 日韩成人激情视频| 日本aⅴ免费视频一区二区三区| 三级黄色片免费观看| av中文在线播放| 国模精品一区二区三区色天香| 日韩成人中文字幕在线观看| 国产精品一区而去| 国产精品久久久久久久裸模| 精品国产av鲁一鲁一区| 国产精品一区二区久激情瑜伽| 68精品国产免费久久久久久婷婷| 视频污在线观看| 免费高清视频在线观看| 超碰成人福利| 欧美精品中文字幕一区| 亚洲h精品动漫在线观看| 中文字幕日韩欧美精品在线观看| 久久国产视频播放| 天堂网在线.www天堂在线| av大片免费在线观看| 一二三区高清| 91精品啪aⅴ在线观看国产| 中文字幕亚洲无线码在线一区| 国产精品99精品无码视亚| 中文字幕永久免费| 中日韩免费视频中文字幕| 中文字幕超碰在线| 欧美亚洲日本一区| 国产成人精品白浆久久69| 永久555www成人免费| 国产精品网站入口| 国产在线日韩| 137大胆人体在线观看| 77777影视视频在线观看| 欧美色图17p| 在线色视频观看| 国产精品久一| www.夜夜爽| 欧美色电影在线| 亚洲精品国产第一综合99久久| 偷拍视频一区二区三区| 中文字幕+乱码+中文| 日本一区二区不卡| 你懂的视频在线一区二区| 成人精品小视频| 日韩影视高清在线观看| 日本在线视频一区| 成人短视频在线看| 最新av在线播放| 亚洲午夜未删减在线观看| 国产成人手机高清在线观看网站| 中文字幕+乱码+中文乱码91| 亚洲精品成人无码| 久久久www成人免费毛片麻豆| 久久精品视频免费在线观看| 91丨九色丨尤物| 国产一区二区精品久久99| www.久久伊人| 美女胸又www又黄的网站| 国产精品69久久久久水密桃| 在线观看黄网站免费继续| 成人国产精品视频| 亚洲精品亚洲人成人网在线播放| 精品在线播放| 日本黄大片一区二区三区| 国产一区在线免费| 日韩av二区在线播放| 欧美日韩成人在线一区| 亚洲成人一区| 亚洲黄色片网站| 久久婷婷一区| 亚洲999一在线观看www| 亚洲色图欧美日韩| 中文字幕av导航| 成人资源视频网站免费| av国产精品| 黄色网页在线播放| hd100%videos日本| 欧美高清在线一区二区| 欧美18—19sex性hd| 亚洲激情免费观看| 亚洲性猛交富婆| www日韩av| 国产一区二区按摩在线观看| 一本大道久久精品| 国产精品户外野外| 网友自拍视频在线| 久久久久久久国产| 成 人 黄 色 小说网站 s色| 日韩欧美精品一区二区综合视频| 秋霞av亚洲一区二区三| 亚洲一区二区av在线| 色天堂在线视频| 99re66热这里只有精品4| 日韩有码免费视频| 麻豆免费网站| 欧美黄色录像片| 在线视频免费观看一区| 中文字幕乱码av| 亚洲精品视频在线播放| 在线视频不卡一区二区| 国产亚洲精品久久久久久777| 2023国产精品| 一区二区在线观| 老熟妇一区二区三区| 老司机色在线视频| 一个人看的www片免费高清视频| 久久久久亚洲AV| 韩国精品一区二区| 欧美白人最猛性xxxxx| 成人黄色av网| 亚洲一区二区成人| 国产毛片精品| www.麻豆av.com| 欧美日韩国产一级片| 精品黑人一区二区三区观看时间| 国产乱淫av片杨贵妃| √天堂资源地址在线官网| 久久综合国产精品台湾中文娱乐网| 亚洲女则毛耸耸bbw| 国产精品久久久久久久久久99| 成人永久aaa| www.国产在线视频| 色噜噜国产精品视频一区二区| 97caopron在线视频| 日韩在线不卡av| 日韩av片在线| 欧美三日本三级少妇三99| 久久久久久91| 久久日韩视频| 可以免费看毛片的网站| 高清国产午夜精品久久久久久| 同性视频网站免费男| 极品一区美女高清| 国产精品免费网站| 久久噜噜亚洲综合| 国产av自拍一区| 国产高潮免费视频| 91theporn国产在线观看| 国产亚洲一区二区在线观看| 成人午夜视频精品一区| 亚洲老板91色精品久久| 色综合久久久| 色之综合天天综合色天天棕色| 蜜桃视频在线观看免费视频| 欧美精品久久一区二区| 久久先锋影音av鲁色资源网| 欧美做爰爽爽爽爽爽爽| 精品成人av一区| 翔田千里精品久久一区二| 日韩视频在线观看一区| 日韩在线观看av| 欧美三级视频在线播放| 免费看岛国视频在线观看| 星空影院最新电视剧免费观看| 色婷婷香蕉在线一区二区| 捆绑紧缚一区二区三区视频| 都市激情久久综合| 国产夫绿帽单男3p精品视频| 91成人福利在线观看| 亚洲午夜网未来影院| 国产精品女同一区二区三区| 亚洲图片欧洲图片日韩av| 国产精品一区二区久久国产| 婷婷丁香综合网| 无码精品视频一区二区三区| 久久久精品一区| 2018国产精品| 亚洲综合免费观看高清在线观看| 欧美日韩成人在线一区| 国产精品亚洲四区在线观看| 在线中文字幕资源| 欧美在线二区| 国产一区二三区好的| 亚洲日本在线看| 91色综合久久久久婷婷| 午夜不卡在线视频| 日韩专区第三页| 国产一区二区三区福利| 欧美日韩久久精品| www.日本久久| 精品国产乱码久久久久久1区二区| 欧美日本国产精品| 精品无码一区二区三区爱欲| 欧美成人久久| 91精品国产综合久久精品| 精品在线观看国产| 欧美在线视频免费播放| 最近2019年日本中文免费字幕| 国产欧美在线观看视频| 久久这里精品国产99丫e6| 三妻四妾的电影电视剧在线观看| a视频网址在线观看| 亚洲高清999| 欧美成人ⅴideosxxxxx| 欧美精品一区二区三区蜜臀| 国产稀缺精品盗摄盗拍| 欧美一区二区三区免费视| 日韩精品成人免费观看视频| 日本在线观看一区二区三区| 天天色天天草| 色综合天天性综合| 污的网站在线观看| 久久99偷拍| 欧美性生活久久| av小说天堂网| 人人草在线视频| 91精品国产乱码久久蜜臀| 精品国产乱码久久久久久夜甘婷婷| 五月色婷婷综合| 欧美人动与zoxxxx乱| 欧美sm美女调教| 高潮无码精品色欲av午夜福利| 18欧美乱大交hd1984| 免费在线观看成人| 国产91精品一区二区绿帽| 羞羞网站在线免费观看| 香蕉国产在线视频| 欧美激情xxxxx| 日韩av中文在线观看| 在线成人私人影院| 国产欧美综合一区二区三区| 成人无码一区二区三区| 91丝袜国产在线播放| 国产精品免费久久| 少妇久久久久久久久久| 欧美日韩高清丝袜| 人妖精品videosex性欧美| 成人羞羞网站入口| 亚洲另类在线制服丝袜| 自拍偷自拍亚洲精品播放| 日本精品久久中文字幕佐佐木| 久久国产精品亚洲va麻豆| 日韩av男人天堂| 91香蕉亚洲精品| 欧美色资源站| 亚洲va韩国va欧美va| 国产主播一区二区| 亚洲最大福利视频网站| 性高潮久久久久久久久| 欧美成人一区在线| 中文字幕在线观看日本| 成人免费视频视频在线观看免费| 中文在线字幕免费观| 麻豆精品新av中文字幕| 国产青青草视频| 欧美日韩一区二区在线| 久久国产手机看片| 精品肉辣文txt下载| 99久久精品久久久久久ai换脸| 女~淫辱の触手3d动漫| 擼擼色在线看观看免费| 麻豆av免费在线| 成人一区福利| 国产亚洲精品7777| 一级黄色免费网站| 久久久久中文字幕2018| 在线观看18视频网站| 欧美一区二区公司| 中文字幕男人天堂| 久久琪琪电影院| 日韩国产福利| 99青草视频在线播放视| 蜜桃成人在线| 草莓视频丝瓜在线观看丝瓜18| 400部精品国偷自产在线观看| 欧美性xxxx图片| 九九大香尹人视频免费| 亚洲综合免费观看高清完整版|