锘??xml version="1.0" encoding="utf-8" standalone="yes"?> 緙撳啿姹犲懡涓巼 榪欎釜姣旂巼璇存槑浜嗕負欏甸潰璇鋒眰鎻愪緵鏈嶅姟鏃訛紝鏁版嵁搴撶鐞嗗櫒涓嶉渶浠庣鐩樿鍏ラ〉錛堝嵆璇ラ〉宸茬粡鍦ㄧ紦鍐叉睜涓級灝辮兘澶勭悊欏佃姹傜殑鏃墮棿鐧懼垎姣斻?/p> 璁$畻錛?/p> BPHR = (1 - ((緙撳啿姹犳暟鎹墿鐞嗚 + 緙撳啿姹犵儲寮曠墿鐞嗚) / (緙撳啿姹犳暟鎹昏緫璇?+ 緙撳啿姹犵儲寮曢昏緫璇? ) ) * 100% 绱㈠紩鍛戒腑鐜?/p> 榪欎釜姣旂巼琛ㄦ槑浜嗗彲浠ュ湪緙撳啿姹犱腑鎵懼埌鐨勯〉闈㈣兘澶熸弧瓚崇殑瀵圭儲寮曢〉鐨勬墍鏈夎璇鋒眰鎵鍗犵殑鐧懼垎姣斻?/p> 璁$畻錛?/p> IHR = (1 - (緙撳啿姹犵儲寮曠墿鐞嗚 / 緙撳啿姹犵儲寮曢昏緫璇? ) ) * 100% 鏁版嵁鍛戒腑鐜?/p> 榪欎釜姣旂巼璇存槑浜嗗彲浠ュ湪緙撳啿姹犱腑鎵懼埌鐨勯〉闈㈣兘澶熸弧瓚崇殑瀵規暟鎹〉鐨勬墍鏈夎璇鋒眰鎵鍗犵殑鐧懼垎姣斻?/p> 璁$畻錛?/p> DHR = (1 - (緙撳啿姹犳暟鎹墿鐞嗚 / 緙撳啿姹犳暟鎹昏緫璇? ) ) * 100% 緇撹 緙撳啿姹犲懡涓巼澶т簬 80% 琚涓烘槸鐞嗘兂鐨勩傚浜?OLTP 緋葷粺鏉ヨ錛岃鍊肩殑鐞嗘兂鎯呭喌鏄敖鍙兘鎺ヨ繎浜?100% 錛堢儲寮曞懡涓巼鏇存槸濡傛錛夈?/p> 瑕佹彁楂樼紦鍐叉睜鐨勫懡涓巼錛屽彲浠ュ鍔犵紦鍐叉睜鐨勫ぇ灝忥紝涔熷彲浠ヨ冭檻鍒嗛厤澶氫釜緙撳啿姹狅紝鍙互涓烘瘡涓粡甯歌闂殑鍏鋒湁鑷繁鐨勮〃絀洪棿鐨勫ぇ鍨嬭〃浣跨敤涓涓紦鍐叉睜錛屼篃鍙互涓轟竴緇勫皬鍨嬭〃浣跨敤涓涓紦鍐叉睜銆?/p>DB2 緙撳啿姹犺皟浼楤ufferpools
1銆佷嬌鐢ㄥ懡浠?db2 get dbm cfg |find "SVCENAME" 鏌ユ壘鍒癟CP/IP 鏈嶅姟鍚?/span>
2銆佸埌緋葷粺閰嶇疆鏂囦歡閲屾壘鍒皊ervice name 瀵瑰簲鐨?port number
windows錛氭煡鐪?c:\windows\system32\drivers\etc\services
aix錛?nbsp; 鏌ョ湅 /etc/services
濡備笅錛?/span>
DB2_DB2 60000/tcp
DB2_DB2_1 60001/tcp
DB2_DB2_2 60002/tcp
DB2_DB2_END 60003/tcp
db2c_DB2 50000/tcp
3銆佷嬌鐢?netstat -an 鍛戒護鏌ユ壘tcp/ip 鏈嶅姟鐨勭鍙?/span>
4銆佷慨鏀圭鍙e彿
鐩存帴淇敼services鏂囦歡涓綋鍓嶆湇鍔″悕瀵瑰簲鐨勭鍙e彿
濡傦細db2c_DB2 50000/tcp
鐒跺悗閲嶅惎鏁版嵁搴撳嵆OK db2stop db2start
5銆佸彟澶栭檮涓婁竴涓叧浜?a target="_blank" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: #6795b5; text-decoration: none; cursor: pointer; font-family: 'Microsoft YaHei', 'SF Pro Display', Roboto, Noto, Arial, 'PingFang SC', sans-serif; word-wrap: break-word;">linux緋葷粺涓嬬殑鏌ユ壘鏂規硶錛堟憳鎶勫笘瀛愶級錛?/span>
In JDBC configurations for WPA, you have to specify the port that DB2 is listening on. I usually look for /etc/services or try one of 50000/50001 and it usually works. In SUSE Linux, both the solutions did not work and there was another process (Multithreaded routing toolkit aka mrt) was listening on port 50000.
So how do we find out the DB2 port in a reliable way? Read on...
Step 1: Set the DB2 environment.
$ . ~db2inst1/sqllib/db2profile
Step 2: Find the service name for DB2 instance. It basically involves running "db2 get dbm cfg" command and finding a line containing SVCENAME.
$ svc=`db2 get dbm cfg | grep SVCENAME | cut -d= -f2 | awk '{print $1}'`
Step 3: Find the service name that you got from Step 2 in /etc/services or %SYSTEMROOT%\system32\drivers\etc\services. That is the port DB2 is listening on. $ grep $svc /etc/services
Hope you find this useful.
鐢╯qoop鍋氭祴璇曪紝鍙戠幇绔彛鍙?0000琚崰鐢ㄤ簡錛屾墍浠ュ氨鏇存敼浜嗕竴涓婦B2鐨勭鍙e彿銆?/span>
絎竴姝ワ紝鐧誨綍DB2鏁版嵁搴撶殑瀹炰緥鐢ㄦ埛錛屾垜榪欓噷鏄痙b2inst1
db2 get dbm cfg|grep SVCENAME
鍙互鐪嬪埌瀵瑰簲鐨凷VCENAME鐨勫悕縐版槸浠涔堛?/span>


榪欓噷瀹規槗鍑虹幇涓涓棶棰樸傛寜鐓х綉涓婃湁浜鴻鐨勶紝浼氬皢SVCENAME鏀逛負绔彛鍙鳳紝閭d釜鏄敊璇殑銆備竴瀹氳灝嗚繖涓悕縐板拰services涓殑鍚嶇О緇熶竴銆?/span>
絎簩姝ワ紝閫鍥炲埌root鐢ㄦ埛錛?/span>
vim /etc/services錛屾壘鍒板搴旂殑SVCENAME鐨勫悕縐版墍瀵瑰簲鐨勭鍙e彿銆?/span>
鎴戣繖閲岀洿鎺ョ紪杈戞垚50001


絎笁姝ワ紝鍏堝叧鏁版嵁搴擄紝鍐嶅紑灝卞彲浠ヤ簡銆?/span>
db2stop
db2start
瀹為檯涓婃病鏈夊鏉傜殑姝ラ錛屽彧鏄ソ澶氫漢鍐欑殑姣旇緝鐨勪貢錛岃繕涓嶅姞瑙i噴璇存槑錛屾墍浠ュ潙浜嗕簺銆?/span>
鍙互閫氳繃db2 get dbm cfg錛屾煡璇㈡暟鎹簱綆$悊鍣ㄩ厤緗弬鏁幫紝灝卞彲浠ユ煡鍒扮鍙e彿鎴栫鍙e悕銆?/p>
紺轟緥錛?/p>
$ db2 get dbm cfg | grep -i svcTCP/IP Service name (SVCENAME) = 50000
50000灝辨槸绔彛鍙蜂簡銆?/p>
濡傛灉鏌ュ埌鐨勬槸绔彛鍚嶏紝鍙互閫氳繃緗戠粶鏈嶅姟閰嶇疆鏂囦歡鏉ユ壘鍒板搴斿叧緋匯?/p>
紺轟緥錛?/p>
$ db2 get dbm cfg | grep -i svc
TCP/IP Service name (SVCENAME) = db2c_DB2
榪欐椂錛屽氨闇瑕佹煡鎵綿b2c_DB2瀵瑰簲鐨勭鍙e彿浜嗐?/p>
$ cat /etc/services | grep db2c_DB2
db2c_DB2 60000/tcp
榪欎釜60000灝辨槸绔彛鍙蜂簡銆?/p>
濡傛灉DB2鏄鍦╳indows鐨剆erver涓婏紝閭d箞灝遍渶瑕佹煡鎵捐繖涓厤緗枃浠朵簡錛孋:\WINDOWS\system32\drivers\etc\services鏍煎紡錛歞b2c_DB2 50000/tcp
濡傛灉涓嬶細Table_A琛ㄥ拰Table_B琛紝瑕佹眰鏌ヨ鍑哄湪Table_A琛ㄤ腑涓嶅湪Table_B琛ㄤ腑鐨勮褰曘?/p>

寰堝澶у絎竴鏃墮棿鐩稿綋鐨勫啓娉曟槸錛?/p>
SELECT * FROM dbo.Table_A AS a WHERE a.ID NOT IN ( SELECT b.ID FROM dbo.Table_B AS b)
鐒惰屾煡璇㈠嚭鏉ュ茍娌℃湁杈懼埌棰勬湡鐨?/p>
ID Name
001 寮犱笁
003 鐜嬩簲
鍘熷洜寰堢畝鍗曪細鐢變簬NULL涓嶈兘榪涜濡備綍鐨?#8220;鎿嶄綔”
–濡傛灉null鍙備笌綆楁湳榪愮畻錛屽垯璇ョ畻鏈〃杈懼紡鐨勫間負null銆傦紙渚嬪錛?錛?錛?錛? 鍔犲噺涔橀櫎錛?/p>
–濡傛灉null鍙備笌姣旇緝榪愮畻錛屽垯緇撴灉鍙涓篺alse銆傦紙渚嬪錛?gt;=,<=,<> 澶т簬錛屽皬浜庯紝涓嶇瓑浜庯級
–濡傛灉null鍙備笌鑱氶泦榪愮畻錛屽垯鑱氶泦鍑芥暟閮界疆涓簄ull銆傞櫎count(*)涔嬪銆?/p>
--濡傛灉鍦╪ot in瀛愭煡璇腑鏈塶ull鍊肩殑鏃跺?鍒欎笉浼氳繑鍥炴暟鎹?nbsp; 錛堟渶綆鍗曠殑瑙i噴璇峰弬鑰冧笅闈㈢殑璇勮璇存槑錛?nbsp;

--姝g‘鍐欐硶 SELECT * FROM dbo.Table_A AS a WHERE a.ID NOT IN ( SELECT b.ID FROM dbo.Table_B AS b WHERE b.ID IS NOT NULL ) --鎺掗櫎NULL鍊煎弬涓庤繍綆楃姣旇緝 --寤鴻淇敼涓哄叧鑱旀煡璇㈡柟娉? --姝g‘鍐欐硶1 SELECT * FROM dbo.Table_A AS a WHERE NOT EXISTS ( SELECT * FROM dbo.Table_B AS b WHERE a.ID = b.ID ) --姝g‘鍐欐硶2 SELECT * FROM dbo.Table_A AS a LEFT OUTER JOIN dbo.Table_B AS b ON a.ID = b.ID WHERE b.ID IS NULL
鍦―B2涓紝null鍜?#8216;’鏄畬鍏ㄤ笉鍚岀殑涓や釜涓滆タ銆?/p>
NULL鏄竴涓笉紜畾鍊煎畠涓嶈兘閫氳繃鍒楀艱繃婊わ紝鍙兘閫氳繃IS NULL 鎴栬匢S NOT NULL鏂瑰紡榪囨護
鑰?#8216;’鍙互鐢╥n錛?錛?lt;>,>,<鏉ユ瘮杈冨垽鏂?br style="-webkit-font-smoothing: antialiased; margin: 0px; padding: 0px; max-width: 100%; word-break: break-all;" />
姝ゅ錛岃嫢涓涓睘鎬х殑鍊間負null錛屽垯select鏄劇ず鏃訛紝浼氫互-浠f浛錛岃?#8216;’鍒欑洿鎺ヤ粈涔堥兘涓嶆樉紺?/p>
select * from t1 where exists ( select null from t2 where y = x ) for x in ( select * from t1 ) loop if ( exists ( select null from t2 where y = x.x ) then OUTPUT THE RECORD end if end loop 鎴戜滑鐨勯」鐩腑浣跨敤鍒頒簡IBM鐨凞B2鏁版嵁搴擄紝緋葷粺寮鍙戣璦鏄疌++錛屾搷浣滄暟鎹簱鏄洿鎺ュ湪C++涓紪鍐橢SQL錛堝祵鍏ュ紡SQL錛夎鍙ャ傚湪浣跨敤涓彂鐜幫紝鍙鏈夋枃浠跺悕鍓?浣嶇浉鍚岋紝灝遍犳垚閮ㄥ垎鏂囦歡涓殑浠g爜澶辨晥銆?
鍘熷洜錛?/strong>
------------------
db2榛樿鎯呭喌涓嬩嬌鐢?.sqC鐨勫悕瀛楃敓鎴?.bnd錛屽張浠?.bnd鐨勬枃浠跺悕閮ㄥ垎鍦ㄦ暟鎹簱涓仛緇戝畾錛屽緩涓涓悓鍚嶇殑package銆傝宒b2鐨刾ackage鐨勫悕瀛楁槸鏈?a >鍏瓧鑺傞暱搴﹂檺鍒?/font>鐨勶紝閫犳垚鍓嶅叓浣嶆枃浠跺悕鐩稿悓鐨凜++浠g爜錛屾諱細鍚庨潰鐨勮鐩栧墠闈㈢殑銆?
鐭ラ亾鍘熷洜灝卞ソ鍔炰簨浜嗐?
瑙e喅錛?/strong>
------------------
鍙栧師濮嬫枃浠跺悕鐨刴d5鎽樿鍓峃浣嶏紝鎷兼垚bnd鏂囦歡鐨勫悕瀛楋紝鍐嶄互姝ゆ枃浠跺幓鐩爣鏁版嵁搴撳仛緇戝畾錛岃繖鏍穚ackage灝變笉浼氬墠鍚庤鐩栦簡銆?
makefile涓疄闄呯殑鍋氭硶錛?/strong>
------------------------%.C : %.sqC
db2 connect to $(dbName) user $(dbUser) using $(dbPassword);\
db2 prep $*.sqC bindfile;\
cp $*.bnd ${shell echo $* |md5sum -|cut -c1-8}_$*.bnd;\
db2 bind ${shell echo $* |md5sum -|cut -c1-8}_$*.bnd;\
db2 connect reset; \
db2 terminate;
銆銆鍦ㄨ繖綃囦笓鏍忔枃绔犱腑錛屾垜灝嗚璁哄浣曞垱寤哄垎鍖鴻〃錛岃В閲婂垎鍖鴻〃鐨勫畾涔夊浣曞喅瀹氬悇涓褰曠殑瀛樺偍浣嶇疆銆?
銆銆鑼冨洿鍒嗗尯琛?/p>
銆銆鏁版嵁鍒嗗尯涔熺О涓鴻寖鍥達紙褰撳墠 DB2 鍙敮鎸佽寖鍥村垎鍖烘柟妗堬級錛屼竴涓暟鎹垎鍖哄寘鍚竴涓瀛愰泦錛岃繖浜涜瀛樺偍鍦ㄤ笌琛ㄤ腑鍏朵粬琛岄泦涓嶅悓鐨勫湴鏂廣備笉鍚岀殑鏁版嵁鍒嗗尯鍙互椹葷暀鍦ㄤ笉鍚岀殑琛ㄧ┖闂翠腑錛屼篃鍙互椹葷暀鍦ㄧ浉鍚岀殑琛ㄧ┖闂翠腑銆侰REATE TABLE 璇彞鐨?PARTITION BY 瀛愬彞涓彁渚涚殑淇℃伅鍐沖畾琛ㄦ暟鎹殑鍒嗗尯鏂瑰紡銆傝繖涓彲閫夊瓙鍙ョ殑璇硶鍙栧喅浜庢槸甯屾湜璁?DB2 鍦ㄦ寚瀹氱殑琛ㄦ暟鎹寖鍥村唴鍧囧寑鍦扮敓鎴愭瘡涓垎鍖鴻寖鍥達紝榪樻槸瑕佹墜宸ユ帶鍒舵瘡涓寖鍥寸殑杈圭晫銆傚浜庣粰瀹氱殑琛ㄦ暟鎹寖鍥磋嚜鍔ㄧ敓鎴愬垎鍖虹殑璇硶鏄細
PARTITION銆BY銆<RANGE>銆
銆([ColumnName]銆<NULLS銆LAST銆|銆NULLS銆FIRST>銆,...)銆
銆(銆
銆STARTING銆<FROM>銆[Start銆|銆MINVALUE銆|銆MAXVALUE]銆|銆
銆銆STARTING銆<FROM>銆([Start銆|銆MINVALUE銆|銆MAXVALUE]銆,...)銆
銆<INCLUSIVE銆|銆EXCLUSIVE>銆
銆ENDING銆<AT>銆[End銆|銆MINVALUE銆|銆MAXVALUE]銆|銆
銆銆ENDING銆<AT>銆([End銆|銆MINVALUE銆|銆MAXVALUE]銆,...)銆
銆<INCLUSIVE銆|銆EXCLUSIVE>銆
銆EVERY銆<(>[Constant]銆<DurationLabel>銆<)>銆
銆,...)銆
銆銆鎵嬪伐鎸囧畾鍒嗗尯鐨勮娉曟槸錛?/p>
PARTITION銆BY銆<RANGE>銆銆
銆銆([ColumnName]銆<NULLS銆LAST銆|銆NULLS銆FIRST>銆,...)銆
銆銆(銆
銆銆<PARTITION銆[PartitionName]>銆
銆STARTING銆<FROM>銆[Start銆|銆MINVALUE銆|銆MAXVALUE]銆|銆
銆銆STARTING銆<FROM>銆([Start銆|銆MINVALUE銆|銆MAXVALUE]銆,...)銆
銆<INCLUSIVE銆|銆EXCLUSIVE>銆
銆ENDING銆<AT>銆[End銆|銆MINVALUE銆|銆MAXVALUE]銆|銆
銆銆ENDING銆<AT>銆([End銆|銆MINVALUE銆|銆MAXVALUE]銆,...)銆
銆<INCLUSIVE銆|銆EXCLUSIVE>銆
銆銆<IN銆[TSName]>銆
銆銆<INDEX銆IN銆[IndexTSName]>銆
銆銆<LONG銆IN銆[LongTSName]>銆
銆銆鍏朵腑錛?/p>
銆銆ColumnName錛氱敤鍚嶇О鎸囧畾涓涓垨澶氫釜鍒楋紙鏈澶?16 鍒楋級錛岃繖浜涘垪鐨勫肩敤鏉ュ喅瀹氭暟鎹搴旇瀛樺偍鍦ㄥ摢涓暟鎹垎鍖轟腑銆傦紙鎸囧畾鐨勫垪緇勬垚琛ㄧ殑鍒嗗尯閿?— 鍙傝杈規爮 “閫夋嫨琛ㄥ垎鍖洪敭”銆傦級鏁版嵁綾誨瀷涓?LONG VARCHAR銆丩ONG VARGRAPHIC銆丅LOB銆丆LOB銆丏BCLOB銆乆ML銆佸熀浜庤繖浜涙暟鎹被鍨嬬殑 distinct 綾誨瀷鍜岀粨鏋勫寲鏁版嵁綾誨瀷鐨勫垪閮戒笉鑳戒綔涓烘暟鎹垎鍖洪敭鐨勭粍鎴愰儴鍒嗐?/p>
銆銆PartitionName錛氭寚瀹氬垎閰嶇粰瑕佸垱寤虹殑鏁版嵁鍒嗗尯鐨勬儫涓鍚嶇О銆?/p>
銆銆Start錛氭寚瀹氭瘡涓暟鎹垎鍖虹殑鑼冨洿涓嬮檺銆?/p>
銆銆End錛氭寚瀹氭瘡涓暟鎹垎鍖虹殑鑼冨洿涓婇檺銆?/p>
銆銆Constant錛氬湪浣跨敤璇硶鐨勮嚜鍔ㄧ敓鎴愬艦寮忔椂錛屾寚瀹氭瘡涓暟鎹垎鍖鴻寖鍥寸殑瀹藉害銆備粠 STARTING FROM 鍊煎紑濮嬪垱寤烘暟鎹垎鍖猴紝鏁版嵁鍒嗗尯鐨勮寖鍥村唴鍖呭惈鎸囧畾鏁伴噺鐨勫箋傛敮鎸佽繖縐嶈娉曠殑鏉′歡鏄垎鍖洪敭鐢卞崟涓鍒楃粍鎴愶紝榪欎竴鍒楃殑鏁版嵁綾誨瀷鏄暟瀛椼佹棩鏈熴佹椂闂存垨鏃墮棿鎴熾?/p>
銆銆DurationLabel錛氬鏋滃垎鍖洪敭鍒楃殑鏁版嵁綾誨瀷鏄棩鏈熴佹椂闂存垨鏃墮棿鎴籌紝榪欎釜鍙傛暟鎸囧畾涓?Constant 鍊肩浉鍏崇殑鏃墮棿鍗曚綅銆傝繖涓弬鏁扮殑鏈夋晥鍊兼槸錛歒EAR銆乊EARS銆丮ONTH銆丮ONTHS銆丏AY銆丏AYS銆丠OUR銆丠OURS銆丮INUTE銆丮INUTES銆丼ECOND銆丼ECONDS銆丮ICROSECOND 鍜?MICROSECONDS銆?/p>
銆銆TSName錛氭寚瀹氬瓨鍌ㄦ瘡涓暟鎹垎鍖虹殑琛ㄧ┖闂淬?/p>
銆銆IndexTSName錛氭寚瀹氬瓨鍌ㄦ瘡涓暟鎹垎鍖虹殑鍒嗗尯绱㈠紩鐨勮〃絀洪棿銆?/p>
銆銆LongTSName錛氭寚瀹氬瓨鍌ㄩ暱鍒楃殑鍊肩殑琛ㄧ┖闂淬?/p>
銆銆娉ㄦ剰錛氬皷鎷彿 (< >) 涓殑鍙傛暟鏄彲閫夌殑錛涙柟鎷彿 ([ ]) 涓殑鍙傛暟鎴栭夐」鏄繀闇鐨勶紝蹇呴』鎻愪緵瀹冧滑錛涢楀彿鍚庨潰璺熺潃鐪佺暐鍙?(...) 琛ㄧず鍓嶉潰鐨勫弬鏁板彲浠ラ噸澶嶅嚭鐜板嬈°?/p>
銆銆鍥犳錛屽鏋滃笇鏈涘垱寤轟竴涓悕涓?SALES 鐨勫垎鍖鴻〃錛屾妸姣忎釜瀛e害鐨勬暟鎹瓨鍌ㄥ湪鍗曠嫭鐨勫垎鍖轟腑錛屾瘡涓垎鍖洪┗鐣欏湪涓嶅悓鐨勮〃絀洪棿涓紝閭d箞鍙互鎵ц浠ヤ笅 CREATE TABLE 璇彞錛?/p>
CREATE銆TABLE銆sales銆
銆(sales_date銆銆DATE,銆
銆sales_amt銆銆銆NUMERIC(5,2))銆
銆IN銆tbsp0,銆tbsp1,銆tbsp2,銆tbsp3銆
銆PARTITION銆BY銆RANGE銆(sales_date)銆
銆銆(STARTING銆'1/1/2010'銆ENDING銆'12/31/2010'銆
銆銆EVERY銆3銆MONTHS)銆
銆銆鍥?1 璇存槑鐢熸垚鐨勮〃鏄粈涔堟牱鐨勩?/p>
鍥?1. 涓涓畝鍗曞垎鍖鴻〃涓瓨鍌ㄧ殑鏁版嵁
銆銆鍙︿竴鏂歸潰錛屽鏋滃笇鏈涘垱寤轟竴涓悕涓?INVENTORY 鐨勫垎鍖鴻〃錛屾妸鐗╁搧緙栧彿鍦?1 鍒?100 涔嬮棿鐨勮瀛樺偍鍦ㄤ竴涓〃絀洪棿涓殑涓涓垎鍖轟腑錛屾妸緙栧彿鍦?101 鍒?200 涔嬮棿鐨勮瀛樺偍鍦ㄥ彟涓涓〃絀洪棿涓殑鍙︿竴涓垎鍖轟腑錛屼互姝ょ被鎺紝閭d箞鍙互鎵ц涓嬮潰鐨?SQL 璇彞錛?/p>
CREATE銆TABLE銆inventory銆
銆銆(item_no銆INT,銆
銆銆desc銆VARCHAR(20))銆
PARTITION銆BY銆(item_no銆NULLS銆FIRST)銆
(PARTITION銆PRODUCE銆STARTING銆MINVALUE銆ENDING銆100銆IN銆tbsp0,銆
PARTITION銆DAIRY銆銆STARTING銆銆銆銆101銆ENDING銆200銆IN銆tbsp1,銆
PARTITION銆BAKERY銆銆STARTING銆銆銆銆201銆ENDING銆300銆IN銆tbsp2,銆
PARTITION銆MEAT銆銆銆STARTING銆銆銆銆301銆ENDING銆400銆IN銆tbsp3)銆
銆銆閫夋嫨琛ㄥ垎鍖洪敭
銆銆閫夋嫨鏈夋晥鐨勮〃鍒嗗尯閿垪瀵逛簬鍙戞尌琛ㄥ垎鍖虹殑浼樺娍闈炲父閲嶈銆傛渶鏈夋晥鐨勮〃鍒嗗尯閿垪鏄湁鍒╀簬鍒嗗尯娑堥櫎鐨勫垪銆備緥濡傦紝濡傛灉閫氬父鎸夋棩鏈熸煡璇㈣〃涓殑璁板綍錛岄偅涔堝簲璇ョ敤鏃ユ湡鎴栨椂闂村垪榪涜琛ㄥ垎鍖恒?/p>
銆銆鍚屾牱錛屽鏋滃笇鏈涢殢鐫鏃墮棿鐨勬帹縐繪妸琛ㄦ暟鎹殑涓閮ㄥ垎鍒犻櫎鎴栧瓨妗o紝搴旇鏍規嵁鏈熸湜鐨勮褰曞瓨妗f柟寮忚繘琛岃〃鍒嗗尯銆備緥濡傦紝濡傛灉甯屾湜鎶婁笁騫村墠鐨勬墍鏈夋暟鎹兘瀛樻。錛屽簲璇ユ寜鍛ㄣ佹湀鎴栧搴﹁繘琛岃〃鍒嗗尯錛岃繖鏍峰氨鍙互鍒嗗埆鍦ㄦ瘡鍛ㄣ佹瘡鏈堟垨姣忓搴︽湯鍒犻櫎涓涓佸垎鍖恒?/p>
銆銆瀵逛簬榪欎釜紺轟緥錛孖TEM_NO 鍊煎湪 1 鍒?100 涔嬮棿鐨勮灝嗗瓨鍌ㄥ湪鍚嶄負 PRODUCE 鐨勫垎鍖轟腑錛堣繖涓垎鍖虹殑鏁版嵁鍐欏埌琛ㄧ┖闂?TBSP0 涓級錛孖TEM_NO 鍊煎湪 101 鍒?200 涔嬮棿鐨勮灝嗗瓨鍌ㄥ湪鍚嶄負 DAIRY 鐨勫垎鍖轟腑錛堣繖涓垎鍖虹殑鏁版嵁鍐欏埌琛ㄧ┖闂?TBSP1 涓級錛屼緷嬈$被鎺紱ITEM_NO 鍊間負 NULL 鐨勮灝嗗瓨鍌ㄥ湪 PRODUCE 鍒嗗尯涓?/p>
銆銆涓瀹氳娉ㄦ剰錛屽綋鎸囧畾 NULLS FIRST 閫夐」鏃訛紝絎竴涓垎鍖哄繀欏諱粠 MINVALUE 寮濮嬨傦紙鍚屾牱錛屽鏋滀嬌鐢?NULLS LAST 閫夐」錛屾渶鍚庝竴涓垎鍖哄繀欏葷粨鏉熶簬 MAXVALUE銆傦級鍚﹀垯錛屽湪鎻掑叆鍒嗗尯閿垪涓?NULL 鍊肩殑璁板綍鏃訛紝浼氫駭鐢?“data out of bounds” 閿欒銆傚彟澶栵紝姣忎釜鍒嗗尯鐨勬暟鎹佺儲寮曞拰闀垮垪鏁版嵁鍙互鏀懼湪涓嶅悓鐨勮〃絀洪棿涓傚鏋滀笉涓虹儲寮曟垨闀垮垪鎸囧畾琛ㄧ┖闂達紝鍒嗗尯绱㈠紩鍜岄暱鍒楁暟鎹細瀛樺偍鍦ㄤ笌鏁版嵁鐩稿悓鐨勮〃絀洪棿涓?/p>
銆銆鍦ㄩ粯璁ゆ儏鍐典笅錛岃寖鍥村寘鍚竟鐣屾湰韜傝鎯抽槻姝㈠湪鏌愪竴鍒嗗尯涓瓨鍌ㄧ壒瀹氱殑璁板綍錛屽彲浠ョ敤 EXCLUSIVE 閫夐」鍒涘緩鑼冨洿銆備緥濡傦細
CREATE銆TABLE銆sales銆
銆(sales_date銆DATE,銆
銆sales_amt銆NUMERIC(5,2))銆
IN銆tbsp0,銆tbsp1,銆tbsp2,銆tbsp3銆
PARTITION銆BY銆RANGE銆(sales_date)銆
(STARTING銆'1/1/2010'銆ENDING銆'3/31/2010'銆EXCLUSIVE,銆銆
STARTING銆'3/31/2010'銆ENDING銆'6/30/2010'銆EXCLUSIVE,銆銆
STARTING銆'6/30/2010'銆ENDING銆'9/30/2010'銆EXCLUSIVE,銆銆
STARTING銆'9/30/2010'銆ENDING銆'12/31/2010')銆
銆銆鍦ㄨ繖涓ず渚嬩腑錛岄攢鍞棩鏈熶負 3/31/2010 鐨勮褰曚笉浼氬瓨鍌ㄥ湪琛ㄧ┖闂?TBSP0 涓紝鑰屾槸瀛樺偍鍦ㄨ〃絀洪棿 TBSP1 涓?/p>
銆銆褰撳湪鍒嗗尯琛ㄤ腑鎻掑叆琛屾椂錛屼細鏍規嵁閿煎強鍏舵墍澶勭殑鑼冨洿鑷姩鍦版妸瀹冩斁鍒伴傚綋鐨勬暟鎹垎鍖轟腑銆傚鏋滈敭鍊間笉澶勪簬琛ㄧ殑浠諱綍鑼冨洿鍐咃紝鎻掑叆鎿嶄綔灝變細澶辮觸騫朵駭鐢熶竴涓敊璇?/p>
銆銆杞繪澗鍦扮Щ鍏ュ拰縐誨嚭鏁版嵁
銆銆浣跨敤鍒嗗尯琛ㄧ殑鍙︿竴涓紭鐐規槸錛屽彲浠ヨ交鏉懼湴鍦ㄨ〃涓坊鍔犳柊鏁版嵁錛堜綔涓烘柊鐨勬暟鎹垎鍖猴級錛屽悓鏃跺彲浠ヨ交鏉懼湴鍒犻櫎騫跺瓨妗h佹暟鎹傚湪涓嬩竴綃囦笓鏍忔枃绔犱腑錛屾垜灝嗚瑙f坊鍔狅紙縐誨叆錛夊拰鍒犻櫎錛堢Щ鍑猴級鏁版嵁鍒嗗尯鐨勮繃紼嬨傝繕瑕佽璁?DB2 9.7 涓殑鏀硅繘濡備綍澶уぇ鍔犲揩縐誨叆鍜岀Щ鍑烘暟鎹垎鍖虹殑閫熷害錛屽噺灝戣繖浜涙搷浣滀駭鐢熺殑騫叉壈銆?
d:/>db2 ? sql0911n
SQL0911N鍥犱負姝婚攣鎴栬秴鏃訛紝鎵浠ュ綋鍓嶄簨鍔″凡鍥炴粴銆傚師鍥犵爜涓?br /> "<鍘熷洜鐮?gt;"銆?br />
瑙i噴:
褰撳墠宸ヤ綔鍗曞厓娑夊強鍒版湭瑙e喅鐨勫浣跨敤瀵硅薄鐨勪簤鐢紝鍥犳涓嶅緱涓嶅洖婊氥?br />
鍘熷洜鐮佸涓嬶細
2 鐢變簬姝婚攣鑰屽鑷翠簨鍔″凡鍥炴粴銆?br />
68 鐢變簬閿佸畾瓚呮椂鑰屽鑷翠簨鍔″凡鍥炴粴銆?br />
72 鍥犱負瀛樺湪涓庝簨鍔′腑鎵娑夊強鐨?nbsp;DB2 Data Links Manager
鏈夊叧鐨勯敊璇紝鎵浠ヤ簨鍔″凡鍥炴粴銆?br />
娉ㄩ噴: 蹇呴』鍐嶆杈撳叆涓庡伐浣滃崟鍏冪浉鍏崇殑鏇存敼銆?br />
搴旂敤紼嬪簭宸插洖婊氳嚦涓婁竴嬈?nbsp;COMMIT銆?br />
鐢ㄦ埛鍝嶅簲:
涓轟簡甯姪閬垮厤姝婚攣鎴栭攣瀹氳秴鏃訛紝瀵歸暱鏃墮棿榪愯鐨勫簲鐢ㄧ▼搴忔垨鏈夊彲鑳介亣鍒版閿?br />鐨勫簲鐢ㄧ▼搴忛綣佸彂鍑?nbsp;COMMIT 鎿嶄綔錛堝鏋滄湁鍙兘鐨勮瘽錛夈?br />
鑱斿悎緋葷粺鐢ㄦ埛錛氭閿佸彲鑳藉彂鐢熷湪鑱斿悎鏈嶅姟鍣ㄦ垨鏁版嵁婧愪笂銆傛病鏈夋嫻嬭法瓚婃暟鎹?br />婧愬茍娼滃湪鍦拌法瓚婅仈鍚堢郴緇熺殑姝婚攣鐨勬満鍒躲傛湁鍙兘鏍囪瘑浣胯姹傚け璐ョ殑鏁版嵁婧愶紙
鍙傞槄 Problem Determination Guide 浠ョ‘瀹氬摢涓涓暟鎹簮浣?nbsp;SQL
璇彞鐨勫鐞嗗け璐ワ級銆?br />
褰撳鐞?nbsp;SQL 璇彞鐨勬煇浜涚粍鍚堟椂錛岄氬父浼氬彂鐢熸閿佹垨鑰呴鏈熶細鍙戠敓姝婚攣銆傚緩璁?br />鎮ㄨ璁″簲鐢ㄧ▼搴忔潵灝藉彲鑳介伩鍏嶆閿併?br />
sqlcode : -911
sqlstate : 40001
d:/>
浠婂ぉ鐪嬩簡涓綃囨枃绔狅紝瑙夊緱涓嶇鎬庝箞寮鴻皟sortheap鐨勯噸瑕佹ч兘涓嶄負榪囥傜悊鐢辨垜鍚庨潰鑲畾浼氬啓璇︾粏鐨勶紝榪欓噷鍐欒褰曚笅錛屽崰涓綅緗細
----2007.07.10.00銆?3錛堟病鎯沖埌鏄?0鍙瘋繕浠ヤ負9鍙峰憿 錛?鍙峰垰榪?img alt="" src="http://acme1921209.iteye.com/javascripts/fckeditor/editor/images/smiley/msn/sad_smile.gif" />錛?/p>
========================
鎰熻瀛︾殑涓嶆槸寰堝ソ錛屾病鏈夎揪鍒扮洰鏍囷紝浣嗚繕鏄妸榪?澶╁鐨勫啓涓婂惂 銆?/p>
1.sortheap鍦ㄦ暟鎹簱閰嶇疆璇存槑涓婃槸榪欐牱鐨勶細瀹氫箟瑕佺敤浜庝笓鐢ㄦ帓搴忕殑涓撶敤鍐呭瓨欏電殑鏈澶ф暟鐩紝鎴栬呰鐢ㄤ簬鍏變韓鎺掑簭鐨勫叡浜唴瀛橀〉鐨勬渶澶ф暟鐩傜幇鍦ㄨ繖涓」鐩茍娌℃湁鍚姩鍒嗗尯騫惰鎬э紝鎵浠ユ鍙傛暟鍙槸琛ㄧず瑕佺敤浜庝笓鐢ㄦ帓搴忕殑涓撶敤鍐呭瓨欏電殑鏈澶ф暟鐩備笉鐭ラ亾鏄垜娌$悊瑙eソ錛岃繕鏄痙b2娌℃湁璇村ソ錛屽叾瀹炶繖涓弬鏁拌繕鏈変釜寰堥噸瑕佺殑浣滅敤錛氭暟鎹簱鍦ㄦ墽琛屾暎鍒楄繛鎺ql鐨勬椂鍊欎篃鐢ㄥ埌姝ゅ唴瀛樺尯鍩熴俤b2 瀵?涓〃榪涜榪炴帴鐨勬椂鍊欙紝鍙湁3縐嶇被鍨嬶細宓屽錛屽悎騫訛紝鏁e垪銆傚叾涓暎鍒楄繛鎺ョ敤鐨勬渶澶氾紙鎴戝湪鎵ц澶嶆潅sql鐨勬椂鍊欐槸榪欐牱鐨勶紝綆鍗曠殑娌℃湁嫻嬭瘯榪囧ぇ瀹跺彲浠ユ祴璇曚笅錛夈傝繘琛屾暎鍒楄繛鎺ョ殑鏃跺欙紝鏁版嵁搴撲細鎶婂叾涓竴涓〃鐨勫唴瀹瑰鍒跺埌sortheap瀵瑰簲鐨勫唴瀛樹腑錛屽鏋渟ortheap瀵瑰簲鐨勫唴瀛樹笉澶熷ぇ錛屽氨浼氬惂浣欎笅鐨勬暟鎹簱澶嶅埗鍒頒復鏃惰〃絀洪棿涓傜劧鍚庤繘琛岃繛鎺ユ瘮杈冦傚彲浠ユ兂鎯蟲搷浣滃唴瀛樺拰鎿嶄綔紜洏鐨勫樊鍒惂錛屾墍浠ユ垜浠簲灝介噺澶х殑璁劇疆sortheap錛屼嬌浠栦笉婧㈠嚭鍒扮‖鐩樹腑錛屾垨鑰呭緢灝戞孩鍑恒傦紙鍏充簬涓婇潰3涓祵濂楋紝鍚堝茍錛屾暎鍒楄繛鎺ョ被鍨嬶紝鍙互鐪嬩笅闈㈢殑闄勪歡錛岄檮浠朵腑鏈夊緢璇︾粏鐨勮鏄庯級
2. 鏌ョ湅鏄惁婧㈠嚭鐨勬柟娉曪細
澶у鎵ц涓嬮潰鐨勫懡浠わ細 db2 gen snapshot for db on 鏁版嵁搴撳悕 錛堣繖涓懡浠や笉闇瑕佹墦寮db2鐨勫揩鐓у紑鍏籌紝db2鏈変簺榛樿鐨勫揩鐓т俊鎭級銆傚湪杈撳嚭鐨勪俊鎭腑鏌ユ壘涓嬮潰鐨勪俊鎭細
宸插垎閰嶇殑涓撶敤鎺掑簭鍫嗘繪暟 = 0
宸插垎閰嶇殑鍏變韓鎺掑簭鍫嗘繪暟 = 0
鍏變韓鎺掑簭鍫嗛珮姘翠綅鏍囪 = 0
鎬昏鎺掑簭 = 34600
鎬昏鎺掑簭鏃墮棿錛堟縐掞級 = 35491
鎺掑簭婧㈠嚭 = 2384
媧誨姩鎺掑簭鏁?nbsp; = 0
鍜?/p>
鏁e垪榪炴帴鏁?nbsp; = 38808
鏁e垪寰幆鏁?nbsp; = 0
鏁e垪榪炴帴婧㈠嚭鏁?nbsp; = 534
灝忔暎鍒楄繛鎺ユ孩鍑烘暟 = 1
鎺掑簭婧㈠嚭 /鎬昏鎺掑簭 鍙互寰楀埌婧㈠嚭姣斾緥 錛?font size="+0">濡傛灉婧㈠嚭姣斾緥澶т簬 3 涓櫨鍒嗙偣錛岄偅涔堝湪搴旂敤紼嬪簭 SQL 涓細鍑虹幇涓ラ噸鐨勬垨鎰忓鐨勬帓搴忛棶棰樸傚洜涓烘鏄孩鍑虹殑瀛樺湪琛ㄦ槑鍙戠敓浜嗗ぇ鐨勬帓搴忥紝鎵浠ョ悊鎯崇殑鎯呭喌鏄彂鐜版病鏈夋帓搴忔孩鍑烘垨鑷沖皯鍏剁櫨鍒嗘瘮灝忎簬涓涓櫨鍒嗙偣銆?br />濡傛灉鍑虹幇榪囧鐨勬帓搴忔孩鍑猴紝閭d箞“搴旀?#8221;瑙e喅鏂規鏄鍔燬ORTHEAP鐨勫ぇ灝忋傜劧鑰岋紝榪欐牱鍋氬彧鏄帺鐩栦簡鐪熷疄鐨勬ц兘闂銆傜浉鍙嶏紝鎮ㄥ簲璇ョ‘瀹氬紩璧鋒帓搴忕殑 SQL 騫舵洿鏀硅 SQL銆佺儲寮曟垨緹ら泦鏉ラ伩鍏嶆垨鍑忓皯鎺掑簭寮閿銆傚鏋滄孩鍑烘瘮渚嬪ぇ浜?5 錛堜綔涓轟竴縐嶇粡楠屼箣璋堬級錛岄偅涔堟瘡涓簨鍔$殑鎺掑簭鏁板彲鑳藉緢澶с傝櫧鐒舵煇浜涘簲鐢ㄧ▼搴忎簨鍔℃墽琛岃澶氬皬鐨勭粍鍚堟帓搴忥紙瀹冧滑涓嶄細婧㈠嚭騫朵笖鎵ц鏃墮棿寰堢煭錛夛紝浣嗘槸瀹冩秷鑰椾簡榪囧鐨?CPU銆傚綋SortsPerTX寰堝ぇ鏃訛紝鎸夋垜鐨勭粡楠岋紝榪欎簺鏈哄櫒閫氬父浼氬彈鍒?CPU 鐨勯檺鍒躲傜‘瀹氬紩璧鋒帓搴忕殑 SQL 騫舵敼榪涘瓨鍙栨柟妗堬紙閫氳繃绱㈠紩銆佺兢闆嗘垨鏇存敼 SQL錛夊鎻愰珮浜嬪姟鍚炲悙鐜囨槸鏋佷負閲嶈鐨勩?/font>錛?/p>
鏁e垪榪炴帴鏁?nbsp; 灝辨槸鍦ㄦ墽琛宻ql鐨勬椂鍊欒繘琛屾暎鍒楄繛鎺ョ殑鏁扮洰銆傝繖閲屽彧璇翠笅鏁e垪寰幆鏁?nbsp;鐨勬剰涔夛紝鍏朵粬鍙傛暟鐨勬剰涔夊湪涓嬮潰鐨勯檮浠朵腑閮芥湁寰堣緇嗙殑璇存槑錛?nbsp; 鎴戝湪嫻嬭瘯鐨勬椂鍊欙紝鎶妔ortheap璁劇疆涓?6涓〉錛岀劧鍚庢墽琛屽鏉傜殑sql錛屾暎鍒楀驚鐜暟鏈夊鹼紝鑰屼笖寰堥珮銆備竴鑸湅鍒版暎鍒楀驚鐜暟鏈夊煎氨瑕佹敞鎰忥紝浠栬鏄庝綘鐨剆ortheap鎴栬?font size="+0">SHEAPTHRES錛堝疄渚嬬駭鍙傛暟錛夊お浣庝簡銆傜幇鍦ㄧ殑嫻嬭瘯鎯呭喌灝辮鏄巗ortheap澶綆浜嗐傚彟澶栦竴縐嶆儏鍐?font size="+0">SHEAPTHRES澶綆鐨勫師鍥狅細 SHEAPTHRES宸茬粡鍒嗛厤緇欏墠闈㈢殑浠g悊榪涚▼浜嗭紝鍐嶆湁浠g悊榪涚▼鐢寵sortheap鐨勬椂鍊欙紝SHEAPTHRES宸茬粡杈懼埌涓婇檺浜嗭紝榪欎釜鏃跺檇b2灝變細緇欑敵璇穝ortheap鐨勮繘紼嬪緢灝忕殑鍊鹼紝姝ゆ椂浠g悊榪涚▼榪涜鏁e垪榪炴帴鐨勬椂鍊欏氨闇瑕佹妸寰堝鏁版嵁鏀懼埌紜洏涓婏紝榪欎釜鏃跺欏氨浼氬鑷存暎鍒楀驚鐜暟鍊煎緢楂橈紝榪欎釜鏃跺欏ぇ瀹跺彲浠ュ鍔?SHEAPTHRES榪涜瑙傚療銆?/font>
3.鏌ョ湅鎺掑簭婧㈠嚭鐨剆ql鏂規硶錛?棣栧厛鎵撳紑蹇収鐩戣鍣細 db2 update monitor switches using sort on statements on ;
鐒跺悗榪囨鏃墮棿錛?鍒嗛挓灝卞彲浠ヤ簡錛夋墽琛?get snapshot for all on 鏁版嵁搴撳悕錛?/p>
鍦ㄨ緭鍑虹殑淇℃伅涓煡鎵撅細璇彞鎺掑簭婧㈠嚭 = 1 錛岀湅瀵瑰簲鐨剆ql灝辯煡閬撲簡錛屽sql鐨勬墽琛岃鍒掑垎鏋愪笅灝辨槑鐧戒簡銆?/font>
璁板緱鍦ㄦ祴璇曞畬瑕佸叧闂?蹇収寮鍏籌細 db2 update monitor switches using sort off statements off;
鏈枃鐨勭洰鐨勫氨鏄氳繃璇︾粏鐨勫疄渚嬫潵闃愯堪濡備綍鍦―B2 UDB 涓洃鎺ф閿佺殑鍙戠敓銆傚湪DB2 UDB涓湁涓ょ綾誨瀷鐨勭洃鎺у櫒錛氬揩鐓х洃鎺у櫒鍜屼簨浠剁洃鎺у櫒銆傚揩鐓ч【鍚嶆濅箟灝辨槸鏁版嵁搴撹繛緇姸鎬佷笅鐨勪竴涓垏闈紝閫氳繃蹇収鐩戞帶鍣紝浣犲彲浠ュ緢鏂逛究鍦版煡鐪嬪綋鍓嶈繛鎺ョ殑搴旂敤紼嬪簭錛屽綋鍓嶇瓑寰呯殑閿侊紝褰撳墠鐨勬閿侊紝浠ュ強姝e湪鎵ц鐨凷QL璇彞錛屽悓鏃朵綘鍙互鏌ョ湅緙撳啿鍖猴紝琛ㄥ拰琛ㄧ┖闂寸殑鐢ㄦ硶銆傚鏋滀繚瀛樺巻鍙叉暟鎹紝騫朵笖鑳藉鍋氬嚭姣旇緝錛屽浜庡垎鏋愭暟鎹簱鐨勫茍鍙戞ц兘鏈夊緢澶х殑甯姪銆?/p>
浣嗘槸鎴戜滑騫朵笉鑳介嫻嬩粈涔堟椂鍊欏彂鐢熸閿侊紝鎵浠ュ鏋滄湁涓涓悗鍙扮▼搴忚兘澶熶竴鐩寸洃鎺ф暟鎹簱鐨勬椿鍔紝璁板綍涓嬫墍鏈夌殑姝婚攣浜嬩歡錛岃繖瀵逛簬鏁版嵁搴撶鐞嗗憳鏉ヨ鏄潪甯擱噸瑕佺殑銆侱B2 UDB鎻愪緵浜嗕簨浠剁洃鎺у櫒銆傞氳繃涓嶉仐婕忓湴鑾峰緱涓孌墊椂闂村唴鎵鏈夌殑鏁版嵁搴撲簨浠訛紙鍦ㄦ湰鏂囦腑鍙叧蹇冨叾涓殑姝婚攣浜嬩歡錛夛紝浜嬩歡鐩戞帶鍣ㄦ彁渚涗簡涓縐嶅彲浠ュ垎鏋愬巻鍙叉暟鎹紙鏈枃鐨勯噸鐐癸級錛岄嫻嬪皢鏉ヨ秼鍔跨殑鍙兘銆侱B2 UDB鍚屾椂鎻愪緵浜咲B2 Performance Expert (DB2/PE) 鎴栬呯被浼肩殑紼嬪簭鐢ㄦ潵鐢熸垚鍒嗘瀽鎶ヨ〃錛屼笉榪囪繖宸茬粡瓚呭嚭浜嗘湰鏂囩殑鑼冪暣銆?/p>
閿佹槸鎺у埗搴旂敤紼嬪簭騫跺彂鐨勬暟鎹簱杞歡鏈哄埗錛岄攣鐢ㄦ潵闃叉浠ヤ笅鎯呭喌鐨勫彂鐢燂細
1錛?涓㈠け浠ュ墠鏇存柊
2錛?涓嶅彲閲嶅璇誨彇
3錛?璁塊棶鏈彁浜ゆ暟鎹?/p>
閿佺殑妯″紡鍖呮嫭鍏變韓閿佸拰鎺掍粬閿侊紝鍏變韓閿佸厑璁稿叾浠栫▼搴忚鍙栧凡緇忚鍏朵粬鍏變韓閿佸崰鐢ㄧ殑璧勬簮錛屾墍浠ヤ篃鍙閿侊紝鎺掍粬閿佹剰鍛崇潃鍦ㄩ噴鏀捐祫婧愪互鍓嶅叾浠栫殑搴旂敤紼嬪簭鏃犳硶璁塊棶鍚屼竴璧勬簮錛屾墍浠ヤ篃鍙啓閿併傛澶栵紝DB2 UDB 榪樻彁渚涗簡涓嶅悓鐨勯攣綰у埆錛屼笉鍚岀殑搴旂敤紼嬪簭鍙兘浼氳姹傝闂笉鍚岃寖鍥寸殑鏁版嵁錛岄攣綰у埆鏈夊埄浜庡厖鍒嗗埄鐢ㄧ郴緇熻祫婧愶紝鎻愰珮緋葷粺鎬ц兘銆傝嫢涓涓簲鐢ㄧ▼搴忚姹備竴涓攣錛岃岃閿佽鍙﹀涓涓簲鐢ㄧ▼搴忔墍浣跨敤涓斾笉鑳藉叡浜紝DB2 UDB 灝變細鎸傝搗鍓嶄竴涓簲鐢ㄧ▼搴忋傞攣鍗囩駭灝辨槸褰揕OCKLIST (LOCKLIST浠h〃閿佽兘澶熷崰鐢ㄧ殑鍐呭瓨絀洪棿) 鑰楀敖鎴栬呬竴涓簲鐢ㄧ▼搴忔墍鎷ユ湁鐨勯攣澶т簬MAXLOCKS*LOCKLIST鐨勬椂鍊欙紙MAXLOCKS 浠h〃搴旂敤紼嬪簭鎵鎷ユ湁鐨勯攣鍗犳墍絀洪棿鐨勭櫨鍒嗘瘮錛夛紝DB2 UDB 灝辮瘯鍥炬妸鍑犱釜琛岀駭鍒殑閿佸悎騫朵負涓涓〃綰у埆鐨勯攣錛屼粠鑰岄噴鏀鵑攣絀洪棿銆傝櫧鐒墮攣鍗囩駭鏈韓騫朵笉鑰楄垂澶氬皯鏃墮棿錛屼絾鏄攣浣忔暣涓〃閫氬父浼氬ぇ澶у湴闄嶄綆騫跺彂鎬ц兘銆?/p>
褰撳簲鐢ㄧ▼搴忓浜庢寕璧風姸鎬佽秴榪囦簡涓孌佃瀹氱殑鏃墮棿鍚庯紝DB2 UDB灝變細鑷姩涓榪欎釜搴旂敤紼嬪簭錛屽悓鏃朵細鍚慡QLCA鍙戦佹弿榪版х殑閿欒淇℃伅銆傚綋涓や釜鎴栬呮洿澶氱殑搴旂敤紼嬪簭閮芥寔鏈夊彟澶栦竴涓簲鐢ㄧ▼搴忔墍闇璧勬簮涓婄殑閿侊紝娌℃湁榪欎簺璧勬簮錛岄偅浜涘簲鐢ㄧ▼搴忛兘鏃犳硶緇х畫瀹屾垚鍏跺伐浣滅殑鏃跺欙紝灝變細鍙戠敓姝婚攣銆?/p>
鍦―LCHKTIME瓚呮椂涔嬪悗錛孌B2 UDB浼氫腑姝㈠彂鐢熸閿佺殑鏌愪釜搴旂敤紼嬪簭錛堥氬父涓烘墍鍋氬伐浣滄渶灝戠殑閭d釜搴旂敤紼嬪簭錛夛紝榪欎細閲婃斁榪欎釜搴旂敤紼嬪簭鎵鎸佹湁鐨勬墍鏈夌殑閿侊紝騫跺厑璁稿埆鐨勫簲鐢ㄧ▼搴忕戶緇伐浣滐紝DB2 UDB 灝嗗悜琚粓姝㈢殑搴旂敤紼嬪簭鐨凷QLCA鍙戦佹弿榪版х殑閿欒淇℃伅銆侺OCKTIMEOUT 鎸囧畾涓涓簲鐢ㄧ▼搴忚鍏佽鐨勯攣絳夊緟鐨勬椂闂達紝榪欏皢閬垮厤鍏ㄥ眬鐨勬閿佷粠鑰屽鑷存暣涓簲鐢ㄥ穿婧冦傚鏋淟OCKTIMEOUT 鐨勫間負-1錛屽簲鐢ㄧ▼搴忎細絳夊緟鐩村埌璇ラ攣琚噴鏀炬垨鑰呭彂鐢熶竴涓閿併?/p>
浜嬩歡鐩戞帶鍣ㄧ敤鏉ユ敹闆嗗綋涓涓暟鎹簱浜嬩歡鍙戠敓鏃舵墍鍏寵仈鐨勫簲鐢ㄧ▼搴忕殑淇℃伅銆傝繖閲岀殑浜嬩歡鎸囷紝榪炴帴錛屾閿侊紝澹版槑鍜屼簨鍔°備綘鍙互瀹氫箟浣犳兂鐩戞帶鐨勪簨浠剁被鍨嬬殑鐩戞帶鍣ㄣ傛瘮濡傝錛屼竴涓閿佺洃鎺у櫒灝辨槸鐢ㄦ潵鐩戞帶姝婚攣鐨勫彂鐢熴?/p>
鍦―B2 UDB 涓瓨鍦ㄤ袱縐嶅拰姝婚攣鏈夊叧鐨勪簨浠剁被鍨嬶細
涓轟簡璇︾粏璇存槑浜嬩歡鐩戞帶鍣ㄥ湪姝婚攣鐩戞帶涓殑鐢ㄩ旓紝鎴戝紩鍏ヤ簡涓涓畝鍗曠殑姝婚攣鍦烘櫙鏉ヨЕ鍙戜竴涓閿侊紝鍦ㄩ殢鍚庣殑绔犺妭錛屾垜浼氬憡璇夎鑰呭浣曞垎鏋愮洃鎺х粨鏋滀互鍙婃牴鎹粨鏋滄潵閬垮厤姝婚攣鐨勫彂鐢熴?/p>
榪欓噷鎴戜滑闇瑕佽嚦灝戜笁涓簲鐢ㄧ▼搴忔潵璋冪敤DB2 CLI錛屼竴涓敤鏉ョ洃鎺ф閿佺殑鍙戠敓錛屽彟澶栦袱涓敤鏉ヤ駭鐢熸閿併傛垜浠彲浠ヤ嬌鐢―B2 UDB 瀹夎鏃墮檮甯︾殑SAMPLE鏁版嵁搴撱?/p>
1錛?棣栧厛寤虹珛涓涓閿佷簨浠剁洃鎺у櫒
db2 connect to sample db2 "create event monitor dlmon for tables, deadlocks with details write to file 'C:\dlmon'" mkdir C:\dlmon db2 "set event monitor dlmon state 1" |
2錛?鐢ㄥ彟澶栦袱涓簲鐢ㄧ▼搴忔潵浜х敓涓涓閿?/p>
Session A
db2 connect to sample
db2 +c "insert into employee values('000350', 'Truman',
'I', 'Jiang', 'B00', '5892',
'1999-02-21', 'Engineer', 19, 'M',
'1978-06-17', 60000, 2000, 6000)"
|
鐜板湪搴旂敤紼嬪簭A灝辨嫢鏈変簡涓涓狤MPLOYEE琛ㄧ殑琛岀駭鍒殑鎺掍粬閿?/p>
錛堟敞: +c 浠h〃涓嶈嚜鍔ㄦ彁浜QL璇彞錛孌B2 涓?autocommit 鏄己鐪佽緗紝涔熷彲浠ラ氳繃 db2 update command options using c off 鍏抽棴璇ョ己鐪侀夐」銆傦級
db2 connect to sample
db2 +c "insert into project values('AD3300', 'Dead Lock Monitor', 'B00', '000350', 7.00,
'1982-07-21', '1983-02-03', 'AD3111')"
|
鐜板湪搴旂敤紼嬪簭B灝辨嫢鏈変簡涓涓狿ROJECT琛ㄧ殑琛岀駭鍒殑鎺掍粬閿?/p>
Session A
db2 +c "select projname from project" |
搴旂敤紼嬪簭A闇瑕丳ROJECT琛ㄤ笂鎵鏈夎鐨勫叡浜攣錛屼絾鏄洜涓篜ROJECT琛ㄦ鍦ㄨ搴旂敤紼嬪簭B浠ユ帓浠栭攣鐨勫艦寮忕嫭鍗狅紝榪欐椂鍊欏簲鐢ㄧ▼搴?灝辮繘鍏ヤ竴涓攣絳夊緟鐨勭姸鎬併?/p>
Session B
db2 +c "select firstnme from employee" |
搴旂敤紼嬪簭B涔熻繘鍏ヤ竴涓攣絳夊緟鐨勭姸鎬併傛鏃跺氨鍑虹幇浜嗕竴涓閿佺姸鎬併?/p>
3錛?涓や釜鏈韓澶勪簬閿佺瓑寰呭茍涓斿崰鏈夎祫婧愮殑搴旂敤紼嬪簭浜掔浉絳夊緟鍙﹀涓鏂規墍鎸佹湁鐨勮祫婧愶紝榪欐椂鍊橲ession A鍜孲ession B灝卞嚭鐜頒簡姝婚攣鐘舵侊紝榪欑鐘舵佷竴鐩翠細寤剁畫鐩村埌姝婚攣媯鏌ュ櫒錛堣秴鍑篋LCHKTIME鏃墮棿浠ュ悗錛夋鏌ュ嚭涓涓閿佸茍涓斿洖婊氬叾涓殑涓涓簨鍔°?/p>
Session B
SQLN0991N 鍥犱負姝婚攣鎴栬呰秴鏃訛紝褰撳墠浜嬪姟宸茬粡琚洖婊氥傚師鍥犵爜涓?"2". SQLSTATE=40001 榪欐椂鍊欐閿佷簨浠剁洃鎺у櫒灝變細璁板綍榪欎釜姝婚攣錛屽悓鏃跺簲鐢ㄧ▼搴廇鍙互瀹屾垚浠栫殑宸ヤ綔銆? |
PROJNAME ---------------------------------------- …… 20 鏉¤褰曞凡閫夋嫨 |
db2 connect reset |
db2 connect reset |
4錛?閫氳繃 db2evmon 宸ュ叿鍙互鑾峰緱姝婚攣淇℃伅鐨勬棩蹇楋紝騫朵笖鎶婃棩蹇楁枃浠跺鍏ュ埌鏈湴鏈哄櫒鐨勬枃浠剁郴緇熷綋涓傚湪涓嬮潰涓鑺傦紝鎴戜滑灝嗚緇嗗垎鏋愬鍑虹殑鏃ュ織鏂囦歡銆?/p>
Session Monitor db2 connect reset db2evmon -path c:\dlmon > c:\dlmon\dllog1.txt |
鏈妭鎴戜滑寮濮嬭緇嗗垎鏋愪笂涓鑺備駭鐢熺殑鐩戞帶緇撴灉錛屼粠鐩戞帶瀵煎嚭鐨勬棩蹇楁枃浠朵腑錛屾垜浠彲浠ュ垎鏋愬嚭姝婚攣鍙戠敓鐨勬椂闂達紝綰у埆錛屾ā寮忎互鍙婁駭鐢熸閿佺殑SQL璇彞錛屼粠鑰屾嵁姝ゆ潵榪涗竴姝ュ湴淇鍙兘鐢辯▼搴忓茍鍙戣璁℃垨鑰呮暟鎹簱璁捐鎵瀵艱嚧鐨勭己闄楓?/p>
--------------------------------------------------------------------------
EVENT LOG HEADER
Event Monitor name: DLMON
Server Product ID: SQL08022
……
Server instance name: DB2
--------------------------------------------------------------------------
--------------------------------------------------------------------------
Database Name: SAMPLE
Database Path: C:\DB2\NODE0000\SQL00001\
……
--------------------------------------------------------------------------
3) Deadlock Event ...
Deadlock ID: 1
……
4) Connection Header Event ...
Appl Handle: 949
……
5) Deadlocked Connection ...
Deadlock ID: 1
Participant no.: 2
Participant no. holding the lock: 1
Appl Id: G9B56A72.HE13.01B406083205
Appl Seq number: 0001
Appl Id of connection holding the lock: G9B56A72.HD13.02CE06083152
……
Deadlock detection time: 2006-01-06 16:34:27.327582
Table of lock waited on : EMPLOYEE
(A閿佸彂鐢熺殑琛?
Schema of lock waited on : JT
Tablespace of lock waited on : USERSPACE1
Type of lock: Row
錛圓閿佺駭鍒負琛岄攣錛?
Mode of lock: X - Exclusive
錛圓閿佹ā寮忎負鎺掍粬閿侊級
Mode application requested on lock: NS - Share (and Next Key Share)
錛堝湪A鎺掍粬閿佷笂瑕佹眰B鍏變韓閿侊紝鍙戠敓姝婚攣錛?
……
Text : select name from employee
錛堜駭鐢烞鍏變韓閿佺殑SQL璇彞錛?
List of Locks:
錛堝綋鍓嶆墍鏈夐攣鐨勫垪琛級
……
Lock Name : 0x020005000D0000000000000052
Lock Attributes : 0x00000008
Release Flags : 0x40000000
Lock Count : 1
Hold Count : 0
Lock Object Name : 13
Object Type : Row
Tablespace Name : USERSPACE1
Table Schema : JT
Table Name : PROJECT
Mode : X - Exclusive
錛堝湪PROJECT琛ㄤ笂鏈変竴涓帓浠栭攣錛?
……
Lock Name : 0x02000300000000000000000054
Lock Attributes : 0x00000000
Release Flags : 0x00000001
Lock Count : 1
Hold Count : 0
Lock Object Name : 3
Object Type : Table
Tablespace Name : USERSPACE1
Table Schema : JT
Table Name : EMPLOYEE
Mode : IS - Intent Share
錛堝湪EMPLOYEE琛ㄤ笂鏈変竴涓叡浜攣錛?
Locks Held: 6
Locks in List: 6
……
9) Table Event ...
Table schema: JT
Table name: EMPLOYEE
Record is the result of a flush: FALSE
Table type: User
Data object pages: 1
……
Rows read: 35
Rows written: 1
……
Tablespace id: 2
Table event timestamp: 2006-01-06 16:37:28.972501
錛堣褰旹MPLOYEE琛ㄤ笂鍙戠敓鐨勪簨浠訛級
|
鎴戜滑鍙互鍒嗘瀽涓涓媎llog1.txt 鏂囦歡錛屾潵鍑嗙‘瀹氫綅姝婚攣鍙戠敓鐨勫師鍥狅紝鐪嬬湅5錛塂eadlocked Connection: 鎴戜滑鍙互鐪嬪嚭姝婚攣鍙戠敓鐨勮〃鏄疎MPLOYEE錛屽悓鏃舵垜浠篃鍙互鍒ゆ柇鍑鴻繖鏄竴涓浜庡凡琚帓浠栭攣鍗犳湁鐨勮祫婧愮敵璇峰叡浜攣鎵瀵艱嚧鐨勬閿併傛洿鍔犻噸瑕佺殑鏄垜浠緱鍒頒簡浜х敓姝婚攣鐨凷QL璇彞錛屼粠涓婇潰鎴戜滑鍙互鎺ㄦ柇鍑轟竴瀹氬瓨鍦ㄥ埆鐨勫簲鐢ㄧ▼搴忓湪浠ョ嫭鍗犻攣鐨勬柟寮忓崰鐢‥MPLOYEE琛紝榪欏緢鏈夊彲鑳藉氨鏄浜嶦MPLOYEE琛ㄧ殑鎻掑叆鎴栬呮洿鏂板姩浣滈犳垚鐨勩?/p>
鑰岃繖鏈鏈夊彲鑳藉氨鏄彃鍏ユ垨鑰呮洿鏂頒簨鍔℃椂闂磋繃闀挎墍瀵艱嚧鐨勶紝瀵艱嚧浜嬪姟鏃墮棿榪囬暱鐨勫師鍥犲ぇ浣撴湁涓ょ錛屼竴鏄潵鑷簬騫跺彂紼嬪簭鐨勮璁″拰緙栧啓錛屼簩鏄潵鑷簬鏁版嵁搴撶殑璁捐鍜屾暟鎹簱鍙傛暟鐨勮皟鏁淬?/p>
鏈妭鎴戜滑閫氳繃浠旂粏鍦板垎鏋愪簨浠剁洃鎺у櫒鐨勭粨鏋滄潵鎺ㄦ柇鍑哄鑷存閿佸彂鐢熺殑鍘熷洜錛屼粠鑰岄噰鍙栨湁鏁堢殑鎺柦鍘婚伩鍏嶆閿佺殑鍙戠敓銆傝繖浜涙帾鏂藉寘鎷皟鏁存暟鎹簱鍙傛暟錛屾垨鑰呬慨鏀瑰簲鐢ㄧ▼搴忕殑浠g爜錛屾垨鑰呬慨鏀筍QL璇彞鐢氳嚦鏄暟鎹簱鐨勮璁℃潵鎻愰珮浠g爜鍜孲QL璇彞鎵ц鐨勬晥鐜囥?/p>
瓚婃棭鍦拌冭檻鏁版嵁搴撹璁′腑鐨勫茍鍙戞ч棶棰橈紝灝辮秺鍙互鎻愰珮浠g爜鎵ц鐨勬晥鐜囷紝闄嶄綆紼嬪簭寮鍙戝拰緇存姢鐨勬垚鏈紝榪欓噷鎴戜滑鎻愬嚭浜嗕竴浜涢伩鍏嶆閿侊紝鎻愰珮搴旂敤紼嬪簭騫跺彂鎬х殑鏂規硶銆?/p>
——鏁版嵁搴撴妧鏈拰“浜嬪姟澶勭悊”涓撳
1998騫村害鐨勫浘鐏靛鎺堜簣浜嗗0瑾夊崜钁楃殑鏁版嵁搴撲笓瀹惰┕濮嗘柉·鏍奸浄(James Gray)鎴栫О鍚夊·鏍奸浄(JimGray錛孞im鏄疛ames鐨勬樀縐?銆傝繖鏄浘鐏靛璇炵敓32騫寸殑鍘嗗彶涓婏紝緇ф暟鎹簱鎶鏈殑鍏堥┍鏌ュ皵鏂?#183;宸磋但鏇?Charles W錛嶣achman錛?973)鍜屽叧緋繪暟鎹簱涔嬬埗鍩冨痙鍔?#183;縐戝痙(Edgar F錛嶤odd錛?981)涔嬪悗錛岀3浣嶅洜鍦ㄦ帹鍔ㄦ暟鎹簱鎶鏈殑鍙戝睍涓仛鍑洪噸澶ц礎鐚岃幏姝ゆ畩鑽g殑瀛﹁呫?/font>

鏍奸浄鐢熶簬1944騫達紝鍦ㄨ憲鍚嶇殑緹庡浗鍔犲窞澶у浼厠鍒╁垎鏍¤綆楁満縐戝緋昏幏寰楀崥澹浣嶃傚叾鍗氬+璁烘枃鏄湁鍏充紭鍏堟枃娉曡娉曞垎鏋愮悊璁虹殑銆傚鎴愪互鍚庯紝浠栧厛鍚庡湪璐濆皵瀹為獙瀹ゃ両BM銆乀andem銆丏EC絳夊叕鍙稿伐浣滐紝鐮旂┒鏂瑰悜杞悜鏁版嵁搴撻鍩熴?/font>
鍦↖BM鏈熼棿錛屼粬鍙備笌鍜屼富鎸佽繃IMS銆丼ystem R銆丼QL錛廌S銆丏B2絳夐」鐩殑寮鍙戯紝鍏朵腑闄ystem R浠呬綔涓虹爺絀跺師鍨嬶紝娌℃湁鎴愪負浜у搧澶栵紝鍏朵粬鍑犱釜閮芥垚涓篒BM鍦ㄦ暟鎹簱甯傚満涓婃湁褰卞搷鍔涚殑浜у搧銆?/font>
鍦═andem鏈熼棿錛屾牸闆峰璇ュ叕鍙哥殑涓昏鏁版嵁搴撲駭鍝丒NCOMPASS榪涜浜嗘敼榪涗笌鎵╁厖錛屽茍鍙備笌浜嗙郴緇熷瓧鍏搞佸茍琛屾帓搴忋佸垎甯冨紡SQL銆丯onstop SQL絳夐」鐩殑鐮斿埗宸ヤ綔銆?/font>
鍦―EC錛屼粬浠嶇劧涓昏璐熻矗鏁版嵁搴撲駭鍝佺殑鎶鏈傛牸闆瘋繘鍏ユ暟鎹簱棰嗗煙鏃訛紝鍏崇郴鏁版嵁搴撶殑鍩烘湰鐞嗚宸茬粡鎴愮啛錛屼絾鍚勫ぇ鍏徃鍦ㄥ叧緋繪暟鎹簱綆$悊緋葷粺(RDBMS)鐨勫疄鐜板拰浜у搧寮鍙戜腑錛岄兘閬囧埌浜嗕竴緋誨垪鎶鏈棶棰橈紝涓昏鏄湪鏁版嵁搴撶殑瑙勬ā鎰堟潵鎰堝ぇ錛屾暟鎹簱鐨勭粨鏋勬剤鏉ユ剤澶嶆潅錛屽張鏈夋剤鏉ユ剤澶氱殑鐢ㄦ埛鍏變韓鏁版嵁搴撶殑鎯呭喌涓嬶紝濡備綍淇濋殰鏁版嵁鐨勫畬鏁存?Integrity)銆佸畨鍏ㄦ?Security)銆佸茍琛屾?Concurrency)錛屼互鍙婁竴鏃﹀嚭鐜版晠闅滃悗錛屾暟鎹簱濡備綍瀹炵幇浠庢晠闅滀腑鎭㈠(Recovery)銆傝繖浜涢棶棰樺鏋滀笉鑳藉渾婊¤В鍐籌紝鏃犺鍝釜鍏徃鐨勬暟鎹簱浜у搧閮芥棤娉曡繘鍏ュ疄鐢紝鏈緇堜笉鑳借鐢ㄦ埛鎵鎺ュ彈銆傛鏄湪瑙e喅榪欎簺閲嶅ぇ鐨勬妧鏈棶棰橈紝浣緿BMS鎴愮啛騫墮『鍒╄繘鍏ュ競鍦虹殑榪囩▼涓紝鏍奸浄浠ヤ粬鐨勮仾鏄庢墠鏅哄彂鎸ヤ簡鍗佸垎鍏抽敭鐨勪綔鐢ㄣ?/font>
鐩墠錛屽悇DBMS瑙e喅涓婅堪闂鐨勪富瑕佹妧鏈墜孌靛拰鏂規硶濡備笅錛?/font>
1錛庢妸瀵規暟鎹簱鐨勬搷浣滃垝鍒嗕負縐頒箣涓?#8220;浜嬪姟”(鎴?#8220;浜嬪姟鍏?#8221;錛宼ransaction)鐨勪竴涓釜鍘熷瓙鍗曚綅銆備簨鍔℃槸浜嬪姟澶勭悊(transaction processing)鐨勫熀鏈墽琛屽崟浣嶏紝鍗充竴涓簨鍔′腑鐨勬搷浣滆涔堝叏閮ㄨ鎵ц錛岃涔堝叏閮ㄩ兘涓嶆墽琛岋紝鍗沖疄琛屾墍璋揳ll or none鐨勫師鍒欍備竴涓簨鍔′竴鑸互涓涓?#8220;寮濮?#8221;璇彞(begin)寮濮嬶紝鍏堜粠鏁版嵁搴撲腑鍙栧嚭涓浜涙暟鎹紝鐒跺悗榪涜鎵闇鐨勫鐞嗭紝鏈鍚庝互“鎻愪氦”璇彞(commit)緇撴潫銆傚浜嬪姟涓彂鐢熷紓甯革紝鍒欑敤“寮傚父緇堟”璇彞(abort)鎴?#8220;鍥為”璇彞(rollback)鎾ら攢鏈簨鍔℃墽琛岃繃紼嬩腑瀵規暟鎹簱宸插仛鐨勬墍鏈夋洿鏂?鍗蟲墍璋搖ndo)錛屽皢鏁版嵁搴撴仮澶嶅埌浜嬪姟寮濮嬫椂鐨勬紜姸鎬侊紝浠ヤ繚闅滄暟鎹殑瀹屾暣鎬с佷竴鑷存с?/font>
2錛庣敤鎴峰湪瀵規暟鎹簱鍙戝嚭鎿嶄綔璇鋒眰鏃訛紝緋葷粺瀵規湁鍏崇殑涓嶅悓綺掑害(granularity)鐨勬暟鎹厓绱?瀛楁銆佽褰曚互鑷蟲暣涓枃浠?“鍔犻攣”(10cking)錛屽姞閿佺殑鏁版嵁灝嗚鏆傛椂紱佹鍏朵粬鐢ㄦ埛璁塊棶(鎴戜滑榪欓噷浠呮槸涓縐嶇畝鍖栫殑瑙i噴錛屽疄闄呬笂錛屾牴鎹敤鎴峰鏁版嵁璇鋒眰鐨勪笉鍚屾ц川錛屽姞閿佺殑鏁版嵁濡備綍瀵瑰緟鍙︿竴鐢ㄦ埛鐨勮姹傦紝鍛堢幇澶嶆潅鐨勬儏鍐碉紝渚嬪錛屽鏋滃姞閿佺殑鏁版嵁灝嗚淇敼錛岄偅鏄粷瀵圭姝㈠叾浠栫敤鎴瘋闂殑錛涜屽鏋滃姞閿佺殑鏁版嵁鍙敤浜庤鍑猴紝鍒欏叾浠栫敤鎴風殑璇誨嚭璇鋒眰榪樺皢鏄厑璁哥殑銆傝繖鐢辨墍璋?#8220;閿佺浉瀹規х煩闃?#8221;——lock compatibility matrix綆$悊鍜屾帶鍒?銆傛搷浣滃畬鎴愬悗“瑙i攣”(unlocking)銆傝繖涓鏈哄埗鐢ㄤ互鏃繚鎸佷簨鍔′箣闂寸殑“騫跺彂鎬?#8221;錛屽張淇濊瘉鏁版嵁鐨?#8220;瀹屾暣鎬?#8221;銆?/font>
3錛庡緩绔嬬郴緇熻繍琛屾棩蹇?10g)錛岃杞藉悇浜嬪姟鐨勫鐐廣佺粓鐐逛互鍙婂湪浜嬪姟涓鏇存柊榪囩殑欏甸潰鐨勬敼鍓嶅拰鏀瑰悗鐘跺喌(before image鍜宎fterimage)錛屼互渚垮湪緋葷粺鍑虹幇鏁i殰浣挎暟鎹簱閬埌鐮村潖鏃訛紝鑳芥牴鎹畾鏈熸垨涓嶅畾鏈熶負鏁版嵁搴撴墍浣滅殑澶囦喚(backup)鍔犱笂鏃ュ織涓殑淇℃伅灝嗘暟鎹簱鎭㈠鍒扮郴緇熸晠闅滃墠鐨勬紜姸鎬侊紝鍚屾椂鍙堣兘淇濈暀鏈鍚庝竴嬈″浠戒互鏉ュ鏁版嵁搴撴墍浣滅殑淇敼銆?/font>
4銆傚鏁版嵁搴撶殑浠諱綍鏇存柊鍒嗕袱闃舵鎻愪氦(two-phase commit)銆傝繖鏄熀浜庝竴涓簨鍔″彲鑳藉悓鏃舵秹鍙婁袱涓笉鍚岀殑鏁版嵁搴撶郴緇熻屽繀闇鐨勶紝榪欏湪鍒嗗竷寮忕郴緇熶腑灝や負閲嶈銆?/font>
涓婅堪鍙婂叾浠栧悇縐嶆柟娉曞彲鎬葷О涓?#8220;浜嬪姟澶勭悊鎶鏈?#8221;(transaction processing technique)銆傛牸闆峰湪浜嬪姟澶勭悊鎶鏈笂鐨勫垱閫犳ф濈淮鍜屽紑鎷撴у伐浣滐紝浣夸粬鎴愪負璇ユ妧鏈鍩熷叕璁ょ殑鏉冨▉銆備粬鐨勭爺絀舵垚鏋滃弽鏄犲湪浠栧彂琛ㄧ殑涓緋誨垪璁烘枃鍜岀爺絀舵姤鍛婁箣涓紝鏈鍚庣粨鏅朵負涓閮ㄥ帤鍘氱殑涓撹憲Transaction Processing錛欳oncepts and Techniques(Morgan Kaufmann Publishers錛?993錛屽彟涓浣滆呬負寰峰浗鏂浘鍔犵壒澶у鐨凙錛嶳euter鏁欐巿)銆備簨鍔″鐞嗘妧鏈櫧鐒惰癁鐢熶簬鏁版嵁搴撶爺絀訛紝浣嗗浜庡垎甯冨紡緋葷粺錛宑lient錛弒erver緇撴瀯涓殑鏁版嵁綆$悊涓庨氫俊錛屽浜庡閿欏拰楂樺彲闈犳х郴緇燂紝鍚屾牱鍏鋒湁閲嶈鐨勬剰涔夈?/font>
鏍奸浄鐨勫彟涓閮ㄨ憲浣滄槸The Benchmark Handbook錛歠or Database and Transaction Processing Systems錛岀1鐗堜簬1991騫達紝絎?鐗堜簬1993騫村嚭鐗堬紝涔熸槸Morgan Kaufmann鍑虹増紺懼嚭鐗堢殑銆傛牸闆瘋繕鏄鍑虹増紺?#8220;鏁版嵁綆$悊緋葷粺涓涗功”鐨勪富緙栥?/font>
鏍奸浄鍦ㄦ暟鎹簱瀛︽湳鐣屽崄鍒嗘椿璺冦傚浗闄呬笂瀹氭湡鎴栦笉瀹氭湡涓捐鐨勪竴浜涢噸瑕佺殑鏁版嵁搴撳鏈細璁VLDB銆丼IGMOD涓婏紝閮借兘瑙佸埌浠栫殑韜獎錛屽惉鍒頒粬鐨勫0闊熾傞櫎浜嗗湪鍏徃浠庝簨鐮旂┒寮鍙戝錛屼粬榪樺吋鑱屽湪姣嶆牎浼厠鍒┿佹柉鍧︾澶у銆佸竷杈句僵鏂ぇ瀛︿粠浜嬭繃鏁欏鍜岃瀛︽椿鍔ㄣ?992騫達紝VLDB鏉傚織(The VLDB Journal)鍒涘垔錛屼粬鍑轟換涓葷紪銆?/font>
鏍奸浄鏄疉CM浜?988騫存巿浜圛BM鐨凷ystem R浠ヨ蔣浠剁郴緇熷鐨?浣嶅緱濂栦漢涔嬩竴錛屽叾浠?浜烘槸Donald Chamberlin銆丷aymond Lorie銆丟ianfranco Putzolu銆丳atricia Selinger鍜孖rving Traiger銆傛鏄敱浜庢牸闆峰湪鏁版嵁搴撴妧鏈柟闈㈢殑澹拌獕錛岃蔣浠朵笟涓殑“宸ㄦ棤闇?#8221;寰蔣鍏徃鍦?993騫村喅瀹氳繘鍏ュぇ鍨嬪叧緋繪暟鎹簱甯傚満鏃訛紝鎵嶄笉鎯滅敤縐嶇鎵嬫鎶婃牸闆蜂粠DEC鍏徃鎸栬繃鏉ャ傚洜鏍奸浄涓嶅枩嬈㈠井杞婚儴鎵鍦ㄧ殑澶氶洦鐨勮タ闆呭浘錛屾効鎰忕暀鍦ㄩ槼鍏夌伩鐑傜殑鏃ч噾灞憋紝寰蔣鐗瑰湴鍦ㄦ棫閲戝北寮杈熺浜屼釜寰蔣鐮旂┒闄㈡搗婀懼尯鐮旂┒涓績BARC(Bay Area Research Center)錛屽畨鎺掓牸闆蜂換璇ョ爺絀墮櫌涓葷銆傛牸闆鋒灉鐒朵笉璐熸墍鏈涳紝棰嗗涓涓爺鍒跺皬緇勫紑鍙戝嚭浜哅S SQL Server 7錛?錛屾垚涓哄井杞巻鍙蹭笂涓涓噷紼嬬寮忕殑鐗堟湰錛岃屼笖涔熸垚涓哄綋浠婂叧緋繪暟鎹簱甯傚満涓婄殑浣間郊鑰呫?/font>
鏍奸浄鏄湪1999騫?鏈?鏃ヤ簬浜氱壒鍏板ぇ涓捐鐨凙CM鍏ㄥ浗浼氳涓婃帴鍙楀浘鐏靛鐨勩傛牸闆峰彂琛ㄤ簡“淇℃伅鎶鏈粖鍚庣殑鐩爣”鐨勬紨璇?What Next?涓A dozen remaining IT problems)錛岀旱璁轟簡淇℃伅鎶鏈彂灞曚腑鏈夊叧鐨勫嚑涓柟鍚戞ч棶棰樸傚悗鏉ワ紝璇ユ枃緇忎慨鏀瑰悗鍦⊿IGMOD鐨勪細涓婁互What Next?涓A dozen IT Research Goals涓洪鍐嶆鍙戣〃銆傛牸闆風殑婕旇鍦ㄥ璁$畻鎶鏈殑鍙戝睍浣滄葷粨鎬у洖欏炬椂璁や負錛岃嫳鍥芥暟瀛﹀宸磋礉濂?Charles Babage錛?791—1871)鍦?9涓栫邯鎵姊︽兂鍜岃拷姹傜殑璁$畻鏈轟粖澶╁凡緇忓熀鏈疄鐜幫紱緹庡浗鏁板瀹跺竷浠(Vannevar Bush錛?890—1974錛屾浘浠葷綏鏂鎬葷粺鐨勭瀛﹂【闂?20涓栫邯40騫翠唬鎵璁炬兂鐨?#8220;姊呯背鍏嬫柉”MEMEX鍗?#8220;璁板繂寤朵幾鍣?#8221;(MEMory EXtender)褰撳墠宸叉帴榪戝疄鐜幫紱鑰屽浘鐏墊墍鎻愬嚭鐨勬櫤鑳芥満鍣ㄧ瀹炵幇榪樻湁涓孌佃窛紱伙紝鐩墠鐨勮綆楁満榪橀毦浠ラ氳繃“鍥劇伒嫻嬭瘯”銆備負浜嗗畬鍏ㄥ疄鐜頒笂榪?浣嶇瀛﹀法浜虹殑鐞嗘兂錛屾牸闆峰懠鍚佺編鍥芥斂搴滆閲嶈鏀寔瀵笽T鎶鏈殑闀挎湡鐮旂┒錛岃涓哄叾閲嶈鎰忎箟涓嶄簹浜?00騫村墠鏉板紬閫?Thomas Jefferson錛?743—1826錛?#8220;鐙珛瀹h█”鐨勮搗鑽夎咃紝緹庡浗絎笁浠繪葷粺錛?801—1809鍦ㄤ綅)鍐沖畾鐢? 500涓囩編鍏冧粠娉曞浗鏀垮簻鎵嬩腑涔板洖璺槗鏂畨濞滈鍦?Louisiana Territory錛岃繖鏄綅浜庡瘑瑗胯タ姣旀渤鍜屾礇鐭跺北鑴変箣闂達紝鍖楄嚦鍔犳嬁澶э紝鍗楄揪澧ㄨタ鍝ユ咕鐨勫ぇ鍧楀湡鍦幫紝闈㈢Н杈? 070 000km2)榪欎竴琚О涓篖ouisiana Purchase鐨勮憲鍚嶅巻鍙蹭簨浠訛紝鐒跺悗鍙堟淳鍑轟互鍒樻槗鏂笂灝?Captain Meriwether Lewis)鍜屽厠鎷夊厠(William Clark)涓洪鐨?#8220;鍙戠幇鍐涘洟(Corps for Discovery)鍒拌タ閮ㄦ帰闄╃洿鑷沖お騫蟲磱嫻峰哺錛屼負鏈緇堝艦鎴愮編鍥藉浠婄殑鐗堝浘濂犲畾浜嗗熀紜銆傛牸闆瘋涓猴紝涓涓ソ鐨処T闀挎湡鐩爣搴斿叿鏈変互涓?涓叧閿э細
1錛庡彲鐞嗚В鎬?nbsp; 鐩爣搴旇兘綆鍗曡〃榪板茍琚漢鐞嗚В銆?/font>
2錛庢湁鎸戞垬鎬?nbsp; 濡備綍杈懼埌鐩爣涓嶆槸寰堟槑鏄劇殑銆?/font>
3錛庣敤閫斿箍娉?nbsp; 涓嶅彧瀵硅綆楁満縐戝瀹舵湁鐢紝鑰屾槸瀵瑰ぇ澶氭暟浜烘湁鐢ㄣ?/font>
4錛庡彲嫻嬭瘯鎬?nbsp; 浠ヤ究媯鏌ラ」鐩繘灞曞茍鐭ラ亾鐩爣鏄惁宸茬粡杈懼埌銆?/font>
5錛庢笎榪涙?nbsp; 涓棿鏈夎嫢騫查噷紼嬬錛屼互媯鏌ラ」鐩繘灞曞茍榧撹垶鐮旂┒浜哄憳騫蹭笅鍘匯?/font>
鍦ㄤ互涓婅鐐規敮鎸佷笅錛屾牸闆鋒彁鍑虹殑鍑犱釜IT鎶鏈殑闀挎湡鐮旂┒鐩爣濡備笅錛?/font>
1錛庤妯″彲浼哥緝鎬?scalability)銆?/font>
2錛庨氳繃鍥劇伒嫻嬭瘯銆?/font>
3錛庤闊沖埌鏂囨湰鐨勮漿鎹?Speech to Text)銆?/font>
4錛庢枃鏈埌璇煶鐨勮漿鎹?Text to Speech)銆?/font>
5錛庢満鍣ㄨ瑙夛紝鑳藉儚浜轟竴鏍瘋瘑鍒墿浣撳拰榪愬姩銆?/font>
6.涓漢鐨?#8220;姊呯背鍏嬫柉”錛屽彲璁板綍浜烘墍鐪嬪埌鍜屽惉鍒扮殑涓鍒囷紝闇瑕佹椂蹇熸绱㈠嚭鏉ャ?/font>
7錛庝笘鐣岀殑“姊呯背鍏嬫柉”錛屽嵆寤虹珛鏂囨湰銆侀煶涔愩佸浘鍍忋佽壓鏈佺數褰辯殑“鍏ㄩ泦”(corpus)錛屽彲鍥炵瓟鏈夊叧鐨勪換浣曟彁闂紝鍍忎漢綾諱笓瀹墮偅鏍峰揩鑰屽ソ鍦板仛绱㈠紩錛屽仛鏂囨憳銆?/font>
8錛庤櫄鎷熺幇瀹?鏍奸浄鐢ㄤ簡TelePresenee榪欎釜璇嶏紝鍙傝瀵?969騫村浘鐏靛鑾峰緱鑰呮槑鏂熀鐨勪粙緇?銆?/font>
9錛庢棤鏁呴殰緋葷粺(Trouble-Free Systems)銆?/font>
10錛庡畨鍏ㄧ郴緇?Secure Systems)銆?/font>
11錛庨珮鍙敤緋葷粺(AlwaysUp)銆?/font>
12錛庤嚜鍔ㄧ▼搴忚璁?Automatic Programming)銆?/font>
鏍奸浄鐨勫浘鐏靛婕旇鍏ㄦ枃宸茬敱絎旇呰瘧鍑猴紝鎽樿鍒婁簬銆婁腑鍥借綆楁満鎶ャ?000騫?鏈堬紝鏈夊叴瓚g殑璇昏呭彲浠ヤ竴闃呫?/font>
鐩墠錛屾牸闆鋒湰浜烘鍦ㄤ粠浜婼calability榪欎竴闀挎湡鐩爣鐨勭爺絀訛紝浠栨槸寰蔣“瑙勬ā鍙幾緙╃殑鏈嶅姟鍣ㄧ爺絀跺皬緇?#8221;(Scalable Servers Research Group)鐨勯珮綰х爺絀跺憳錛岃欏圭洰宸叉湁鑻ュ共鐮旂┒鎴愭灉鍦ㄧ綉涓婂叕甯冦?/font>
鏍奸浄鐨勭數瀛愪俊綆變負錛?/font>
gray @ microsoft錛巆om
浠栫殑鍥犵壒緗戜釜浜轟富欏典負錛?/font>
http錛?/www錛巖esearch錛巑icrosoft錛巆om/research錛廱arc錛廹ray
(寮曠敤鑷?http://202.207.0.245:9001/jisuanjifazhanshi/tuling/33.htm)
銆銆---闆囧憳琛?EMPLOYE)
| 浠ヤ笅鏄唬鐮佺墖孌碉細 CREATE TABLE EMPLOYE ( 銆銆EMPLOYEID INTEGER NOT NULL,---鍛樺伐鍙? 銆銆NAME VARCHAR(20) NOT NULL,---濮撳悕 銆銆SALARY DOUBLE---钖按 銆銆); 銆銆INSERT INTO EMPLOYE (EMPLOYEID,NAME,SALARY) VALUES 銆銆(1,'寮犱笁',1000), 銆銆(2,'鏉庡洓',2000), 銆銆(3,'鐜嬩簲',3000), 銆銆(4,'璧靛叚',4000), 銆銆(5,'楂樹竷',5000); |
銆銆--緇忕悊琛?MANAGER)
| 浠ヤ笅鏄唬鐮佺墖孌碉細 CREATE TABLE MANAGER ( 銆銆EMPLOYEID INTEGER NOT NULL,---緇忕悊鍙? 銆銆NAME VARCHAR(20) NOT NULL,---濮撳悕 銆銆SALARY DOUBLE---钖按 銆銆); 銆銆INSERT INTO MANAGER (MANAGERID,NAME,SALARY) VALUES 銆銆(3,'鐜嬩簲',5000), 銆銆(4,'璧靛叚',6000); |
銆銆---闆囧憳琛?EMPLOYE)
| 浠ヤ笅鏄唬鐮佺墖孌碉細 CREATE TABLE EMPLOYE ( 銆銆EMPLOYEID INTEGER NOT NULL,---鍛樺伐鍙? 銆銆NAME VARCHAR(20) NOT NULL,---濮撳悕 銆銆SALARY DOUBLE---钖按 銆銆); 銆銆INSERT INTO EMPLOYE (EMPLOYEID,NAME,SALARY) VALUES 銆銆(1,'寮犱笁',1000), 銆銆(2,'鏉庡洓',2000), 銆銆(3,'鐜嬩簲',3000), 銆銆(4,'璧靛叚',4000), 銆銆(5,'楂樹竷',5000); |
銆銆--緇忕悊琛?MANAGER)
| 浠ヤ笅鏄唬鐮佺墖孌碉細 CREATE TABLE MANAGER ( 銆銆EMPLOYEID INTEGER NOT NULL,---緇忕悊鍙? 銆銆NAME VARCHAR(20) NOT NULL,---濮撳悕 銆銆SALARY DOUBLE---钖按 銆銆); 銆銆INSERT INTO MANAGER (MANAGERID,NAME,SALARY) VALUES 銆銆(3,'鐜嬩簲',5000), 銆銆(4,'璧靛叚',6000); |
銆銆--鏇存柊瀛樺湪鐨?/p>
| 浠ヤ笅鏄唬鐮佺墖孌碉細 UPDATE EMPLOYE AS EM SET SALARY=(SELECT SALARY FROM MANAGER WHERE MANAGERID=EM.EMPLOYEID) 銆銆WHERE EMPLOYEID IN ( 銆銆SELECT MANAGERID FROM MANAGER 銆銆); |
銆銆---鎻掑叆涓嶅瓨鍦ㄧ殑
| 浠ヤ笅鏄唬鐮佺墖孌碉細 INSERT INTO EMPLOYE (EMPLOYEID,NAME,SALARY) 銆銆SELECT MANAGERID,NAME,SALARY FROM MANAGER WHERE MANAGERID NOT IN ( 銆銆SELECT EMPLOYEID FROM EMPLOYE 銆銆); |
銆銆--鏇存柊瀛樺湪鐨?/p>
| 浠ヤ笅鏄唬鐮佺墖孌碉細 UPDATE EMPLOYE AS EM SET SALARY=(SELECT SALARY FROM MANAGER WHERE MANAGERID=EM.EMPLOYEID) 銆銆WHERE EMPLOYEID IN ( 銆銆SELECT MANAGERID FROM MANAGER 銆銆); |
銆銆---鎻掑叆涓嶅瓨鍦ㄧ殑
| 浠ヤ笅鏄唬鐮佺墖孌碉細 INSERT INTO EMPLOYE (EMPLOYEID,NAME,SALARY) 銆銆SELECT MANAGERID,NAME,SALARY FROM MANAGER WHERE MANAGERID NOT IN ( 銆銆SELECT EMPLOYEID FROM EMPLOYE 銆銆); |
銆銆涓婇潰鐨勫鐞嗘槸鍙互鐨勶紝浣嗘槸鎴戜滑榪樺彲浠ユ湁鏇寸畝鍗曠殑鏂規硶錛屽氨鏄敤Merge璇彞錛屽涓嬫墍紺猴細
|
浠ヤ笅鏄唬鐮佺墖孌碉細
|
| 浠ヤ笅鏄唬鐮佺墖孌碉細 MERGE INTO EMPLOYE AS EM 銆銆USING MANAGER AS MA 銆銆ON EM.EMPLOYEID=MA.MANAGERID 銆銆WHEN MATCHED AND EM.SALARY 銆銆WHEN NOT MATCHED THEN INSERT VALUES (MA.MANAGERID,MA.NAME,MA.SALARY); 銆銆MERGE INTO EMPLOYE AS EM 銆銆USING MANAGER AS MA 銆銆ON EM.EMPLOYEID=MA.MANAGERID 銆銆WHEN MATCHED AND EM.SALARY 銆銆WHEN NOT MATCHED THEN INSERT VALUES (MA.MANAGERID,MA.NAME,MA.SALARY); |
銆銆涓嶄粩緇嗙殑鏈嬪弸鍙兘娌℃湁鐪嬪嚭涓婇潰涓ゆ潯璇彞鐨勫尯鍒紝鍝堝搱錛岃浠旂粏瀵規瘮涓涓嬭繖涓ゆ潯璇彞銆備笂闈㈢殑璇彞涓浜咵LSE IGNORE璇彞錛屽畠鐨勬剰鎬濇濡傚畠鑻辨枃鐨勬剰鎬濓紝鍏跺畠鎯呭喌蹇界暐涓嶅鐞嗐傚鏋滀綘璁や負鐞嗚涓婂簲璇ヤ笉瀛樺湪EM.SALARY>MA.SALARY鐨勬暟鎹紝濡傛灉鏈夛紝璇存槑鏈夐棶棰橈紝浣犳兂鎶涗釜寮傚父錛屾庝箞鍔烇紵濡備笅錛?/p>
| 浠ヤ笅鏄唬鐮佺墖孌碉細 MERGE INTO EMPLOYE AS EM 銆銆USING MANAGER AS MA 銆銆ON EM.EMPLOYEID=MA.MANAGERID 銆銆WHEN MATCHED AND EM.SALARY 銆銆WHEN MATCHED AND EM.SALARY>MA.SALARY THEN SIGNAL SQLSTATE '70001' SET MESSAGE_TEXT = 'EM.SALARY>MA.SALARY' 銆銆WHEN NOT MATCHED THEN INSERT VALUES (MA.MANAGERID,MA.NAME,MA.SALARY) 銆銆ELSE IGNORE; 銆銆MERGE INTO EMPLOYE AS EM 銆銆USING MANAGER AS MA 銆銆ON EM.EMPLOYEID=MA.MANAGERID 銆銆WHEN MATCHED AND EM.SALARY 銆銆WHEN MATCHED AND EM.SALARY>MA.SALARY THEN SIGNAL SQLSTATE '70001' SET MESSAGE_TEXT = 'EM.SALARY>MA.SALARY' 銆銆WHEN NOT MATCHED THEN INSERT VALUES (MA.MANAGERID,MA.NAME,MA.SALARY) 銆銆ELSE IGNORE; |
銆銆瀵逛簬EM.SALARY>MA.SALARY鐨勬儏鍐碉紝濡傛灉浣犱笉鎯蟲姏寮傚父錛岃屾槸鍒犻櫎EMPLOYE涓殑鏁版嵁錛屾庝箞鍔烇紵濡備笅錛?/p>
| 浠ヤ笅鏄唬鐮佺墖孌碉細 MERGE INTO EMPLOYE AS EM 銆銆USING MANAGER AS MA 銆銆ON EM.EMPLOYEID=MA.MANAGERID 銆銆WHEN MATCHED AND EM.SALARY 銆銆WHEN MATCHED AND EM.SALARY>MA.SALARY THEN DELETE 銆銆WHEN NOT MATCHED THEN INSERT VALUES (MA.MANAGERID,MA.NAME,MA.SALARY) 銆銆ELSE IGNORE; 銆銆MERGE INTO EMPLOYE AS EM 銆銆USING MANAGER AS MA 銆銆ON EM.EMPLOYEID=MA.MANAGERID 銆銆WHEN MATCHED AND EM.SALARY 銆銆WHEN MATCHED AND EM.SALARY>MA.SALARY THEN DELETE 銆銆WHEN NOT MATCHED THEN INSERT VALUES (MA.MANAGERID,MA.NAME,MA.SALARY) 銆銆ELSE IGNORE; |
銆銆浠ヤ笂綆鍗曚粙緇嶄簡Merge璇彞鐨勪嬌鐢紝瀹冪殑搴旂敤涓嶅彧鏄笂闈粙緇嶇殑鎯呭喌錛屽叾瀹炲畠鍙互搴旂敤鍦ㄥ緢澶氬叾浠栬鍙ヤ笉濂藉鐞嗘儏鍐碉紝榪欓渶瑕佷綘鍘誨彂鐜幫紝璁頒綇鐔熻兘鐢熷閥
涓嬮潰鏄浉搴旂殑杈撳嚭錛?br>DB2 Universal Database Version 7.2, 5622-044 (c) Copyright IBM Corp. 1991, 2001
Licensed Material - Program Property of IBM
IBM DATABASE 2 SQL Explain Tool
Processing package DB2INST1.P0203450.
******************** PACKAGE *********************
Package Name = DB2INST1.P0203450
--------Prep Date = 2002/12/17
--------Prep Time = 16:02:04
--------Bind Timestamp = 2002-12-17-16.02.04.373971
--------Isolation Level ---------= Cursor Stability
--------Blocking---------------- = Block Unambiguous Cursors
--------Query Optimization Class = 5
--------Partition Parallel ------= No
--------Intra-Partition Parallel = No
--------Function Path----------- = "SYSIBM", "SYSFUN", "DB2INST1"
Processing Section 1.
-------------------- SECTION ----------------------
......
-------------------- SECTION ----------------------
Section = 2
SQL Statement:
update STAFF set NAME = 'test'
where ID = 350
Estimated Cost = 75
Estimated Cardinality = 2
Access Table Name = DB2INST1.STAFF ID = 2,3
| #Columns = 2
| Relation Scan
| | Prefetch: Eligible
| Lock Intents
| | Table: Intent Exclusive
| | Row : Update
| Sargable Predicate(s)
| | #Predicates = 1
Update: Table Name = DB2INST1.STAFF ID = 2,3
End of section
Optimizer Plan:
------UPDATE
------( -2)
------/-- \
-TBSCAN --Table:
--( 3) --DB2INST1
---| -----STAFF
Table:
DB2INST1
STAFF
......
鍙互鐢ㄤ笅闈㈠懡浠ゆ壘鍑烘暟鎹簱涓瓨鍦ㄧ殑紼嬪簭鍖咃細
db2 "select pkgschema, pkgname from syscat.packages"
涓婇潰渚嬪瓙涓殑紼嬪簭鍖匘B2INST1.P0203450鏄竴涓瓨鍌ㄨ繃紼嬨?/font>
-------------------
璁劇疆褰撳墠妯″紡錛?/pre>set current path = oais(妯″紡鍚?鏌ョ湅褰撳墠鐨勬ā寮忥細db2 values(current path)璁劇疆涓洪粯璁ょ殑銆佺己鐪佺殑錛?/pre>set current path = system path----------------------------------------璇︾粏鐨勫垪琛ㄤ俊鎭鏌ョ湅錛?see IBM publib site for Database tuning overview.
]]>
db2 "select * from Linux_CPU" 鎬繪槸鎻愮ず琛ㄦ湭瀹氫箟.鍚庢潵鍙戠幇琛ㄥ悕澶у皬鍐欓棶棰?搴旇鍦╠b2鎻愮ず絎︿笅榪愯 select * from "Linux_CPU"鎴栬卍b2 "select * from \"Linux_CPU\""鎵嶆紜?.鏅氫笂鍦?a onclick="javascript:tagshow(event, 'IBM');" href="javascript:;" target=_self>IBM緗戠珯涓婃煡鍒拌緇嗚鏄?
|
Document #:1807545I27000 |
| 娓告爣鏀圭敤鏅氭父鏍囥?br>娓告爣鍙栧嚭褰撳墠璁板綍鍚庯紝fork瀛愯繘紼嬨?br>涓昏繘紼嬪彧綆′粠娓告爣鍙栨暟銆?br>瀛愯繘紼嬭繘琛屼簨鍔°佸鐞嗐佸垽鏂佷慨鏀圭姸鎬併佹彁浜ょ瓑絳夈?br>涓昏繘紼嬬瓑瀛愯繘紼嬬殑緇撴潫淇″彿錛岀劧鍚庡彇涓嬩竴鏉¤褰曘?br>紼嬪簭孌碉細 declare test_cur cursor with hold for select .... from A where ... order by ... with ur; open test_cur; while( 1 ){ fecth test_cur into ......; 鍒ゆ柇SQLCODE pid = fork(); if( pid == 0 ) { /* 瀛愯繘紼嬪共媧?*/ sqledtin( &sqlca ); setsid(); signal( SIGHUP, SIG_IGN ); db_disconn( G_mdb_name ); begin_work(); /* 鍏跺疄灝辨槸璁劇疆浜嗕竴涓爣蹇?*/ SQL 鎿嶄綔錛屼慨鏀瑰叾浠栬〃鎴栬呮父鏍囨墍鍦ㄨ〃鐨勬暟鎹?br> 鏍規嵁緇撴灉鍒ゆ柇 commit or rollback銆?nbsp; db_disconn(); exit(); } /* 涓昏繘紼嬬瓑寰呭瓙榪涚▼緇撴潫 */ } close test_cur; |
涓撶敤鎺掑簭鍜屽叡浜帓搴忎嬌鐢ㄤ袱涓笉鍚屽唴瀛樿祫婧愪腑鐨勫唴瀛樸?strong>鍏變韓鎺掑簭鍐呭瓨鍖虹殑澶у皬鏄牴鎹?sheapthres 鐨勫?/strong>錛?strong>鍦ㄧ涓嬈′笌鏁版嵁搴撹繛鎺ユ椂闈欐佸湴棰勫厛紜畾鐨勩?/strong>涓撶敤鎺掑簭鍐呭瓨鍖虹殑澶у皬涓嶅彈闄愬埗銆?
sheapthres 鍙傛暟瀵逛簬涓撶敤鍜屽叡浜殑鎺掑簭鐢ㄦ硶鏄笉鍚岀殑錛?
浣跨敤鎺掑簭鍫嗙殑鎿嶄綔鐨勭ず渚嬪寘鎷細鎺掑簭銆佹暎鍒楄繛鎺ャ佸姩鎬佷綅鍥撅紙鐢ㄤ簬绱㈠紩 AND 榪愮畻鍜屾槦鍨嬭繛鎺ワ級鍜岃〃浣嶄簬鍐呭瓨涓殑鎿嶄綔銆?
鏄懼紡瀹氫箟闃堝煎彲闃叉鏁版嵁搴撶鐞嗗櫒瀵瑰ぇ閲忔帓搴忎嬌鐢ㄨ繃閲忓唴瀛樸?
褰撲粠闈炲垎鍖烘暟鎹簱縐昏嚦鍒嗗尯鏁版嵁搴撶幆澧冩椂錛屼笉搴斿澶ф鍙傛暟鐨勫箋備竴鏃﹀湪鍗曚釜鏁版嵁搴撳垎鍖虹幆澧冧腑璋冩暣浜嗘暟鎹簱鍜屾暟鎹簱綆$悊鍣ㄩ厤緗弬鏁幫紝鍦ㄥぇ澶氭暟鎯呭喌涓嬶紝鐩稿悓鐨勫煎湪鍒嗗尯鏁版嵁搴撶幆澧冨皢鍚屾牱鍚堥傘?
浣滀負鏁版嵁搴撶鐞嗗櫒閰嶇疆鍙傛暟鐨?#8220;鎺掑簭鍫嗛槇鍊?#8221;鍙傛暟搴旂敤浜庢暣涓?DB2 瀹炰緥銆傚皢璇ュ弬鏁拌緗負涓嶅悓鑺傜偣鎴栧垎鍖轟笂鐨勪笉鍚屽肩殑鍞竴鏂規硶鏄垱寤哄涓?DB2 瀹炰緥銆傝繖灝嗛渶瑕侀氳繃涓嶅悓鏁版嵁搴撳垎鍖虹粍綆$悊涓嶅悓鐨?DB2 鏁版嵁搴撱傝繖鏍峰畨鎺掑皢鏃犳硶鍙戞尌鍒嗗尯鏁版嵁搴撶幆澧冪殑璁稿浼樼偣銆?
寤鴻錛?鐞嗘兂鎯呭喌涓嬶紝搴斿皢姝ゅ弬鏁拌緗負鎮ㄥ湪鏁版嵁搴撶鐞嗗櫒瀹炰緥涓嫢鏈夌殑鏈澶?sortheap 鍙傛暟鐨勪竴涓悎鐞嗗嶆暟銆傛鍙傛暟 鑷沖皯 搴旀槸璇ュ疄渚嬩腑涓轟換浣曟暟鎹簱瀹氫箟鐨勬渶澶?sortheap 鐨勪袱鍊嶃?/strong>
濡傛灉鎮ㄦ鎵ц涓撶敤鎺掑簭騫朵笖鎮ㄧ殑緋葷粺涓嶅彈鍐呭瓨綰︽潫錛屽垯鍙嬌鐢ㄤ笅鍒楁楠ゆ潵璁$畻姝ゅ弬鏁扮殑鐞嗘兂鍊鹼細
錛堝璇ユ暟鎹簱榪愯鐨勫茍鍙戜唬鐞嗙▼搴忕殑鍏稿瀷鏁扮洰錛?
* 錛坰ortheap錛屼負璇ユ暟鎹簱瀹氫箟鐨勶級
搴斾嬌鐢ㄥ熀鍑嗙▼搴忔妧鏈潵璋冩暣姝ゅ弬鏁頒互鎵懼埌鍦ㄦ帓搴忔ц兘鍜屽唴瀛樹嬌鐢ㄤ箣闂寸殑鐩稿簲騫寵 銆?
鍙互浣跨敤鏁版嵁搴撶郴緇熺洃瑙嗗櫒騫跺熷姪鍚庨槇鍊兼帓搴忥紙 post_threshold_sorts 錛夌洃瑙嗗厓绱犳潵璺熻釜鎺掑簭媧誨姩銆?br>
姝ゅ弬鏁板畾涔夎鐢ㄤ簬涓撶敤鎺掑簭鐨勪笓鐢ㄥ唴瀛橀〉鐨勬渶澶ф暟鐩垨瑕佺敤浜庡叡浜帓搴忕殑鍏變韓鍐呭瓨欏電殑鏈澶ф暟鐩傚鏋滄帓搴忎負涓撶敤鎺掑簭錛屽垯姝ゅ弬鏁板皢褰卞搷浠g悊紼嬪簭涓撶敤鍐呭瓨銆傚鏋滄帓搴忎負鍏變韓鎺掑簭錛屽垯姝ゅ弬鏁板皢褰卞搷鏁版嵁搴撳叡浜唴瀛樸傛瘡涓帓搴忛兘鏈変竴涓嫭绔嬬殑鎺掑簭鍫嗭紝璇ユ帓搴忓爢鏄敱鏁版嵁搴撶鐞嗗櫒鎸夌収闇瑕佸垎閰嶇殑銆傛鎺掑簭鍫嗘槸灝嗘暟鎹帓搴忕殑鍖哄煙銆傚鏋滅敱浼樺寲鍣ㄥ畾鍚戯紝鍒欏皢浣跨敤浼樺寲鍣ㄦ彁渚涚殑淇℃伅鍒嗛厤涓涓瘮姝ゅ弬鏁版寚瀹氱殑鎺掑簭鍫嗗皬鐨勬帓搴忓爢銆?
寤鴻錛?褰撲嬌鐢ㄦ帓搴忓爢鏃訛紝搴旇鑰冭檻涓嬪垪浜嬮」錛?
Which of the following settings would allow 20 sorts with a maximum of 10MB each to run currently on a 64-bit instance?
A. Set the DB SHEAPTHERS to 50000 and DB SORTHEAP to 2500
B. Set the DBM SHEAPTHERES to 50000 and DB SORTHEAP to 2500
C. Set the DBM SHEAPTHERS to 50000 and DBM SORTHEAP to 2500
D. Set the DBM SHEAPTHERS_SHR to 50000 and DBM SHEAPTHRES to 2500
銆銆濡傛灉浣犱嬌鐢ㄥ浘褰㈢晫闈㈢殑閰嶇疆鍚戝錛屼綘闇瑕佸洖絳斾竴緋誨垪闂錛岃繖浜涢棶棰樼浉褰撲簬AUTOCONFIGURE鍛戒護涓殑鍙傛暟(濡傝〃1鎵紺?銆傞鍏堣鎴戜滑鐪嬩竴AUTOCONFIGURE鐨勫懡浠ゆ牸寮?
銆銆>>-AUTOCONFIGURE--+---------------------------------------+----->
銆銆| .----------------------------. |
銆銆| V | |
銆銆'-USING----input-keyword--param-value-+-'
銆銆>--APPLY--+-DB ONLY----+---------------------------------------><
銆銆+-DB AND DBM-+
銆銆'-NONE-------'
銆銆琛?1鏄劇ず浜嗛夐」鍏抽敭瀛楀拰鍙栧艱寖鍥淬?/p>
銆銆琛?1 鍏抽敭瀛楀拰鍙栧艱寖鍥?/p>
銆銆鍏抽敭瀛?/p>
銆銆
鍙栧艱寖鍥?nbsp; 榛樿鍊?瑙i噴
mem_percent 1-100 80 璁懼畾DB2浣跨敤鍐呭瓨鐨勫灝戙傚鏋滆繕鏈夊叾浠栧簲鐢ㄧ▼搴忎嬌鐢紝璇烽夋嫨灝忎簬100鐨勬暟鍊?/p>
銆銆
workload_type simple, mixed,
銆銆
complex mixed 鎸囧畾宸ヤ綔璐熻嵎綾誨瀷錛宻imple錛堢畝鍗曪級綾誨瀷涓昏鎸嘔O璁塊棶姣旇緝闆嗕腑錛屽浜庡ぇ澶氭暟OLTP緋葷粺錛岄夋嫨simple綾誨瀷銆侰omplex綾誨瀷涓昏鏄CPU鍗犵敤杈冨鐨勫鏉傛煡璇㈢郴緇燂紝濡侽LAP緋葷粺銆傚鏋滀綘鐨勭郴緇熶粙浜庝袱鑰呬箣闂達紝閫夋嫨mixed綾誨瀷銆?
num_stmts
銆銆
1-1 000 000 10 緋葷粺涓瘡涓涓簨鍔″寘鍚殑SQL璇彞鏁?
tpm 1-200 000 60 姣忓垎閽熻繘琛岀殑浜ゆ槗鏁般?/p>
銆銆
admin_priority
銆銆
performance, recovery, both both 閫夋嫨浣犵殑綆$悊絳栫暐錛屽彲浠ユ槸鏇村ソ鐨勬ц兘錛屾垨鑰呮槸鏇村揩鐨勬暟鎹簱鎭㈠鏃墮棿銆?
is_populated
銆銆
yes, no yes 鏁版嵁搴撳凡緇忓瓨鍦ㄦ暟鎹?
num_local_apps
銆銆
0-5 000 0 鏈湴榪炴帴鏁?
num_remote_apps 0-5 000 10
銆銆
榪滅▼榪炴帴鏁?
isolation RR, RS, CS, UR RR
銆銆
搴旂敤紼嬪簭鐨勯殧紱葷駭鍒?
bp_resizeable
銆銆
yes, no yes 緙撳啿姹犳槸鍚﹀彲璋冩暣澶у皬
銆銆APPLY DB ONLY
銆銆鍦ㄥ綋鍓嶆暟鎹簱綆$悊鍣ㄧ殑閰嶇疆鍙傛暟涓嬶紝鏄劇ず鎺ㄨ崘鐨勬暟鎹簱鍜岀紦鍐叉睜鐨勫弬鏁幫紝騫跺簲鐢ㄤ笌鏁版嵁搴撳拰緙撳啿姹犮?/p>
銆銆APPLY DB AND DBM
銆銆鏄劇ず騫跺簲鐢ㄦ帹鑽愮殑鏁版嵁搴撶鐞嗗櫒鍙傛暟銆佹暟鎹簱鍙傛暟鍜岀紦鍐叉睜鍙傛暟銆?/p>
銆銆APPLY NONE
銆銆浠呬粎鏄劇ず鎺ㄨ崘鍊鹼紝浣嗕笉鏇存敼閰嶇疆鍙傛暟銆?/p>
銆銆浣跨敤璇ュ懡浠ら厤緗暟鎹簱錛屽叧閿閫夋嫨鍚堥傜殑鍙傛暟(鍙傝琛?閫夋嫨浣犵殑鍙傛暟閫夐」)銆備笅闈㈡垜浠氳繃涓涓緥瀛愭潵璇存槑濡備綍浣跨敤AUTOCONFIGURE鍛戒護閰嶇疆鏁版嵁搴撱傚亣璁炬垜浠湪涓涓垎鍖虹殑鏁版嵁搴撶幆澧冧腑錛屽彧鏈変竴涓暟鎹簱瀹炰緥db2inst1鍜屾暟鎹粨搴揟ESTDW錛屽茍涓斿凡緇忚杞戒簡鏁版嵁銆?鎴戜滑浣跨敤涓嬮潰鐨勫懡浠ゅ璇ユ暟鎹簱璋冩暣鍙傛暟:
銆銆db2_all “db2 connect to testdw; db2 autoconfigure using mem_percent 80 workload_type complex num_stmts 10 tpm 20 admin_priority both num_local_apps 5 num_remote_apps 50 isolation cs apply db and dbm; db2 connect reset;”
銆銆浣犱篃鍙互鍒涘緩涓涓剼鏈琣utoconfigure.db2錛屽瓨鏀懼湪DB2 瀹炰緥鐨勫叡浜洰褰曚笅錛屽亣璁句負/home/db2inst1, 鍐呭濡備笅:
銆銆connect to testdw;
銆銆autoconfigure using mem_percent 80 workload_type complex num_stmts 10 tpm 20 admin_priority both num_local_apps 5 num_remote_apps 50 isolation cs apply db and dbm;
銆銆connect reset;
銆銆鐒跺悗浣跨敤db2_all鍛戒護鍦ㄦ墍鏈夌殑鏁版嵁搴撳垎鍖轟笂鎵ц榪欐潯鍛戒護錛屾垜浠亣璁炬敼鑴氭湰鐨勫瓨鏀劇洰褰曚負/home/db2inst1/autoconfigure.db2:
銆銆db2_all “”db2 -tvf /home/db2inst1/autoconfigure.db2 >>autoconfigure##.log”
銆銆鎵ц瀹屾瘯鍚庯紝浣犲彲浠ラ氳繃autoconfigure*.log鏉ュ療鐪嬭鍛戒護鍦ㄦ瘡涓涓暟鎹簱鍒嗗尯涓婄殑鎵ц鎯呭喌銆傜劧鍚庨噸鏂板惎鍔―B2瀹炰緥錛岃榪欎簺鍙傛暟鐢熸晥銆傝繍琛屼竴浜涘熀鍑嗘祴璇曠殑鏌ヨ璇彞錛屾祴璇旸B2 閰嶇疆鍚戝鐨勯厤緗粨鏋溿?/p>
銆銆浣犱篃鍙互浣跨敤閰嶇疆鍚戝鍥懼艦鐣岄潰鏉ラ厤緗綘鐨勬暟鎹簱銆備綘鍙互閫氳繃鍦ㄦ帶鍒朵腑蹇冧腑閫変腑浣犵殑鏁版嵁搴擄紝鐒跺悗鐐瑰彸閿紝閫夋嫨“閰嶇疆鍚戝”鏉ュ惎鍔ㄩ厤緗悜瀵箋傚鏋滀綘闇瑕佷嬌鐢ㄥ浘褰㈢晫闈㈤厤緗垎鍖烘暟鎹簱錛岃寰楄灝嗙粨鏋滀繚瀛樹負浠誨姟錛屽茍灝嗛厤緗粨鏋滃鍑哄埌涓涓剼鏈枃浠朵腑錛屽/home/db2inst1/autoconfigure.db2銆傝繖鏍蜂綘灝卞彲浠ヤ嬌鐢╠b2_all鍛戒護鏉ユ墽琛岃鑴氭湰閰嶇疆鎵鏈夌殑鏁版嵁搴撳垎鍖轟簡:
銆銆db2_all “”db2 -tvf /home/db2inst1/autoconfigure.db2 >>autoconfigure##.log”
銆銆濡傛灉浣犲DB2闈炲父鐔熸倝錛屼綘鍙互瀵笵B2鑷姩閰嶇疆浜х敓鐨勯厤緗枃浠跺仛閫傚綋鐨勪慨鏀廣傛諱箣錛孌B2閰嶇疆鍚戝鏄竴涓潪甯哥畝鍗曟槗鐢ㄧ殑宸ュ叿錛岃兘澶熷ぇ澶у噺灝慏BA鐨勫伐浣滈噺銆?/p>
鍘熸枃鏉ヨ嚜錛氶洦鏋妧鏈暀紼嬬綉 http://www.fengfly.com
鍘熸枃緗戝潃錛?a >http://www.fengfly.com/plus/view-30426-1.html
銆銆db2batch 鏄竴縐嶅熀鍑嗘祴璇曞伐鍏鳳紝瀹冧互涓緇?SQL 鍜?鎴?XQuery 璇彞浣滀負杈撳叆錛屽姩鎬佸湴鍑嗗璇彞鍜屾弿榪拌鍙ワ紝騫惰繑鍥炰竴涓粨鏋滈泦銆傚彇鍐充簬 db2batch 鍛戒護涓墍浣跨敤鐨勯夐」錛岀粨鏋滈泦鍙互榪斿洖榪欎簺璇彞鐨勬墽琛屾椂闂淬佸叧浜庡唴瀛樹嬌鐢ㄦ儏鍐?渚嬪緙撳啿姹?鐨勬暟鎹簱綆$悊鍣ㄥ揩鐓у拰緙撳瓨淇℃伅銆?/p>
銆銆鍙互鍦ㄤ竴涓?flat 鏂囦歡鎴栨爣鍑嗚緭鍏ヤ腑鎸囧畾瑕佽繍琛屽熀鍑嗘祴璇曠殑璇彞銆傚湪杈撳叆鏂囦歡涓彲浠ヨ緗緢澶氭帶鍒墮夐」銆傛寚瀹氳繖浜涢夐」鐨勮娉曟槸錛?-#SET control_option value 銆備笅闈㈡槸鍖呭惈鎺у埗閫夐」鐨勪竴涓緭鍏ユ枃浠剁殑渚嬪瓙銆傝鑾峰緱鎺у埗閫夐」鐨勫畬鏁村垪琛紝璇峰弬鑰?Information Center銆?/p>
-- db2batch.sql
-- ------------
--#SET PERF_DETAIL 3
--#SET ROWS_OUT 5
-- This query lists employees, the name of their department
-- and the number of activities to which they are assigned for
-- employees who are assigned to more than one activity less than
-- full-time.
--#COMMENT Query 1
select lastname, firstnme,
deptname, count(*) as num_act
from employee, department, emp_act
where employee.workdept = department.deptno and
employee.empno = emp_act.empno and
emp_act.emptime < 1
group by lastname, firstnme, deptname
having count(*) > 2;
--#SET PERF_DETAIL 1
--#SET ROWS_OUT 5
--#COMMENT Query 2
select lastname, firstnme,
deptname, count(*) as num_act
from employee, department, emp_act
where employee.workdept = department.deptno and
employee.empno = emp_act.empno and
emp_act.emptime < 1
group by lastname, firstnme, deptname
having count(*) <= 2;
|
銆銆涓嬮潰鐨勫懡浠ゅ湪 SAMPLE 鏁版嵁搴撲笂璋冪敤鍩哄噯嫻嬭瘯宸ュ叿錛岃緭鍏ユ枃浠朵負 db2batch.sql銆?/p>
銆銆db2batch -d sample -f db2batch.sql
銆銆榪欎釜鍛戒護灝嗚繑鍥炴煡璇㈢殑緇撴灉闆?闄?5 琛?鍜屾煡璇㈡墍鑺辮垂鐨勬椂闂村強 CPU 鏃墮棿銆傚彟澶栬繕榪斿洖鏁版嵁搴撶鐞嗗櫒銆佹暟鎹簱鍜屽簲鐢ㄧ▼搴忓揩鐓с傜敱浜庤緭鍑哄緢澶э紝鍥犳榪欓噷鍙樉紺?db2batch 鍛戒護鐨勬瑕併?/p>
| * Summary Table: Type Number Repetitions Total Time (s) Min Time (s) ... --------- ----------- ----------- -------------- -------------- Statement 1 1 0.052655 0.052655 ... Statement 2 1 0.004518 0.004518 ... ...Max Time (s) Arithmetic Mean Geometric Mean Row(s) Fetched Row(s) Output -------------- --------------- -------------- -------------- ------------- ... 0.052655 0.052655 0.052655 5 5 ... 0.004518 0.004518 0.004518 8 5 * Total Entries: 2 * Total Time: 0.057173 seconds * Minimum Time: 0.004518 seconds * Maximum Time: 0.052655 seconds * Arithmetic Mean Time: 0.028587 seconds * Geometric Mean Time: 0.015424 seconds |
銆銆db2batch 鍛戒護鏀寔寰堝閫夐」銆傝繖閲屽彧鍒楀嚭鍏朵腑涓浜涢夐」錛岃鎮ㄥ榪欎釜宸ュ叿鐨勫▉鍔涙湁鎵浜嗚В銆?/p>
CREATE TABLE EMPDATA
(
EMPNO INT NOT NULL,
SEX CHAR(1) NOT NULL
CONSTRAINT SEXOK
CHECK (SEX IN ('M','F'))
NOT ENFORCED
ENABLE QUERY OPTIMIZATION,
SALARY INT NOT NULL,
CONSTRAINT SALARYOK
CHECK (SALARY BETWEEN 0 AND 100000)
NOT ENFORCED
ENABLE QUERY OPTIMIZATION
)
鏈緥鍖呭惈涓や釜鏇存敼鍒楃害鏉熻涓虹殑璇彞銆傜涓涓夐」鏄?NOT ENFORCED錛屽畠寤鴻 DB2 鍦ㄦ彃鍏ユ垨鏇存柊鏁版嵁鏃朵笉寮哄埗媯鏌ユ湰鍒椼傜浜屼釜閫夐」鏄?ENABLE QUERY OPTIMIZATION錛孌B2 鍦ㄥ璇ヨ〃榪愯 SELECT 璇彞鏃朵嬌鐢ㄥ畠銆傛寚瀹氳鍊兼椂錛孌B2 灝嗗湪浼樺寲 SQL 鏃朵嬌鐢ㄧ害鏉熶腑鐨勪俊鎭?/p>
NOT ENFORCED 閫夐」
鑻ヨ〃鍖呭惈 NOT ENFORCED 閫夐」錛孖NSERT 璇彞鐨勮涓哄彲鑳戒細鍙樺緱寰堝彜鎬傚 EMPDATA 琛ㄨ繍琛屼互涓?SQL 璇彞鏃訛紝涓嶄細浜х敓浠諱綍閿欒錛?/p>
INSERT INTO EMPDATA VALUES
(1, 'M', 54200),
(2, 'F', 28000),
(3, 'M', 21240),
(4, 'F', 89222),
(5, 'Q', 34444),
(6, 'K',132333)
緙栧彿鏄?5 鐨勫憳宸ョ殑鎬у埆鏄劇劧鏈夐棶棰橈紙Q錛夛紝緙栧彿 6 鐨勫憳宸ヤ笉浣嗘у埆鏈夐棶棰橈紝鍚屾椂宸ヨ祫涔熻秴鍑轟簡 SALARY 鍒楃殑闄愬埗銆傚湪榪欎袱縐嶆儏鍐典笅錛孌B2 渚濈劧鍏佽鎻掑叆錛屽洜涓虹害鏉熸槸 NOT ENFORCED銆傝繖鎸囧嚭浜嗕俊鎭害鏉熺殑涓涓杽寮變箣澶勩傛偍蹇呴』紜畾鎵鎻掑叆鎴栬澆鍏ョ殑鏁版嵁絎﹀悎鍦?DB2 涓斁緗殑瀹氫箟銆?/p>
ENABLE QUERY OPTIMIZATION 閫夐」
鍦ㄤ笂涓灞忚繍琛岀殑鎻掑叆涔嬪悗錛屽鏋滃啀瀵?EMPDATA 琛ㄦ墽琛?SELECT 璇彞錛屽叾緇撴灉寰堝彲鑳戒細浠ゆ偍鏇村姞榪鋒儜錛?/p>
SELECT * FROM EMPDATA
WHERE SEX = 'Q';
EMPNO SEX SALARY
----------- --- -----------
0 record(s) selected.
DB2 鍚戞煡璇㈣繑鍥炰簡閿欒鐨勭瓟妗堛傝〃涓彂鐜頒簡 “Q” 鍊鹼紝浣嗚鍒椾笂鐨勭害鏉熷憡璇?DB2 鏈夋晥鍊間粎鍖呮嫭 “M” 鍜?“F”銆侲NABLE QUERY OPTIMIZATION 鍏抽敭瀛楄繕鍏佽 DB2 鍦ㄤ紭鍖?SQL 璇彞鏃朵嬌鐢ㄨ繖涓綰︽潫淇℃伅銆傝嫢榪欏茍闈炴偍鎵甯屾湜鐨勮涓猴紝閭d箞鎮ㄥ氨闇瑕佷嬌鐢?ALTER 鍛戒護鏉ユ洿鏀圭害鏉燂細
ALTER TABLE EMPDATA
ALTER CHECK SEXOK DISABLE QUERY OPTIMIZATION
鐜板湪錛屽啀閲嶆柊鎵ц涔嬪墠鐨勬煡璇€傜粨鏋滃涓嬫墍紺猴細
SELECT * FROM EMPDATA
WHERE SEX = 'Q';
EMPNO SEX SALARY
----------- --- -----------
5 Q 34444
1 record(s) selected.