❶ DB2中建立存儲過程的詳細參數和語法
DECLARE CHOICE2 CURSOR WITH RETURN TO CALLER FOR --聲明游標 CHOICE2
SELECT COMPANYID,DEPTID,SEQID,SUBMITTIME,SUBMITDATE,
B.GRADEDESC HYEAR,PRODUCTID,PRODUCTCODE,PRODUCTDESC,
A.GRADEID,PRICE,SFZDPY,LQUANT,MQUANT,MCQUANT,LCQUANT,
UQUANT,OTHQUANT1,OTHQUANT2,OTHQUANT3,OTHQUANT4,EMP1,EMP2,STATUS,A.REMARK,
DECIMAL(ABS(MCQUANT-MQUANT)/NULLIF(MQUANT,0)*100,10,2)TAG
FROM T_SUPPLY_PPB_HY A
LEFT JOIN T_SUPPLY_GRADATION B ON A.GRADEID=B.GRADEID
WHERE HYEAR=TO_CHAR(P_NF)||P_BN
ORDER BY B.GRADEID,PRODUCTCODE,A.PRICE;
--1.DECIMAL(P,S)十進制數,小數點位置由數字的精度(P)和小數位(S)確定。
-- 精度是數字的總位數,必須小於32。小數位是小數部分數字的位數且總是小於或等於精度值。
-- 如果未指定精度和小數位,則十進制值的預設精度為5,預設小數位為0。
--2.語法:NULLIF ( expression , expression )
-- expression:(常量、列名、函數、子查詢或算術運算符、按位運算符以及字元串運算符的任意組)
-- 如果兩個表達式不相等,NULLIF 返回第一個 expression 的值。如果相等,NULLIF 返回第一個 expression 類型的空值。如果兩個表達式相等且結果表達式為 NULL,NULLIF 等價於 CASE 的搜索函數。
❷ DB2 BufferPool的size參數怎麼設置比較好
1.緩沖區的pagesize大小要和表空間的pagesize大小一樣,db2默認是4kb,你可以根據表空間設置需求,改為8kb,16kb,32kb;
2. 緩沖區的size,默認是自動,不需要去確定總大小。你只需要給一個instance的總大小即可,內存設置一般都是開啟STMM,自動調節;
3. 繁忙的表空間,建議設置單獨的緩沖區,其餘的表空間用默認的緩沖區即可,資料庫創建時會生成一個名為IBMDEFAULTBP的默認緩沖池。
增加緩沖區: create bufferpool size [pagesize 4096] {[not] EXTENDED STORAGE}
修改緩沖區: alter bufferpool size {[not] EXTENDED STORAGE}
刪除緩沖區: drop bufferpool
如果緩沖區大小設置為 -1 表示緩沖池的頁面數目由資料庫配置參數buffpage決定。
注意: 資料庫配置參數buffpage僅對緩沖區大小設置為 -1 的緩沖池起作用。
❸ db2 如何計算表空間和表緩存空間
BufferPool的大小 = 每頁的大小(PageSize) X 頁數(Size)
如下面這一句之中,申請了900000個大小為16384(16K)的頁, 所以BufferPool的總大小是: 900000 * 16K = 14400000K = 14064.5M = 13.73G. 即表緩存的空間是13.73G
CREATE BUFFERPOOL "BP16" SIZE 900000 PAGESIZE 16384 NOT EXTENDED STORAGE;
創建表空間的時候,可以指定PageSize的大小,以及其所佔空間的大小。 對已有的tablespace可以通過Total Pages * PageSize計算表空間的大小。
如下命令可以查看當前的tablespace的狀況:
db2=> List tablespaces show detail
Tablespace ID = 2
Name = USERSPACE1
Type = Database managed space
Contents = All permanent data. Large table space.
State = 0x0000
Detailed explanation:
Normal
Total pages = 8192 //表空間中的頁總數
Useable pages = 8160
Used pages = 2912
Free pages = 5248
High water mark (pages) = 2912
Page size (bytes) = 4096 //表空間的頁面大小。
Extent size (pages) = 32
Prefetch size (pages) = 32
Number of containers = 1
該UserSpace1的實際大小是8192 * 4K = 32M
❹ 在db2 如何計算表空間和表緩存空間有會的么
表空間大小: dms資料庫管理表空間的大小為 pagesize * 所有容器大小總和; sms系統管理表空間的最大空間可以理解成 「容器路徑」 所在文件系統的大小
緩沖池大小: 就是 創建語句中的 size*pagesize
❺ db2中為什麼創建緩沖池
1、緩沖池用於從磁碟讀取表和索引數據時,資料庫管理器分配的用於高速緩存這些表或索引數據的內存區域。每個資料庫至少有一個緩沖池。資料庫中的數據訪問都需要經過緩沖池:讀的數據需要先讀到緩沖池才能提交給應用,寫的數據也是要先寫到緩沖池才能進行I/O。緩沖池時影響資料庫性能最大的參數,所以必須合理地設計緩沖池。
2、創建資料庫時,DB2會自動創建一個名為IBMDEFAULTBP的默認緩沖池,所有的表空間共享該緩沖池。
3、可以使用create
bufferpool、drop
bufferpool和alter
bufferpool語句來創建、刪除和修改緩沖池。SYSCAT.BUFFERPOOLS目錄視圖記錄資料庫中所定義的緩沖池信息。緩沖池默認的大小由BUFFPAGE資料庫配置參數所制定的大小,但是可以通過create
bufferpool命令中指定size關鍵字來覆蓋預設值。足夠的緩沖池大小是資料庫擁有良好性能的關鍵所在,因為它可以減少磁碟IO這一最耗時的操作。大型緩沖池還會對查詢優化產生影響,更多的工作在內存中進行,而無須進行IO操作。
4、臟頁包含已更改但尚未寫入磁碟的數據。將一個已經更改的頁寫入磁碟之後,它就是一個干凈頁,並且可能仍然保留在磁碟中。
❻ 如何 調整DB2資料庫的配置參數應用程序堆棧的大小 APPLHEAPSZ
在日常DB2的維護中,transaction log full是比較常見的問題,日誌空間使用情況也是我們比較重視的問題,那麼如何查看日誌空間使用情況呢?
其實昨天在提到歸檔設置,我們知道DB2 在database級別有幾個參數,如下決定了事物日誌的使用空間大小
Log file size (4KB) (LOGFILSIZ) = 60000
Number of primary log files (LOGPRIMARY) = 16
Number of secondary log files (LOGSECOND) = 200
Changed path to log files (NEWLOGPATH) =
Path to log files = /db2inst1_log01/sample
如此我們可以計算分配給日誌的空間大約是(200+16)*60000*4/1024/1024大約50gb。
如果日誌是單獨的文件系統分區,我們在操作系統上即可看到日誌空間使用情況,對日誌使用情況進行監控,可以看到如下信息:
$ df -g
Filesystem gb blocks Free %Used Iused %Iused Mounted on
/dev/db2inst1_log01 60.00 54.50 10% 1458 1% /db2inst1_log01
這個需要登錄到系統,其實db2pd也是可以看到日誌信息的
db2pd -d sample -logs
database Partition 0 -- database SAMPLE -- Active -- Up 34 days 17:30:12 -- Date 2013-11-26-10.42.49.558342
Logs:
Current Log Number 117123
Pages Written 33697
Cur Commit Disk Log Reads 0
Cur Commit Total Log Reads 0
method 1 Archive Status Success
method 1 next Log to Archive 117123
method 1 First Failure n/a
method 2 Archive Status n/a
method 2 next Log to Archive n/a
method 2 First Failure n/a
Log Chain id 2
Current LSN 0x00001A2DDE649E70
❼ DB2 BUFFERPOOL Size一般設置多大的
8G內存 一般用3~4G做buffer!
改的參數有
MaxAppls=200
LockList=200000
MaxLocks=30
LocktimeOut=100
dlchkTime=50000
然後就是緩沖池的大小,頁為4K和32K的兩個Buffer都設置成了100000
其他就不怎麼設置了!
❽ db2 sql 建表參數 cache 20什麼意思
指定是否在內存中保留一些預分配的值,以便更快地訪問.
cache 20 就是緩存20個值保存在內存中
❾ DB2存儲過程中一些參數的明細解說
IN 是輸入參數
OUT 是輸出參數
建議你看一看sqllib/samples/sqlproc目錄下的 .db2文件,這裡面全是一些例子,把這些看一遍你應該就明白了,不是很復雜
上面說的.db2文件也可能在下面這個目錄中,根據版本或系統不同可能不一樣
SQLLIB\samples\sqlpl
❿ 如何修改db2資料庫日誌緩沖區大小設置
,可以使用下面的命令來更改該參數的值:
db2 -v update database cfg for DB_NAME using LOGBUFSZ 256 db2 -v terminate
2. 調優步驟
通過查看下面代碼中所示各行,使用資料庫快照來確定 LOGBUFSZ參數的值是否為最佳值:
Log pages read = 0 Log pages written = 12644
對於OLTP,一開始以至少256頁為佳;對於OLAP,則以 128 頁為佳。如果常常看到"Log pages read"大於0,那麼可能需要增加這個值。如果發生了回滾,也可能要讀取日誌頁。一般而言,"log pages read"和"log pages written"之比應當盡可能小。理想情況下,"log pages read"的值應為0,而"log pages written"的值應很大。當 log pages read 太多時,意味著需要一個較大的LOGBUFSZ。