![DB2入門培訓(xùn)講義課件_第1頁](http://file4.renrendoc.com/view/86e366065cad36039f9fa5a23da98b08/86e366065cad36039f9fa5a23da98b081.gif)
![DB2入門培訓(xùn)講義課件_第2頁](http://file4.renrendoc.com/view/86e366065cad36039f9fa5a23da98b08/86e366065cad36039f9fa5a23da98b082.gif)
![DB2入門培訓(xùn)講義課件_第3頁](http://file4.renrendoc.com/view/86e366065cad36039f9fa5a23da98b08/86e366065cad36039f9fa5a23da98b083.gif)
![DB2入門培訓(xùn)講義課件_第4頁](http://file4.renrendoc.com/view/86e366065cad36039f9fa5a23da98b08/86e366065cad36039f9fa5a23da98b084.gif)
![DB2入門培訓(xùn)講義課件_第5頁](http://file4.renrendoc.com/view/86e366065cad36039f9fa5a23da98b08/86e366065cad36039f9fa5a23da98b085.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
DB2基本知識介紹DB2基本知識介紹1認(rèn)識DB2認(rèn)識DB2認(rèn)識DB2認(rèn)識DB22DB2的版本–DB2UDB
V7、V8、V9PE(PersonalEdition)EE(EnterpriseEdition)EEE(Enterprise-ExtendedEdition)其他IBM主機(jī)平臺如AS/400上的DB2與DB2UDB有很大不同,老版本的主機(jī)DB2甚至不支持SQL。DB2的版本–DB2UDBV7、V8、V93DB2在招行的應(yīng)用情況AS/400DB2RS/6000–UDBV5V7V8V9數(shù)據(jù)倉庫開發(fā)用:DB2UDBPEV8ForWindowsXP/2KDB2在招行的應(yīng)用情況AS/400DB24DB2UDBvsSQLServer/SybaseSQLServer/Sybase是個(gè)黑盒子DB2是個(gè)相對透明的黑盒子DB2所支持的SQL語句更完整DB2對數(shù)據(jù)倉庫所做的擴(kuò)展支持非常好,如多分區(qū),MDC技術(shù)等。DB2具有平臺優(yōu)勢和體系優(yōu)勢,對高端應(yīng)用有更好的支持。DB2UDBvsSQLServer/Sybase5DB2UDB的CreateTable語句DB2UDB的CreateTable語句6SQLServer的CreateTableCREATETABLE
[
database_name.[owner].
|owner.
]table_name
(
{
<column_definition>
|column_nameAScomputed_column_expression
|<table_constraint>
}[,...n]
)
[ON{filegroup|DEFAULT}]
[TEXTIMAGE_ON{filegroup|DEFAULT}]SQLServer的CreateTable7Windows下的安裝、使用僅安裝客戶端DB2Connect安裝服務(wù)器端DB2PEServer+DB2ConnectRS/6000下的安裝、使用如RS/6000上已安裝DB2,則只要在登錄用戶的profile中引用db2inst1的profile或手工添加相應(yīng)環(huán)境變量,即可使用DB2,前提是DBA已授權(quán)此用戶足夠權(quán)限。DB2安裝、使用Windows下的安裝、使用DB2安裝、使用8配置助手控制中心命令行工具–命令窗口、命令行處理器信息中心開發(fā)中心健康中心使用DB2工具-windows配置助手使用DB2工具-windows9實(shí)例Instance數(shù)據(jù)庫Database容器Container表空間Tablespace擴(kuò)展區(qū)Extend表Table頁P(yáng)age
DB2UDB中一些基本概念實(shí)例InstanceDB2UDB中一些基本概念10ViewSQL存儲過程觸發(fā)器事務(wù)處理索引
DB2UDB中的標(biāo)準(zhǔn)SQL設(shè)施ViewDB2UDB中的標(biāo)準(zhǔn)SQL設(shè)施11模式是一個(gè)標(biāo)識符,如用戶ID,它幫助分組表和其他數(shù)據(jù)庫對象。模式可以歸個(gè)人擁有,擁有者可以控制對數(shù)據(jù)以及其中的對象的存取。
模式也可以是數(shù)據(jù)庫中的對象。它可以在創(chuàng)建模式中的第一個(gè)對象時(shí)自動(dòng)創(chuàng)建。這樣的對象可以是任何可以由模式名限定的對象,如表、索引、視圖、程序包、單值類型、函數(shù)或觸發(fā)器。若要自動(dòng)創(chuàng)建模式,則您必須擁有IMPLICIT_SCHEMA權(quán)限,也可以隱式地創(chuàng)建模式。
模式名用作兩部分對象名的第一部分。創(chuàng)建一個(gè)對象時(shí),可將其分配給特定模式。若不指定模式,則它被分配給缺省模式,缺省模式通常是創(chuàng)建該對象的人員的用戶ID。名稱的第二部分是對象名。例如,名為Smith的用戶可以有一個(gè)名為SMITH.PAYROLL的表。簡單的比喻:假如DB等同于公司,模式相當(dāng)一個(gè)部門名稱。
DB2數(shù)據(jù)庫中的模式名-SCHEMA模式是一個(gè)標(biāo)識符,如用戶ID,它幫助分組表和其他數(shù)據(jù)庫對12DB2–專用存儲器
CURRENTDATE
USER
CURRENTTIMESTAMP
CURRENTTIME
CURRENTTIMEZONECURRENTSERVER
相當(dāng)于SQLServer中的全局變量
DB2–專用存儲器CURRENTDATE13常用的DB2指令CREATE/DROPLIST/DESCRIBEFORCEGET/UPDATEIMPORT/EXPORT/LOADBIND/REBINDREORG/RUNSTATS……常用的DB2指令14
常用的DB2系統(tǒng)指令db2admindb2advidb2batchdb2cc/db2cmddb2cfexp/db2cfimpdb2start/db2stop……常用的DB2系統(tǒng)指令15數(shù)據(jù)庫分區(qū)與表空間數(shù)據(jù)庫分區(qū)與表空間數(shù)據(jù)庫分區(qū)與表空間數(shù)據(jù)庫分區(qū)與表空間16數(shù)據(jù)庫分區(qū)一個(gè)數(shù)據(jù)庫可以建立一個(gè)或多個(gè)分區(qū)(即節(jié)點(diǎn)),數(shù)據(jù)可以根據(jù)表所定義的分區(qū)鍵通過HASH算法存放于各個(gè)分區(qū)中。作為表格的分區(qū)鍵,建議使用高基數(shù)字段(擁有多個(gè)不同的值),這樣可以使數(shù)據(jù)被均勻的分布,可以利用節(jié)點(diǎn)組中所有的節(jié)點(diǎn)資源來執(zhí)行操作。也可以指定多個(gè)字段同時(shí)作為分區(qū)鍵來滿足要求。二、數(shù)據(jù)庫分區(qū)與表空間數(shù)據(jù)庫分區(qū)二、數(shù)據(jù)庫分區(qū)與表空間17表空間的定義 DB2是以表空間來定義數(shù)據(jù)庫中存放數(shù)據(jù)的實(shí)體磁盤空間。 一個(gè)數(shù)據(jù)庫中至少需要具備3個(gè)表空間,分別是:
SYSCATSPACE:存放數(shù)據(jù)庫中的所有系統(tǒng)表 TEMPSPACE1:存放DB2在執(zhí)行SQL指令時(shí)所產(chǎn)生的臨時(shí)數(shù)據(jù)表 USERSPACE1:存放用戶所建立的表二、數(shù)據(jù)庫分區(qū)與表空間表空間的定義二、數(shù)據(jù)庫分區(qū)與表空間18表空間的分類 根據(jù)存儲的數(shù)據(jù)種類區(qū)分
規(guī)則表空間:存放系統(tǒng)表格過用戶建立的表格的數(shù)據(jù)與索引。臨時(shí)表空間:存放在執(zhí)行SQL指令時(shí)產(chǎn)生的臨時(shí)數(shù)據(jù)。大型表空間:存放LONGVARCHAR與LOB類型的字段數(shù)據(jù)。 根據(jù)管理方式區(qū)分?jǐn)?shù)據(jù)庫管理空間:DMS,是由DB2直接格式化與管理的空間系統(tǒng)管理空間:SMS,是由DB2通過操作系統(tǒng)所管理的空間二、數(shù)據(jù)庫分區(qū)與表空間表空間的分類二、數(shù)據(jù)庫分區(qū)與表空間19數(shù)據(jù)庫中的對象三、數(shù)據(jù)庫中的對象數(shù)據(jù)庫中的對象三、數(shù)據(jù)庫中的對象20對象名稱:DB2的所有對象,都有其對象名稱,DB2會將他全部轉(zhuǎn)成大寫,但如果把對象名稱用雙引號括起來,則就區(qū)分大小寫。帶引號的對象名稱也可以包含SQL的保留字,但并不提倡。三、數(shù)據(jù)庫中的對象對象名稱:三、數(shù)據(jù)庫中的對象21表格注意指定表空間和分區(qū)鍵可增加字段,新增或刪除限制可更改VARCHAR類型的長度可用LIKE定義同樣的一張表,但除了字段類型和默認(rèn)值外其他屬性不繼承索引視圖只讀視圖/可更新視圖別名數(shù)據(jù)庫中的對象表格數(shù)據(jù)庫中的對象22限制NOTNULLConstraintsColumnDefaultsUniqueConstraintsCheckConstraintsPrimaryKeyConstraintsForeignKeyConstraints觸發(fā)器前觸發(fā)器/后觸發(fā)器實(shí)例化查詢表(MQT):REFRESHDEFERREDREFRESHIMMEDIATE三、數(shù)據(jù)庫中的對象限制三、數(shù)據(jù)庫中的對象23數(shù)據(jù)的鎖四、數(shù)據(jù)的鎖數(shù)據(jù)的鎖四、數(shù)據(jù)的鎖24LOCKTABLE指令LOCKTABLEDB2.TABLENAMEINSHAREMODELOCKTABLEDB2.TABLENAMEINEXCLUSIVEMODE鎖定的對象數(shù)據(jù)庫/表空間/表格/記錄鎖定的模式(強(qiáng)度)寫鎖定,包括X、W、NW、Z等讀鎖定,包括S、NS、U等四、數(shù)據(jù)的鎖LOCKTABLE指令四、數(shù)據(jù)的鎖25鎖定等待LOCKWAIT鎖定超時(shí)LOCKTIMEOUT鎖定升級LOCKLIST:定義數(shù)據(jù)庫中預(yù)留多少空間存放鎖定信息MAXLOCKS:定義每個(gè)事務(wù)可以使用多少LOCKLIST內(nèi)存區(qū)四、數(shù)據(jù)的鎖鎖定等待四、數(shù)據(jù)的鎖26數(shù)據(jù)庫系統(tǒng)效能五、數(shù)據(jù)庫系統(tǒng)效能數(shù)據(jù)庫系統(tǒng)效能五、數(shù)據(jù)庫系統(tǒng)效能27DB2Explain工具
db2expln執(zhí)行該語句可以查看Package中的SQL指令執(zhí)行計(jì)劃。這是從unix或是doc窗口執(zhí)行的指令,如下:Db2expln-ddbname-cvicky-pcursor-oexpln.out
dynexpln顯示SQL指令的執(zhí)行計(jì)劃,如:dynexpln-dsample-s“sql指令”-oexpln.outDynexpln-dsample-fsql文件-oexpln.out
VisualExplain從控制中心或命令行中心執(zhí)行的explainsql
五、數(shù)據(jù)庫系統(tǒng)效能DB2Explain工具五、數(shù)據(jù)庫系統(tǒng)效能28幾張關(guān)鍵的系統(tǒng)表SYSCAT.TABLESSYSCAT.COLUMNSSYSCAT.COLDISTSYSCAT.INDEXESSYSCAT.TABLESPACESRUNSTATS索引建立索引的方法where條件的索引的順序索引的副作用五、數(shù)據(jù)庫系統(tǒng)效能幾張關(guān)鍵的系統(tǒng)表五、數(shù)據(jù)庫系統(tǒng)效能29五、數(shù)據(jù)庫系統(tǒng)效能REORGMQT(物化視圖)DATAINITIALLYDEFERREDREFRESHDEFERREDREFRESHIMMEDIATEENABLE/DISABLEQUERYOPTIMIZATIONCREATETABLEsch.mqt1AS (selectname,location,salaryfromsch.tab1a,sch.tab2 wherea.dept=b.deptnumb anda.salary>20000 )DATAINITIALLYDEFERREDREFRESHDEFERRED;REFRESHTABLEsch.mqt1;五、數(shù)據(jù)庫系統(tǒng)效能REORG30程序包與BIND嵌入式SQLCLIJDBCSQLJDB2客戶端程序開發(fā)程序包與BINDDB2客戶端程序開發(fā)31實(shí)際應(yīng)用六、實(shí)際應(yīng)用實(shí)際應(yīng)用六、實(shí)際應(yīng)用32SQL存儲過程CREATEPROCEDUREDROPPROCEDUREIN/OUT參數(shù)調(diào)用CALL錯(cuò)誤陷阱循環(huán)語句COMMITWORKBEGIN/END六、實(shí)際應(yīng)用SQL存儲過程六、實(shí)際應(yīng)用33SQL存儲過程C存儲過程/函數(shù)Java存儲過程其他:COBOL、OLE存儲過程SQL存儲過程存儲過程34StoreProcedureBuilderDW:通過一個(gè)C函數(shù)寫成的Function向調(diào)試文件寫日志存儲過程的調(diào)試方法–SQL存儲過程的調(diào)試StoreProcedureBuilder存儲過程的調(diào)試35SQLCODE,SQLSTATE為什么要有ConditionHandling?固定寫法:DeclareSQLSTATECHAR(5)DEFAULT‘00000’;DeclareSQLCODEINTDEFAULT0;必須要這么寫才能得到SQLStatement執(zhí)行情況,且只能寫在存儲過程的開頭(OutermostScope)
為什么?主機(jī)風(fēng)格ConditionHandling
Declarecontinuehandlerforsqlstate‘42774’beginend
SQL存儲過程的異常處理方法–ConditionHandlingSQLCODE,SQLSTATESQL存儲過程的異常處理方法36Createprocdurexx.xx(inxx,outxx)specificspecific-nameLanguageSQLbeginxxxendDB2允許定義同名但參數(shù)不同的存儲過程,因此在刪除存儲過程時(shí)使用specific-name刪除。假如調(diào)用存儲過程的參數(shù)錯(cuò)誤,db2只說找不到對應(yīng)的存儲過程,而不會說參數(shù)錯(cuò)誤。這一點(diǎn)類似面向?qū)ο蟮膮?shù)重載。
DB2SQL存儲過程的specificspecific-nameCreateprocdurexx.xx(inxx,o37靜態(tài)SQL靜態(tài)SQL(staticSQL)語句嵌入到應(yīng)用程序中,在應(yīng)用運(yùn)行之前,所有的嵌入靜態(tài)SQL語句必須經(jīng)過預(yù)編譯并被綁定到程序包(package)中。DB2編譯這些語句時(shí),將基于編譯和綁定這些語句時(shí)的系統(tǒng)表中的統(tǒng)計(jì)信息和數(shù)據(jù)庫參數(shù)為每一個(gè)靜態(tài)SQL語句生成一個(gè)訪問計(jì)劃(accessplan)。這些訪問計(jì)劃在運(yùn)行時(shí)永遠(yuǎn)被使用;這些訪問計(jì)劃不會改變,除非程序包被重新綁定。EXECSQLSELECTd.deptname,count(e.empno),avg(e.salary)
FROMdepartmentd leftouterjoinemployeeeon(e.workdept=d.deptno)
WHEREe.salary>=:salary_baseline
ORe.salaryISNULL
GROUPBYd.deptname;六、實(shí)際應(yīng)用靜態(tài)SQL六、實(shí)際應(yīng)用38動(dòng)態(tài)SQL動(dòng)態(tài)SQL(dynamicSQL)語句在程序運(yùn)行時(shí)被prepare和執(zhí)行。DB2運(yùn)行動(dòng)態(tài)SQL語句時(shí),將基于當(dāng)前的系統(tǒng)表中的統(tǒng)計(jì)信息和數(shù)據(jù)庫參數(shù)為該語句生成一個(gè)訪問計(jì)劃(accessplan)。該訪問計(jì)劃在運(yùn)行時(shí)可能會不斷變化。
stmt=“selectempno,salaryfromemployeewhereempno=?”;EXECSQLPREPAREs1FROM:stmt; EXECSQLEXECUTEs1;六、實(shí)際應(yīng)用動(dòng)態(tài)SQL六、實(shí)際應(yīng)用39六、實(shí)際應(yīng)用MERGESQL–UPSERT對目標(biāo)表進(jìn)行更新插入的過程,當(dāng)存在滿足條件的記錄時(shí)就更新目標(biāo)表,當(dāng)不存在滿足條件的記錄時(shí)就向目標(biāo)表插入新記錄。MERGEINTOaccountASa USING(SELECTid,sum(balance)sum_balancefromtransactionGROUPBYid)ASt ONa.id=t.id WHENMATCHEDTHEN UPDATESET balance=a.balance+t.sum_balance WHENNOTMATCHEDTHEN INSERT(id,balance)=(t.id,t.sum_balance);六、實(shí)際應(yīng)用MERGESQL–UPSERT40六、實(shí)際應(yīng)用權(quán)限設(shè)置過程/函數(shù)
GRANTEXECUTEONPROCEDURE/FUNCTIOINPROCNAME/FUNCNAMETOUSER/GROUPUSERNAME/GROUPNAME;表
GRANTALL/DELETE/UPDATE/SELECT/INSERTONTABLETABNAMETOUSER/GROUPUSERNAME/GROUPNAME;SEQUENCE GRANTUSAGEONSEQUENCESEQNAMETOUSER/GROUPUSERNAME/GROUPNAME;系統(tǒng)權(quán)限查看表
SYSCAT.TABAUTH,SYSCAT.TBSPACEAUTH,SYSCAT.SCHEMAAUTH……六、實(shí)際應(yīng)用權(quán)限設(shè)置41DB2UDB的數(shù)據(jù)類型DB2UDB的數(shù)據(jù)類型42DB2UDB的數(shù)據(jù)類型日期運(yùn)算:如何求出每月末的日期?DB2UDB的數(shù)據(jù)類型日期運(yùn)算:如何求出每月末的日期?43DB2UDB的數(shù)據(jù)類型日期運(yùn)算:values(date(‘2006-01-31’)+1month)values(date(‘2006-01-31’)+1year)數(shù)值運(yùn)算decimal的小數(shù)位Null值任何有Null參與的表達(dá)式,結(jié)果都是Null特別注意打印中間結(jié)果或調(diào)試語句時(shí)
DB2UDB的數(shù)據(jù)類型日期運(yùn)算:44存儲過程-臨時(shí)表的使用必須要先定義系統(tǒng)臨時(shí)表空間或用戶臨時(shí)表空間才能使用臨時(shí)表定義臨時(shí)表不能使用模式名,其模式名固定為session。使用完成后最好把臨時(shí)表Drop掉。存儲過程-臨時(shí)表的使用必須要先定義系統(tǒng)臨時(shí)表空間或用戶臨時(shí)表45Getdiagnostics使用說明SQLServer取到SQL語句所影響的行數(shù)的方式?(@@rowcount)DB2取到SQL語句所影響的行數(shù)的方式–GetdiagnosticsGETDIAGNOSTICSv_Iupdate_Cnt=ROW_COUNT;
Getdiagnostics使用說明SQLServe46完整的存儲過程實(shí)例講解完整的存儲47Question?Question?48演講完畢,謝謝觀看!演講完畢,謝謝觀看!49DB2基本知識介紹DB2基本知識介紹50認(rèn)識DB2認(rèn)識DB2認(rèn)識DB2認(rèn)識DB251DB2的版本–DB2UDB
V7、V8、V9PE(PersonalEdition)EE(EnterpriseEdition)EEE(Enterprise-ExtendedEdition)其他IBM主機(jī)平臺如AS/400上的DB2與DB2UDB有很大不同,老版本的主機(jī)DB2甚至不支持SQL。DB2的版本–DB2UDBV7、V8、V952DB2在招行的應(yīng)用情況AS/400DB2RS/6000–UDBV5V7V8V9數(shù)據(jù)倉庫開發(fā)用:DB2UDBPEV8ForWindowsXP/2KDB2在招行的應(yīng)用情況AS/400DB253DB2UDBvsSQLServer/SybaseSQLServer/Sybase是個(gè)黑盒子DB2是個(gè)相對透明的黑盒子DB2所支持的SQL語句更完整DB2對數(shù)據(jù)倉庫所做的擴(kuò)展支持非常好,如多分區(qū),MDC技術(shù)等。DB2具有平臺優(yōu)勢和體系優(yōu)勢,對高端應(yīng)用有更好的支持。DB2UDBvsSQLServer/Sybase54DB2UDB的CreateTable語句DB2UDB的CreateTable語句55SQLServer的CreateTableCREATETABLE
[
database_name.[owner].
|owner.
]table_name
(
{
<column_definition>
|column_nameAScomputed_column_expression
|<table_constraint>
}[,...n]
)
[ON{filegroup|DEFAULT}]
[TEXTIMAGE_ON{filegroup|DEFAULT}]SQLServer的CreateTable56Windows下的安裝、使用僅安裝客戶端DB2Connect安裝服務(wù)器端DB2PEServer+DB2ConnectRS/6000下的安裝、使用如RS/6000上已安裝DB2,則只要在登錄用戶的profile中引用db2inst1的profile或手工添加相應(yīng)環(huán)境變量,即可使用DB2,前提是DBA已授權(quán)此用戶足夠權(quán)限。DB2安裝、使用Windows下的安裝、使用DB2安裝、使用57配置助手控制中心命令行工具–命令窗口、命令行處理器信息中心開發(fā)中心健康中心使用DB2工具-windows配置助手使用DB2工具-windows58實(shí)例Instance數(shù)據(jù)庫Database容器Container表空間Tablespace擴(kuò)展區(qū)Extend表Table頁P(yáng)age
DB2UDB中一些基本概念實(shí)例InstanceDB2UDB中一些基本概念59ViewSQL存儲過程觸發(fā)器事務(wù)處理索引
DB2UDB中的標(biāo)準(zhǔn)SQL設(shè)施ViewDB2UDB中的標(biāo)準(zhǔn)SQL設(shè)施60模式是一個(gè)標(biāo)識符,如用戶ID,它幫助分組表和其他數(shù)據(jù)庫對象。模式可以歸個(gè)人擁有,擁有者可以控制對數(shù)據(jù)以及其中的對象的存取。
模式也可以是數(shù)據(jù)庫中的對象。它可以在創(chuàng)建模式中的第一個(gè)對象時(shí)自動(dòng)創(chuàng)建。這樣的對象可以是任何可以由模式名限定的對象,如表、索引、視圖、程序包、單值類型、函數(shù)或觸發(fā)器。若要自動(dòng)創(chuàng)建模式,則您必須擁有IMPLICIT_SCHEMA權(quán)限,也可以隱式地創(chuàng)建模式。
模式名用作兩部分對象名的第一部分。創(chuàng)建一個(gè)對象時(shí),可將其分配給特定模式。若不指定模式,則它被分配給缺省模式,缺省模式通常是創(chuàng)建該對象的人員的用戶ID。名稱的第二部分是對象名。例如,名為Smith的用戶可以有一個(gè)名為SMITH.PAYROLL的表。簡單的比喻:假如DB等同于公司,模式相當(dāng)一個(gè)部門名稱。
DB2數(shù)據(jù)庫中的模式名-SCHEMA模式是一個(gè)標(biāo)識符,如用戶ID,它幫助分組表和其他數(shù)據(jù)庫對61DB2–專用存儲器
CURRENTDATE
USER
CURRENTTIMESTAMP
CURRENTTIME
CURRENTTIMEZONECURRENTSERVER
相當(dāng)于SQLServer中的全局變量
DB2–專用存儲器CURRENTDATE62常用的DB2指令CREATE/DROPLIST/DESCRIBEFORCEGET/UPDATEIMPORT/EXPORT/LOADBIND/REBINDREORG/RUNSTATS……常用的DB2指令63
常用的DB2系統(tǒng)指令db2admindb2advidb2batchdb2cc/db2cmddb2cfexp/db2cfimpdb2start/db2stop……常用的DB2系統(tǒng)指令64數(shù)據(jù)庫分區(qū)與表空間數(shù)據(jù)庫分區(qū)與表空間數(shù)據(jù)庫分區(qū)與表空間數(shù)據(jù)庫分區(qū)與表空間65數(shù)據(jù)庫分區(qū)一個(gè)數(shù)據(jù)庫可以建立一個(gè)或多個(gè)分區(qū)(即節(jié)點(diǎn)),數(shù)據(jù)可以根據(jù)表所定義的分區(qū)鍵通過HASH算法存放于各個(gè)分區(qū)中。作為表格的分區(qū)鍵,建議使用高基數(shù)字段(擁有多個(gè)不同的值),這樣可以使數(shù)據(jù)被均勻的分布,可以利用節(jié)點(diǎn)組中所有的節(jié)點(diǎn)資源來執(zhí)行操作。也可以指定多個(gè)字段同時(shí)作為分區(qū)鍵來滿足要求。二、數(shù)據(jù)庫分區(qū)與表空間數(shù)據(jù)庫分區(qū)二、數(shù)據(jù)庫分區(qū)與表空間66表空間的定義 DB2是以表空間來定義數(shù)據(jù)庫中存放數(shù)據(jù)的實(shí)體磁盤空間。 一個(gè)數(shù)據(jù)庫中至少需要具備3個(gè)表空間,分別是:
SYSCATSPACE:存放數(shù)據(jù)庫中的所有系統(tǒng)表 TEMPSPACE1:存放DB2在執(zhí)行SQL指令時(shí)所產(chǎn)生的臨時(shí)數(shù)據(jù)表 USERSPACE1:存放用戶所建立的表二、數(shù)據(jù)庫分區(qū)與表空間表空間的定義二、數(shù)據(jù)庫分區(qū)與表空間67表空間的分類 根據(jù)存儲的數(shù)據(jù)種類區(qū)分
規(guī)則表空間:存放系統(tǒng)表格過用戶建立的表格的數(shù)據(jù)與索引。臨時(shí)表空間:存放在執(zhí)行SQL指令時(shí)產(chǎn)生的臨時(shí)數(shù)據(jù)。大型表空間:存放LONGVARCHAR與LOB類型的字段數(shù)據(jù)。 根據(jù)管理方式區(qū)分?jǐn)?shù)據(jù)庫管理空間:DMS,是由DB2直接格式化與管理的空間系統(tǒng)管理空間:SMS,是由DB2通過操作系統(tǒng)所管理的空間二、數(shù)據(jù)庫分區(qū)與表空間表空間的分類二、數(shù)據(jù)庫分區(qū)與表空間68數(shù)據(jù)庫中的對象三、數(shù)據(jù)庫中的對象數(shù)據(jù)庫中的對象三、數(shù)據(jù)庫中的對象69對象名稱:DB2的所有對象,都有其對象名稱,DB2會將他全部轉(zhuǎn)成大寫,但如果把對象名稱用雙引號括起來,則就區(qū)分大小寫。帶引號的對象名稱也可以包含SQL的保留字,但并不提倡。三、數(shù)據(jù)庫中的對象對象名稱:三、數(shù)據(jù)庫中的對象70表格注意指定表空間和分區(qū)鍵可增加字段,新增或刪除限制可更改VARCHAR類型的長度可用LIKE定義同樣的一張表,但除了字段類型和默認(rèn)值外其他屬性不繼承索引視圖只讀視圖/可更新視圖別名數(shù)據(jù)庫中的對象表格數(shù)據(jù)庫中的對象71限制NOTNULLConstraintsColumnDefaultsUniqueConstraintsCheckConstraintsPrimaryKeyConstraintsForeignKeyConstraints觸發(fā)器前觸發(fā)器/后觸發(fā)器實(shí)例化查詢表(MQT):REFRESHDEFERREDREFRESHIMMEDIATE三、數(shù)據(jù)庫中的對象限制三、數(shù)據(jù)庫中的對象72數(shù)據(jù)的鎖四、數(shù)據(jù)的鎖數(shù)據(jù)的鎖四、數(shù)據(jù)的鎖73LOCKTABLE指令LOCKTABLEDB2.TABLENAMEINSHAREMODELOCKTABLEDB2.TABLENAMEINEXCLUSIVEMODE鎖定的對象數(shù)據(jù)庫/表空間/表格/記錄鎖定的模式(強(qiáng)度)寫鎖定,包括X、W、NW、Z等讀鎖定,包括S、NS、U等四、數(shù)據(jù)的鎖LOCKTABLE指令四、數(shù)據(jù)的鎖74鎖定等待LOCKWAIT鎖定超時(shí)LOCKTIMEOUT鎖定升級LOCKLIST:定義數(shù)據(jù)庫中預(yù)留多少空間存放鎖定信息MAXLOCKS:定義每個(gè)事務(wù)可以使用多少LOCKLIST內(nèi)存區(qū)四、數(shù)據(jù)的鎖鎖定等待四、數(shù)據(jù)的鎖75數(shù)據(jù)庫系統(tǒng)效能五、數(shù)據(jù)庫系統(tǒng)效能數(shù)據(jù)庫系統(tǒng)效能五、數(shù)據(jù)庫系統(tǒng)效能76DB2Explain工具
db2expln執(zhí)行該語句可以查看Package中的SQL指令執(zhí)行計(jì)劃。這是從unix或是doc窗口執(zhí)行的指令,如下:Db2expln-ddbname-cvicky-pcursor-oexpln.out
dynexpln顯示SQL指令的執(zhí)行計(jì)劃,如:dynexpln-dsample-s“sql指令”-oexpln.outDynexpln-dsample-fsql文件-oexpln.out
VisualExplain從控制中心或命令行中心執(zhí)行的explainsql
五、數(shù)據(jù)庫系統(tǒng)效能DB2Explain工具五、數(shù)據(jù)庫系統(tǒng)效能77幾張關(guān)鍵的系統(tǒng)表SYSCAT.TABLESSYSCAT.COLUMNSSYSCAT.COLDISTSYSCAT.INDEXESSYSCAT.TABLESPACESRUNSTATS索引建立索引的方法where條件的索引的順序索引的副作用五、數(shù)據(jù)庫系統(tǒng)效能幾張關(guān)鍵的系統(tǒng)表五、數(shù)據(jù)庫系統(tǒng)效能78五、數(shù)據(jù)庫系統(tǒng)效能REORGMQT(物化視圖)DATAINITIALLYDEFERREDREFRESHDEFERREDREFRESHIMMEDIATEENABLE/DISABLEQUERYOPTIMIZATIONCREATETABLEsch.mqt1AS (selectname,location,salaryfromsch.tab1a,sch.tab2 wherea.dept=b.deptnumb anda.salary>20000 )DATAINITIALLYDEFERREDREFRESHDEFERRED;REFRESHTABLEsch.mqt1;五、數(shù)據(jù)庫系統(tǒng)效能REORG79程序包與BIND嵌入式SQLCLIJDBCSQLJDB2客戶端程序開發(fā)程序包與BINDDB2客戶端程序開發(fā)80實(shí)際應(yīng)用六、實(shí)際應(yīng)用實(shí)際應(yīng)用六、實(shí)際應(yīng)用81SQL存儲過程CREATEPROCEDUREDROPPROCEDUREIN/OUT參數(shù)調(diào)用CALL錯(cuò)誤陷阱循環(huán)語句COMMITWORKBEGIN/END六、實(shí)際應(yīng)用SQL存儲過程六、實(shí)際應(yīng)用82SQL存儲過程C存儲過程/函數(shù)Java存儲過程其他:COBOL、OLE存儲過程SQL存儲過程存儲過程83StoreProcedureBuilderDW:通過一個(gè)C函數(shù)寫成的Function向調(diào)試文件寫日志存儲過程的調(diào)試方法–SQL存儲過程的調(diào)試StoreProcedureBuilder存儲過程的調(diào)試84SQLCODE,SQLSTATE為什么要有ConditionHandling?固定寫法:DeclareSQLSTATECHAR(5)DEFAULT‘00000’;DeclareSQLCODEINTDEFAULT0;必須要這么寫才能得到SQLStatement執(zhí)行情況,且只能寫在存儲過程的開頭(OutermostScope)
為什么?主機(jī)風(fēng)格ConditionHandling
Declarecontinuehandlerforsqlstate‘42774’beginend
SQL存儲過程的異常處理方法–ConditionHandlingSQLCODE,SQLSTATESQL存儲過程的異常處理方法85Createprocdurexx.xx(inxx,outxx)specificspecific-nameLanguageSQLbeginxxxendDB2允許定義同名但參數(shù)不同的存儲過程,因此在刪除存儲過程時(shí)使用specific-name刪除。假如調(diào)用存儲過程的參數(shù)錯(cuò)誤,db2只說找不到對應(yīng)的存儲過程,而不會說參數(shù)錯(cuò)誤。這一點(diǎn)類似面向?qū)ο蟮膮?shù)重載。
DB2SQL存儲過程的specificspecific-nameCreateprocdurexx.xx(inxx,o86靜態(tài)SQL靜態(tài)SQL(staticSQL)語句嵌入到應(yīng)用程序中,在應(yīng)用運(yùn)行之前,所有的嵌入靜態(tài)SQL語句必須經(jīng)過預(yù)編譯并被綁定到程序包(package)中。DB2編譯這些語句時(shí),將基于編譯和綁定這些語句時(shí)的系統(tǒng)表中的統(tǒng)計(jì)信息和數(shù)據(jù)庫參數(shù)為每一個(gè)靜態(tài)SQL語句生成一個(gè)訪問計(jì)劃(accessplan)。這些訪問計(jì)劃在運(yùn)行時(shí)永遠(yuǎn)被使用;這些訪問計(jì)劃不會改變,除非程序包被重新綁定。EXECSQLSELECTd.deptname,count(e.empno),avg(e.salary)
FROMdepartmentd leftouterjoinemployeeeon(e.workdept=d.deptno)
WHEREe.salary>=:salary_baseline
ORe.salaryISNULL
GROUPBYd.deptname;六、實(shí)際應(yīng)用靜態(tài)SQL六、實(shí)際應(yīng)用87動(dòng)態(tài)SQL動(dòng)態(tài)SQL(dynamicSQL)語句在程序運(yùn)行時(shí)被prepare和執(zhí)行。DB2運(yùn)行動(dòng)態(tài)SQL語句時(shí),將基于當(dāng)前的系統(tǒng)表中的統(tǒng)計(jì)信息和數(shù)據(jù)庫參數(shù)為該語句生成一個(gè)訪問計(jì)劃(accessplan)。該訪問計(jì)劃在運(yùn)行時(shí)可能會不斷變化。
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 遼河油田施工合同
- 短期翻譯服務(wù)合同
- 有關(guān)私了賠償協(xié)議書
- 餐飲業(yè)食品安全及服務(wù)質(zhì)量保障合同
- 幼兒園接送免責(zé)協(xié)議書
- 采購預(yù)付款合同
- 高端機(jī)械裝備研發(fā)項(xiàng)目合作框架協(xié)議
- 中央空調(diào)安裝施工合同
- 企業(yè)采購智能化設(shè)備合同
- 合格供應(yīng)商框架協(xié)議
- 鋼圍堰監(jiān)測方案
- 人口資源與環(huán)境經(jīng)濟(jì)學(xué)課件
- GB/T 34881-2017產(chǎn)品幾何技術(shù)規(guī)范(GPS)坐標(biāo)測量機(jī)的檢測不確定度評估指南
- GB/T 13810-2007外科植入物用鈦及鈦合金加工材
- GB/T 13277.2-2015壓縮空氣第2部分:懸浮油含量測量方法
- DB4451-T 1-2021《地理標(biāo)志產(chǎn)品+鳳凰單叢(樅)茶》-(高清現(xiàn)行)
- 硫酸銨廢水MVR蒸發(fā)結(jié)晶
- 預(yù)防艾滋病、梅毒和乙肝母嬰傳播相關(guān)報(bào)表上報(bào)流程及要求
- 開學(xué)第一課(七下數(shù)學(xué))
- 完整word版,“呂氏八字命理學(xué)”高級理論
- 飛達(dá)及其輔助機(jī)構(gòu)
評論
0/150
提交評論