青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

Prayer

在一般中尋求卓越
posts - 1256, comments - 190, trackbacks - 0, articles - 0
  C++博客 :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理
統(tǒng)計(jì)值更新--runstats
調(diào)整Buffer pool
調(diào)整日志緩沖區(qū)大小
應(yīng)用程序堆大小
排序堆大小和排序堆值
代理程序的數(shù)目

活動應(yīng)用程序的最大數(shù)目
頁清除程序的數(shù)目
I/O服務(wù)器的數(shù)目
編入組的提交數(shù)目


統(tǒng)計(jì)信息更新

當(dāng)對SQL 查詢進(jìn)行優(yōu)化時(shí),SQL 編譯器所做出的決定會受到優(yōu)化器
的數(shù)據(jù)庫內(nèi)容模型的重大影響。
優(yōu)化器使用該數(shù)據(jù)模型來估計(jì)可以用于解決某個(gè)特定查詢的其它存取
路徑的成本。
數(shù)據(jù)模型中的關(guān)鍵元素是一組統(tǒng)計(jì)信息,該統(tǒng)計(jì)信息收集了有關(guān)數(shù)據(jù)
庫中所包含的數(shù)據(jù)和系統(tǒng)目錄表中所存儲的數(shù)據(jù)的信息。這包括表、
別名(nickname)、索引、列和用戶定義的函數(shù)(UDF)的統(tǒng)計(jì)信
息。
優(yōu)化器根據(jù)這些統(tǒng)計(jì)信息決定最有效方法訪問數(shù)據(jù)的方法,數(shù)據(jù)統(tǒng)計(jì)
信息中的變化會引起對存取方案的選擇發(fā)生變化。
適時(shí)更新數(shù)據(jù)統(tǒng)計(jì)信息。

 

統(tǒng)計(jì)信息更新

適時(shí)更新數(shù)據(jù)統(tǒng)計(jì)信息。
–當(dāng)向表裝入數(shù)據(jù)并創(chuàng)建了合適的索引時(shí)。
–當(dāng)用REORG 實(shí)用程序重新組織表時(shí)。
–當(dāng)存在大量影響表及其索引的更新、刪除和插入操作時(shí)。(此處的“大量”可能意味
著10% 到20% 的表和索引數(shù)據(jù)都受到了影響。)
–在綁定性能至關(guān)重要的應(yīng)用程序之前。
–當(dāng)預(yù)取數(shù)量發(fā)生變化時(shí)。
只有當(dāng)進(jìn)行顯式的請求時(shí),對象的統(tǒng)計(jì)信息才會在系統(tǒng)目錄表中被更新。更新
部分或全部統(tǒng)計(jì)信息方法:
–使用RUNSTATS(運(yùn)行統(tǒng)計(jì)信息,run statistics)實(shí)用程序。
–使用“reorgchk update statistics”命令。
在使用RUNSTATS 之后需要重新綁定使用靜態(tài)SQL 的應(yīng)用程序,使查詢優(yōu)
化器就可以選擇新統(tǒng)計(jì)信息所給出的最佳存取方案。但是,對于使用動態(tài)SQL
的應(yīng)用程序而言,沒必要進(jìn)行重新綁定,因?yàn)檎Z句的優(yōu)化是根據(jù)統(tǒng)計(jì)信息在運(yùn)
行時(shí)進(jìn)行的。


reorgchk update statistics

當(dāng)您不完全知道所有表名或表名實(shí)在太多時(shí),進(jìn)行RUNSTATS 的最簡單方
法就是使用“db2 reorgchk update statistics”命令。


正確的腳本如下:

db2 -v connect to DB_NAME

db2 -v "select tbname, nleaf, nlevels, stats_timefrom sysibm.sysindexes“

db2 -v reorgchk update statistics on table all

db2 -v "select tbname, nleaf, nlevels, stats_timefrom sysibm.sysindexes“

db2 -v terminate


Runstats實(shí)用程序

如果您知道表名并且想避免對大量表運(yùn)行RUNSTATS 實(shí)用程序(因
為這樣做可能要花很長時(shí)間),那么一次對一張表進(jìn)行RUNSTATS
更為可取。
命令如下:


db2 -v runstats on table TAB_NAME and indexes all

這個(gè)命令將收集該表及其所有索引(基本級別)的統(tǒng)計(jì)信息。
要查看是否對數(shù)據(jù)庫執(zhí)行了RUNSTATS,一種快捷方法便是查詢一
些系統(tǒng)目錄表。例如:


db2 -v "select tbname, nleaf, nlevels, stats_timefrom
sysibm.sysindexes"


調(diào)整Bufferpool大小

緩沖池是內(nèi)存中的一塊存儲區(qū)域,用于臨時(shí)讀入和更改數(shù)據(jù)頁(含表行或索引
項(xiàng))。緩沖池的用途是為了提高數(shù)據(jù)庫系統(tǒng)的性能。
缺省情況下,應(yīng)用程序使用緩沖池IBMDEFAULTBP,它是在創(chuàng)建數(shù)據(jù)庫時(shí)創(chuàng)
建的。當(dāng)SYSCAT.BUFFERPOOLS 目錄表中該緩沖池的NPAGES 值為-1
時(shí),DB2 數(shù)據(jù)庫配置參數(shù)BUFFPAGE 控制著緩沖池的大小。
可以增大所有數(shù)據(jù)庫的BUFFPAGE 值。


db2 -v connect to DB_NAME

db2 -v select * from syscat.bufferpools

db2 -v alter bufferpool IBMDEFAULTBP size -1

db2 -v connect reset

db2 -v update db cfg for dbname using BUFFPAGE bigger_value

db2 -v terminate

要確定數(shù)據(jù)庫的緩沖池大小是否由BUFFPAGE 參數(shù)所決定,運(yùn)行:


db2 -v connect to DB_NAME

db2 -v SELECT * from SYSCAT.BUFFERPOOLS

db2 -v connect reset

db2 -v terminate

檢查結(jié)果。如果每個(gè)緩沖池都有一個(gè)為“-1”的NPAGES 值,那么緩沖池大小是
由數(shù)據(jù)庫配置中的BUFFPAGE 參數(shù)控制的。


調(diào)整Bufferpool大小(續(xù))

要確定緩沖池大小是否足夠大,請?jiān)谶\(yùn)行應(yīng)用程序時(shí)收集數(shù)據(jù)庫和/
或緩沖池的快照。下面的腳本為您提供這些所需的信息:


db2 -v update monitor switches using bufferpool on

db2 -v get monitor switches

--運(yùn)行程序–

db2 -v get snapshot for all databases > snap.out

db2 -v get snapshot for dbm>> snap.out

db2 -v get snapshot for all bufferpools>> snap.out

db2 -v reset monitor all

db2 -v terminate

請確保您在斷開數(shù)據(jù)庫連接之前發(fā)出“db2 -v get snapshot”,否則,該
數(shù)據(jù)庫停止運(yùn)行,同時(shí)所有快照統(tǒng)計(jì)信息將會丟失。

 

調(diào)整Bufferpool大小(續(xù))

在數(shù)據(jù)庫快照或緩沖池快照的快照輸出中,查找下列“logical reads”和“physical
reads”,這樣就可以計(jì)算出緩沖池命中率,它可以幫助您調(diào)優(yōu)緩沖池:


--Related lines from a sample of bufferpoolsnapshots –

Buffer pool data logical reads = 702033

Buffer pool data physical reads = 0

Buffer pool data writes = 414

Buffer pool index logical reads = 168255

Buffer pool index physical reads = 0

按如下計(jì)算緩沖池命中率:


(1 -((buffer pool data physical reads + buffer pool index physical reads)
/(buffer pool data logical reads + pool index logical reads))) *100%

這個(gè)計(jì)算考慮了緩沖池高速緩存的所有頁(索引和數(shù)據(jù))。理想情況下,該比
率應(yīng)當(dāng)超過95%,并盡可能接近100%。

要提高緩沖池命中率,請嘗試下面這些方法:
–增加緩沖池大小。如果您的機(jī)器上有足夠大的內(nèi)存,請將BUFFPAGE 設(shè)置成
40000 個(gè)頁(160 MB),或者等于機(jī)器總內(nèi)存的10%。對于大型OLTP 數(shù)據(jù)庫,在
保持系統(tǒng)穩(wěn)定的同時(shí)為緩沖池留出盡可能多的內(nèi)存。可以先嘗試使用1.6 GB 的內(nèi)
存,然后嘗試用更多內(nèi)存。
–考慮分配多個(gè)緩沖池,如果可能的話,為每個(gè)經(jīng)常被訪問的大表所屬的表空間分配一
個(gè)緩沖池,為一組小表分配一個(gè)緩沖池,然后嘗試一下使用不同大小的緩沖池以查看
哪種組合會提供最佳性能。表空間的頁大小與緩沖池的頁大小一樣。

 

調(diào)整Bufferpool大小(續(xù))

create db testdb

--using codesetiso8859-1 territory US

on /data/misserver/dbimages

collate using identity

dft_extent_sz8

catalog tablespace managed by database

using (device '/dev/rds01' 131072,

device '/dev/rds02' 131072,

device '/dev/rds03' 131072)

extentsize 32 prefetchsize 96

;

connect to testdb;

create bufferpool databp size 25000 pagesize 32768;

create bufferpool bp8k size 16 pagesize 8192;

disconnect all;


調(diào)整Bufferpool大小(續(xù))

create tablespace datatblsp pagesize 32K

managed by database

using (

device '/dev/rdata0' 30720M ,

device '/dev/rdata1' 30720M ,

)

extentsize 8 prefetchsize 48

bufferpool databp;

 

create tablespace idxtblsp pagesize 32K

managed by database

using (

device '/dev/ridxa0' 6144M ,

device '/dev/ridxa1' 6144M ,

)

extentsize 8 prefetchsize 48

bufferpool databp;


調(diào)整日志緩沖區(qū)

LOGBUFSZ 是一個(gè)數(shù)據(jù)庫配置參數(shù)。它是用于日志緩沖區(qū)的參數(shù)。
它允許您指定數(shù)據(jù)庫共享內(nèi)存的大小以用作在將日志記錄寫到磁盤之
前這些記錄的緩沖區(qū)。
當(dāng)下列事件之一發(fā)生時(shí)會將日志記錄寫到磁盤:
–事務(wù)提交。
–日志緩沖區(qū)已滿。
–其它某個(gè)內(nèi)部數(shù)據(jù)庫管理器事件發(fā)生時(shí)。
將日志記錄存在緩沖區(qū)將產(chǎn)生更加有效的日志文件I/O。如果對專用
的日志磁盤有相當(dāng)多的讀操作,或者希望有較高的磁盤利用率,那么
可以增加這個(gè)緩沖區(qū)的大小。
當(dāng)增加這個(gè)參數(shù)的值時(shí),也要考慮DBHEAP 參數(shù),日志緩沖區(qū)使用
的空間由DBHEAP 參數(shù)所控制。

 

調(diào)整日志緩沖區(qū)

LOGBUFSZ 是一個(gè)數(shù)據(jù)庫配置參數(shù)。它是用于日志緩沖區(qū)的參數(shù)。
它允許您指定數(shù)據(jù)庫共享內(nèi)存的大小以用作在將日志記錄寫到磁盤之
前這些記錄的緩沖區(qū)。
當(dāng)下列事件之一發(fā)生時(shí)會將日志記錄寫到磁盤:
–事務(wù)提交。
–日志緩沖區(qū)已滿。
–其它某個(gè)內(nèi)部數(shù)據(jù)庫管理器事件發(fā)生時(shí)。
將日志記錄存在緩沖區(qū)將產(chǎn)生更加有效的日志文件I/O。如果對專用
的日志磁盤有相當(dāng)多的讀操作,或者希望有較高的磁盤利用率,那么
可以增加這個(gè)緩沖區(qū)的大小。
當(dāng)增加這個(gè)參數(shù)的值時(shí),也要考慮DBHEAP 參數(shù),日志緩沖區(qū)使用
的空間由DBHEAP 參數(shù)所控制。

 

調(diào)整日志緩沖區(qū)(續(xù))

LOGBUFSZ的缺省值為8(4KB 頁),這對于OLTP 數(shù)據(jù)庫而言通
常不夠大。LOGBUFSZ 的最佳值為128 個(gè)或256 個(gè)4KB 頁。
可以使用下面這個(gè)命令來更改該參數(shù)值:


db2 -v update database cfg for DB_NAME using LOGBUFSZ 256

db2 -v terminate

使用數(shù)據(jù)庫快照來確定LOGBUFSZ 參數(shù)的值是否為最佳值:


Log pages read = 0

Log pages written = 12644

一般而言,“log pages read”和“log pages written”之比應(yīng)當(dāng)盡可能
小。理想情況下,“log pages read”的值應(yīng)為0,而“log pages written”
的值應(yīng)很大。當(dāng)log pages read 太多時(shí),意味著需要一個(gè)較大的
LOGBUFSZ。

 

調(diào)整應(yīng)用程序堆大小(APPHEAPSZ)

APPHEAPSZ 是一個(gè)數(shù)據(jù)庫配置參數(shù),它定義了代表某個(gè)特定代理程
序或子代理程序的數(shù)據(jù)庫管理器可以使用的私有內(nèi)存頁數(shù)。
在為應(yīng)用程序初始化代理程序或子代理程序時(shí)分配堆。
分配的堆大小是處理給予代理程序或子代理程序的請求所需的最小
值。當(dāng)代理程序或子代理程序需要更多的堆空間以處理較大的SQL
語句時(shí),數(shù)據(jù)庫管理器將按照需要分配內(nèi)存,所分配的內(nèi)存大小最大
可達(dá)到該參數(shù)所指定的最大值。
缺省值是128 個(gè)4KB 頁,更改命令是:


db2 -v update db cfg for DB_NAME using applheapsz 256

db2 -v terminate

當(dāng)應(yīng)用程序接收到一個(gè)表明應(yīng)用程序堆中存儲空間不夠的錯(cuò)誤時(shí),應(yīng)
該增加APPHEAPSZ 的值。

 

排序堆大小(SORTHEAP)和排序堆閾值(SHEAPTHRES)

SORTHEAP 是一個(gè)數(shù)據(jù)庫配置參數(shù),它定義了私有排序所使用的私有內(nèi)存頁的
最大數(shù)目,或共享排序所使用的共享內(nèi)存頁的最大數(shù)目。如果排序是私有排
序,那么該參數(shù)影響代理程序私有內(nèi)存。如果排序是共享排序,那么該參數(shù)影
響數(shù)據(jù)庫的共享內(nèi)存。每個(gè)排序都有單獨(dú)的由數(shù)據(jù)庫管理器按需分配的排序
堆,在排序堆中對數(shù)據(jù)進(jìn)行排序。如果由優(yōu)化器來指導(dǎo)排序堆大小的分配,那
么用優(yōu)化器提供的信息來分配的排序堆的大小要小于由該參數(shù)所指定的排序堆
大小。
SHEAPTHRES 是一個(gè)數(shù)據(jù)庫管理器配置參數(shù)。私有和共享排序所使用內(nèi)存的
來源不一樣。共享排序內(nèi)存區(qū)的大小是在第一次連接到數(shù)據(jù)庫時(shí)根據(jù)
SHEAPTHRES 值以靜態(tài)方式預(yù)先確定的。私有排序內(nèi)存區(qū)的大小是不受限制
的。
對于私有排序和共享排序,應(yīng)用SHEAPTHRES 參數(shù)的方式不同:
–對于私有排序,SHEAPTHRES 是對私有排序在任何給定的時(shí)間可以消耗的全部內(nèi)
存的實(shí)例級“軟”限制。當(dāng)實(shí)例的總私有排序內(nèi)存消耗量達(dá)到這一限制時(shí),為其它進(jìn)入
的私有排序請求而分配的內(nèi)存會大大減少。
–對于共享排序,SHEAPTHRES 是對共享排序在任何給定的時(shí)間可以消耗的全部內(nèi)
存的數(shù)據(jù)庫級“硬”限制。當(dāng)達(dá)到這一限制時(shí),不允許有其它共享排序內(nèi)存請求,直到
總的共享內(nèi)存消耗量回落到SHEAPTHRES 所指定的限制以下。

 

排序堆大小(SORTHEAP)和排序堆閾值(SHEAPTHRES)

要更改SORTHEAP 和SHEAPTHRES 的值,可以運(yùn)行如下命令:


db2 -v update db cfg for DB_NAME using SORTHEAP a_value

db2 -v update dbmcfgusing SHEAPTHRES b_value

db2 -v terminate

SORTHEAP是針對單個(gè)數(shù)據(jù)庫的,SHEAPTHRES是針對數(shù)據(jù)庫例程
的。

 

排序堆大小(SORTHEAP)和排序堆閾值(SHEAPTHRES)

OLTP 應(yīng)用程序不應(yīng)該執(zhí)行大型排序,通常,SORTHEAP 大小的缺省值(256
個(gè)4KB 頁)就足夠了。事實(shí)上,對于高并發(fā)性O(shè)LTP,您可能希望降低這個(gè)缺
省值。
當(dāng)需要進(jìn)一步研究時(shí),可以發(fā)出下面這條命令:


db2 -v update monitor switches using sort on

然后,讓您的應(yīng)用程序運(yùn)行一會,然后輸入:

db2 -v get snapshot for database on DBNAME

看一下下面這個(gè)示例中的輸出:


Total sort heap allocated = 0

Total sorts = 1

Total sort time (ms) = 0

Sort overflows = 0

Active sorts = 0

Commit statements attempted = 1

Rolback statements attempted = 0

Dynamic statements attempted = 4

Static statements attempted = 1

Binds/precompilesattempted = 0


排序堆大小(SORTHEAP)和排序堆閾值(SHEAPTHRES)

根據(jù)該輸出,計(jì)算每個(gè)事務(wù)的排序數(shù)目、計(jì)算溢出了可用于排序的內(nèi)
存的那部分排序的百分比。


SortsPerTransaction= (Total Sorts) / (Commit statements attempted +
Rollback statements attempted)

PercentSortOverflow= (Sort overflows * 100 ) / (Total sorts)

如果SortsPerTransaction大于5,它可能表明每個(gè)事務(wù)的排序太多。
如果PercentSortOverflow大于3%,那么可能發(fā)生了嚴(yán)重的、未曾預(yù)
料到的大型排序。發(fā)生這種情況時(shí),增加SORTHEAP 只會隱藏性能
問題-卻無法修正它。這個(gè)問題的正確解決方案是通過添加正確的索
引改進(jìn)有問題的SQL 語句的存取方案。

 

排序堆大小(SORTHEAP)和排序堆閾值(SHEAPTHRES)

建議:

使用合適的索引使排序堆的使用降到最低。
當(dāng)需要頻繁進(jìn)行大型排序時(shí),增加SORTHEAP 的值。
如果增加SORTHEAP,請確定是否還需要調(diào)整數(shù)據(jù)庫管理器配置文件
中的SHEAPTHRES 參數(shù)。
優(yōu)化器用排序堆大小來確定存取路徑。在更改該參數(shù)后請考慮重新綁
定應(yīng)用程序(使用REBIND PACKAGE 命令)。
理想情況下,應(yīng)當(dāng)將排序堆閾值(SHEAPTHRES)參數(shù)合理地設(shè)置為
在數(shù)據(jù)庫管理器實(shí)例中設(shè)置的SORTHEAP 參數(shù)最大值的倍數(shù)。該參
數(shù)至少應(yīng)當(dāng)是實(shí)例中任何數(shù)據(jù)庫所定義的最大SORTHEAP 的兩倍。

 

代理程序的數(shù)目(MAXAGENTS、NUM_POOLAGENTS 和NUM_INITAGENTS)

這些是數(shù)據(jù)庫管理器配置參數(shù)。
MAXAGENTS 參數(shù)表明在任何給定時(shí)間接受應(yīng)用程序請求的數(shù)據(jù)庫管理器代理
程序的最大數(shù)目。MAXAGENTS 的值應(yīng)當(dāng)至少是每個(gè)被并發(fā)地訪問的數(shù)據(jù)庫中
的MAXAPPLS(并發(fā)應(yīng)用程序最大數(shù)目)值的總和。如果數(shù)據(jù)庫的數(shù)量大于
NUMDB 參數(shù),那么最安全的方案就是使用NUMDB 和MAXAPPLS 最大值的乘
積。
NUM_POOLAGENTS 參數(shù)是用于評定您希望代理程序池增加到多大的準(zhǔn)則。如
果所創(chuàng)建的代理程序多于該參數(shù)值所指明的數(shù)目,那么當(dāng)代理程序執(zhí)行完自己當(dāng)
前的請求后將終止運(yùn)行而不是返回給代理程序池。如果該參數(shù)的值為0,將按照
需要創(chuàng)建代理程序,在代理程序執(zhí)行完自己當(dāng)前的請求后終止運(yùn)行。
要避免因在并發(fā)連接許多應(yīng)用程序的OLTP 環(huán)境中頻繁創(chuàng)建和終止代理程序而產(chǎn)
生的成本,請將NUM_POOLAGENTS 的值增加到接近MAXAGENTS 值。
NUM_INITAGENTS 參數(shù)決定空閑代理程序的初始數(shù)量,這些代理程序是在
DB2START 時(shí)在代理程序池中創(chuàng)建的。指定初始代理程序數(shù)目要合適。
在大多數(shù)情況下,將MAXAGENTS 和NUM_POOLAGENTS 的值設(shè)置成略微大
于并發(fā)應(yīng)用程序連接的最大預(yù)計(jì)數(shù)目。NUM_INITAGENTS 保留為缺省值。

 

代理程序的數(shù)目(MAXAGENTS、NUM_POOLAGENTS 和NUM_INITAGENTS)

更改這些參數(shù)的命令:


db2 -v update dbm cfg using MAXAGENTS a_value

db2 -v update dbm cfg using NUM_POOLAGENTS b_value

db2 -v update dbm cfg using NUM_INITAGENTS c_value

db2 -v terminate


代理程序的數(shù)目(MAXAGENTS、NUM_POOLAGENTS 和NUM_INITAGENTS)

在運(yùn)行期間的任何時(shí)候,您都可以使用下面這個(gè)命令來獲取數(shù)據(jù)庫管理
器的快照數(shù)據(jù):


db2 -v get snapshot for dbm

看一下下列輸出行:


High water mark for agents registered = 4

High water mark for agents waiting for a token = 0

Agents registered = 4Agents waiting for a token = 0

Idle agents = 0

Agents assigned from pool = 5

Agents created from empty pool = 4

Agents stolen from another application = 0

High water mark for coordinating agents = 4

Max agents overflow = 0

如果發(fā)現(xiàn)“Agents waiting for a token”或“Agents stolen from another
application”不等于0,則可能需要增加MAXAGENTS 以允許數(shù)據(jù)庫管
理器可以使用更多的代理程序。



鎖(LOCKLIST、MAXLOCKS 和LOCKTIMEOUT)

這些與鎖相關(guān)的控制都是數(shù)據(jù)庫配置參數(shù)。
LOCKLIST 表明分配給鎖列表的存儲容量。每個(gè)數(shù)據(jù)庫都有一個(gè)鎖列表,鎖定
是數(shù)據(jù)庫管理器用來控制多個(gè)應(yīng)用程序并發(fā)訪問數(shù)據(jù)庫中數(shù)據(jù)的機(jī)制。行和表
都可以被鎖定。根據(jù)對象是否還持有其它鎖,每把鎖需要32 個(gè)或64 個(gè)字節(jié)
的鎖列表:
–需要64 個(gè)字節(jié)來持有某個(gè)對象上的鎖,在這個(gè)對象上,沒有持有其它鎖。
–需要32 個(gè)字節(jié)來記錄某個(gè)對象上的鎖,在這個(gè)對象上,已經(jīng)持有一個(gè)鎖。
MAXLOCKS 定義了應(yīng)用程序持有的鎖列表的百分比,在數(shù)據(jù)庫管理器執(zhí)行鎖
升級之前必須填充該鎖列表。當(dāng)一個(gè)應(yīng)用程序所使用的鎖列表百分比達(dá)到
MAXLOCKS 時(shí),數(shù)據(jù)庫管理器會升級這些鎖,這意味著用表鎖代替行鎖,從
而減少列表中鎖的數(shù)量。當(dāng)任何一個(gè)應(yīng)用程序所持有的鎖數(shù)量達(dá)到整個(gè)鎖列表
大小的這個(gè)百分比時(shí),對該應(yīng)用程序所持有的鎖進(jìn)行鎖升級。如果用一個(gè)表鎖
替換這些行鎖,將不再會超出MAXLOCKS 值,那么鎖升級就會停止。否則,
鎖升級就會一直進(jìn)行,直到所持有的鎖列表百分比低于MAXLOCKS。
MAXLOCKS 參數(shù)乘以MAXAPPLS 參數(shù)不能小于100。
雖然升級過程本身并不用花很多時(shí)間,但是鎖定整個(gè)表(相對于鎖定個(gè)別行)
降低了并發(fā)性,而且數(shù)據(jù)庫的整體性能可能會由于對受鎖升級影響的表的后續(xù)
訪問而降低。

 

鎖(LOCKLIST、MAXLOCKS 和LOCKTIMEOUT)

使用下列步驟確定鎖列表所需的頁數(shù):
–計(jì)算鎖列表大小的下限:(512 * 32 * MAXAPPLS) / 4096,其中512 是
每個(gè)應(yīng)用程序平均所含鎖數(shù)量的估計(jì)值,32 是對象(已有一把鎖)上每
把鎖所需的字節(jié)數(shù)。
–計(jì)算鎖列表大小的上限:(512 * 64 * MAXAPPLS) / 4096,其中64 是某
個(gè)對象上第一把鎖所需的字節(jié)數(shù)。
–對于您的數(shù)據(jù),估計(jì)可能具有的并發(fā)數(shù),并根據(jù)您的預(yù)計(jì)為鎖列表選擇
一個(gè)初始值,該值位于您計(jì)算出的上限和下限之間。
使用數(shù)據(jù)庫系統(tǒng)監(jiān)視器調(diào)優(yōu)MAXLOCKS 值。
設(shè)置MAXLOCKS 時(shí),請考慮鎖列表的大小(LOCKLIST):
–MAXLOCKS = 100 * (512 鎖/應(yīng)用程序* 32 字節(jié)/鎖* 2) /
(LOCKLIST * 4096 字節(jié))
–該樣本公式允許任何應(yīng)用程序持有的鎖是平均數(shù)的兩倍。如果只有幾個(gè)
應(yīng)用程序并發(fā)地運(yùn)行,則可以增大MAXLOCKS,因?yàn)樵谶@些條件下鎖
列表空間中不會有太多爭用。

 

鎖(LOCKLIST、MAXLOCKS 和LOCKTIMEOUT)

LOCKTIMEOUT 指定了應(yīng)用程序?yàn)楂@取鎖所等待的秒數(shù)。這有助于
應(yīng)用程序避免全局死鎖。
如果將該參數(shù)設(shè)置成0,那么應(yīng)用程序?qū)⒉坏却@取鎖。在這種情形
中,如果請求時(shí)沒有可用的鎖,那么應(yīng)用程序立刻會接收到-911。
如果將該參數(shù)設(shè)置成-1,那么將關(guān)閉鎖超時(shí)檢測。在這種情形中,
應(yīng)用程序?qū)⒌却@取鎖(如果請求時(shí)沒有可用的鎖),一直到被授
予了鎖或出現(xiàn)死鎖為止。
在聯(lián)機(jī)事務(wù)處理(OLTP)環(huán)境中,這個(gè)值從30 秒開始。在只進(jìn)行
查詢的環(huán)境中可以從一個(gè)更大的值開始。

 

鎖(LOCKLIST、MAXLOCKS 和LOCKTIMEOUT)

更改鎖參數(shù)的命令:


db2 -v update db cfg for DB_NAME using LOCKLIST a_number

db2 -v update db cfg for DB_NAME using MAXLOCKS b_number

db2 -v update db cfg for DB_NAME using LOCKTIMEOUT c_number

db2 -v terminate


鎖(LOCKLIST、MAXLOCKS 和LOCKTIMEOUT)

使用數(shù)據(jù)庫系統(tǒng)監(jiān)視器來確定是否發(fā)生鎖升級,跟蹤應(yīng)用程序(連接)遭遇鎖超時(shí)
的次數(shù),或者數(shù)據(jù)庫檢測到的所有已連接應(yīng)用程序的超時(shí)情形。
首先,運(yùn)行下面這個(gè)命令以打開針對鎖的DB2 監(jiān)視器:


db2 -v update monitor switches using lock ondb2 -v terminate

然后收集數(shù)據(jù)庫快照:


db2 -v get snapshot for database on DB_NAME

在快照輸出中,檢查下列各項(xiàng):


Locks held currently = 0

Lock waits = 0

Time database waited on locks (ms) = 0

Lock list memory in use (Bytes) = 504

Deadlocks detected = 0

Lock escalations = 0

Exclusive lock escalations = 0

Agents currently waiting on locks = 0

Lock Timeouts = 0

Internal rollbacks due to deadlock = 0

如果“Lock list memory in use (Bytes)”超過定義的LOCKLIST 大小的50%,那么就
增加LOCKLIST 的數(shù)量。鎖升級、鎖超時(shí)和死鎖將表明系統(tǒng)或應(yīng)用程序中存在某
些潛在問題。
鎖定問題通常表明應(yīng)用程序中存在一些相當(dāng)嚴(yán)重的并發(fā)性問題,在增大鎖列表參數(shù)
的值之前應(yīng)當(dāng)解決這些問題。

 

活動應(yīng)用程序的最大數(shù)目(MAXAPPLS)

MAXAPPLS 是一個(gè)數(shù)據(jù)庫配置參數(shù)。它指定了可以連接到數(shù)據(jù)庫的
并發(fā)應(yīng)用程序(本地和遠(yuǎn)程)的最大數(shù)量。
該參數(shù)值必須大于等于已連接應(yīng)用程序的數(shù)量,加上這些相同的應(yīng)用
程序中完成兩階段提交或回滾過程中可能并發(fā)存在的數(shù)量的總和。
在OLTP 應(yīng)用中,請確保將MAXAPPLS 的值設(shè)置正確,以容納最多
的并發(fā)用戶/連接。
對于那些使用連接池的應(yīng)用程序,可以將MAXAPPLS 的值設(shè)置成比
連接池的大小大1 或2(這樣做只是為了以防需要調(diào)用命令行連接來
同時(shí)做一些事情)。

 

活動應(yīng)用程序的最大數(shù)目(MAXAPPLS)

更改MAXAPPLS 值的命令:


db2 -v update db cfgfor DB_NAME using MAXAPPLS a_number

db2 -v terminate

當(dāng)應(yīng)用程序嘗試連接數(shù)據(jù)庫,但是連接到數(shù)據(jù)庫的應(yīng)用程序數(shù)已經(jīng)達(dá)
到了MAXAPPLS 的值時(shí),會向應(yīng)用程序返回下面這個(gè)錯(cuò)誤,表明連
接到該數(shù)據(jù)庫的應(yīng)用程序數(shù)已達(dá)到了最大值。


SQL1040N The maximum number of applications is already
connected to thedatabase. SQLSTATE=57030


異步頁清除程序的數(shù)量(NUM_IOCLEANERS)

NUM_IOCLEANERS 是一個(gè)數(shù)據(jù)庫配置參數(shù),指定數(shù)據(jù)庫的異步頁
清除程序的數(shù)目。在數(shù)據(jù)庫代理程序需要緩沖池中的空間之前,這些
頁清除程序?qū)⒕彌_池中已更改的頁寫到磁盤,這允許代理程序不必等
待已更改頁被寫到磁盤就可以讀取新頁,提高應(yīng)用系統(tǒng)性能。
如果將該參數(shù)設(shè)置成0,則不啟動頁清除程序,結(jié)果,數(shù)據(jù)庫代理程
序?qū)⒕彌_池中的所有頁寫到磁盤。該參數(shù)會對存儲在多個(gè)物理存儲設(shè)
備上的單個(gè)數(shù)據(jù)庫的性能產(chǎn)生顯著影響,因?yàn)樵谶@種情況下其中某個(gè)
設(shè)備極有可能處于空閑狀態(tài)。如果沒有配置頁清除程序,則應(yīng)用程序
可能會遇到不時(shí)發(fā)生的“日志已滿”情況。
如果連接到數(shù)據(jù)庫的應(yīng)用程序主要執(zhí)行更新數(shù)據(jù)的事務(wù),那么增加清
除程序的數(shù)目會提高性能。
增加頁清除程序的數(shù)量還會減少“軟”故障(比如斷電)的恢復(fù)時(shí)間,
因?yàn)榇疟P上數(shù)據(jù)庫的內(nèi)容在任何給定時(shí)候都是比較新的。

 

異步頁清除程序的數(shù)量(NUM_IOCLEANERS)

設(shè)置該參數(shù)時(shí)要考慮的因素:
–如果有多個(gè)事務(wù)針對數(shù)據(jù)庫運(yùn)行,則將該參數(shù)的值設(shè)置在1 到該數(shù)據(jù)庫
所使用的物理存儲器的數(shù)量之間。
–至少將該參數(shù)的值設(shè)置成您系統(tǒng)上CPU 的數(shù)量。
–在具有高更新事務(wù)率的環(huán)境下,可能需要配置較多的頁清除程序。
–在具有大緩沖池的環(huán)境下,也可能需要配置較多的頁清除程序。

 

異步頁清除程序的數(shù)量(NUM_IOCLEANERS)

更改該參數(shù)的命令:


db2 -v update db cfg for DB_NAME using NUM_IOCLEANERS a_number

db2 -v terminate

使用數(shù)據(jù)庫系統(tǒng)監(jiān)視器,利用有關(guān)從緩沖池進(jìn)行寫操作的快照數(shù)據(jù)(或
事件監(jiān)視器)信息來幫助您調(diào)優(yōu)該配置參數(shù)。
當(dāng)使用快照和收集緩沖池的快照數(shù)據(jù)時(shí),監(jiān)控下列計(jì)數(shù)器:


Buffer pool data writes = 0

Asynchronous pool data page writes = 0

Buffer pool index writes = 0

Asynchronous pool index page writes = 0

LSN Gap cleaner triggers = 0

Dirty page steal cleaner triggers = 0

Dirty page threshold cleaner triggers = 0


異步頁清除程序的數(shù)量(NUM_IOCLEANERS)

如果下面這兩個(gè)條件成立,減少NUM_IOCLEANERS:


“Buffer pool data writes”約等于“Asynchronous pool data page writes”。

“Buffer pool index writes”約等于“Asynchronous pool index page writes”。

只要下面這兩個(gè)條件有一個(gè)成立,增加NUM_IOCLEANERS:


“Buffer pool data writes”遠(yuǎn)遠(yuǎn)大于“Asynchronous pool data page writes”。

“Buffer pool index writes”遠(yuǎn)遠(yuǎn)大于“Asynchronous pool index page writes”。

Dirty page steal cleaner triggers 指出調(diào)用頁清除程序的次數(shù),為了有更好的響應(yīng)
時(shí)間,該數(shù)值應(yīng)當(dāng)盡可能低。利用上面所示的計(jì)數(shù)器,可以使用下面的公式計(jì)算用
該元素表示的所有清除程序調(diào)用的百分比:


Dirty page steal cleaner triggers / (Dirty page steal cleaner triggers +
Dirty page threshold cleaner triggers +
LSN Gap cleaner triggers)

如果該比率很高,則它可能表明您所定義的頁清除程序太少了。


I/O 服務(wù)器的數(shù)目(NUM_IOSERVERS)

該參數(shù)是一個(gè)數(shù)據(jù)庫配置參數(shù),用于指定數(shù)據(jù)庫的I/O 服務(wù)器的數(shù)目。
諸如備份和恢復(fù)之類的實(shí)用程序使用I/O 服務(wù)器代表數(shù)據(jù)庫代理程序執(zhí)行
預(yù)取I/O 和異步I/O。
超過這個(gè)數(shù)量的預(yù)取和實(shí)用程序I/O 在任何時(shí)候都不能在數(shù)據(jù)庫中運(yùn)行。
在啟動I/O 操作時(shí),I/O 服務(wù)器處于等待狀態(tài)。
由于從數(shù)據(jù)庫代理程序直接調(diào)度非預(yù)取I/O,因此非預(yù)取I/O 不受
NUM_IOSERVERS 約束。
在OLTP 環(huán)境中,使用缺省值就可以。
更改NUM_IOSERVERS參數(shù)的命令:


db2 -v update db cfg for DB_NAME using NUM_IOSERVERS a_number

db2 -v terminate


編入組的提交數(shù)目(MINCOMMIT)

MINCOMMIT 是數(shù)據(jù)庫配置參數(shù),它讓您把將日志記錄寫到磁盤的工
作一直延遲到執(zhí)行了最小數(shù)量的提交為止。
該延遲有助于減少與寫日志記錄相關(guān)的數(shù)據(jù)庫管理器開銷。這意味著
當(dāng)您針對數(shù)據(jù)庫運(yùn)行多個(gè)應(yīng)用程序并且在非常短的時(shí)間范圍內(nèi)應(yīng)用程
序請求大量提交時(shí)可以提高性能。
只有當(dāng)該參數(shù)值大于1 并且當(dāng)連接到數(shù)據(jù)庫的應(yīng)用程序數(shù)量大于或等
于該參數(shù)值時(shí),才會發(fā)生這個(gè)提交分組。
當(dāng)執(zhí)行提交分組時(shí),應(yīng)用程序提交請求會被掛起,直到時(shí)間過去1 秒
或提交請求的數(shù)量等于該參數(shù)值。
使用下面的命令更改MINCOMMIT 值:


db2 -v update db cfg for DB_NAMEusing MINCOMMIT a_numberdb2 -v terminate


編入組的提交數(shù)目(MINCOMMIT)

MINCOMMIT 的缺省值為1。
如果多個(gè)讀/寫應(yīng)用程序通常請求并發(fā)數(shù)據(jù)庫提交,則從缺省值開始
遞增該參數(shù)值,這將產(chǎn)生更有效率的日志文件I/O,因?yàn)槭褂萌罩疚募?br />I/O 的次數(shù)比較少,而每次使用日志文件I/O 時(shí)所寫的日志記錄比較
多。
如果您認(rèn)為缺省值不夠大,可以從3 開始進(jìn)行調(diào)整,在3 的附近嘗試
以查看性能對工作負(fù)載的影響。
可以對每秒鐘的事務(wù)量進(jìn)行采樣,并調(diào)整該參數(shù)以適應(yīng)每秒鐘的峰值
事務(wù)量(或者采用它的某個(gè)較大的百分比)。適應(yīng)峰值活動使得在重
負(fù)載期間寫日志記錄的開銷減到了最低。
如果增大MINCOMMIT,可能還需要增大LOGBUFSZ 參數(shù)以避免在
這些重負(fù)載期間強(qiáng)制將已滿的日志緩沖區(qū)寫入磁盤。在這種情況下,
LOGBUFSZ 應(yīng)該等于:


MINCOMMIT * (每個(gè)交易平均日志空間的使用量)


編入組的提交數(shù)目(MINCOMMIT)

計(jì)算每秒鐘的峰值事務(wù)數(shù):


通過采用典型一天中的監(jiān)視器樣本,可以確定重負(fù)載時(shí)期。

1. 在測量開始時(shí),發(fā)出下面這個(gè)命令:

–db2 -v reset monitor for database db_name(這不會使高水位的計(jì)數(shù)器復(fù)位。)


2. 在測量完畢后,發(fā)出下面這個(gè)命令:

–db2 -v get snapshot for database on db_name


3. 使用以下輸出來計(jì)算事務(wù)的峰值:

Last reset timestamp = 06-12-2001 14:51:43.786876

Snapshot timestamp = 06-12-2001 14:56:27.787088

Commit statements attempted = 1011

Rolback statements attempted = 10

Log space used by the database (Bytes) = 3990

4. 讓totalTransactions等于“commit statements attempted”和“rollback statements
attempted”的總和。

5. 讓totalElapsedTime(單位為秒)等于“Last reset timestamp”和“Snapshot
timestamp”的差。

6. 如下計(jì)算每秒事務(wù)數(shù):

–NumOfTransPerSecond= totalTransactions/ totalElapsedTime

 

編入組的提交數(shù)目(MINCOMMIT)

計(jì)算每個(gè)事務(wù)所使用的日志空間:
通過在一段時(shí)間內(nèi)對一些事務(wù)使用抽樣技術(shù),可以通過下面這個(gè)監(jiān)視器元
素:log_space_used(所使用的工作日志空間單元)計(jì)算出使用的日志
空間的平均值。


1. 在測量開始時(shí)使用下面這個(gè)命令將感興趣的數(shù)據(jù)庫的監(jiān)視器復(fù)位:

db2 -v reset monitor for database db_name.

2. 在測量完畢后使用下面這個(gè)命令獲取快照:

db2 -v get snapshot for database on db2_name.

3. 使用下面這個(gè)公式計(jì)算出每個(gè)事務(wù)所使用的日志空間:

LogSpaceUsedPerTrans= log_space_used/ totalTransactions

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            国产主播一区二区三区四区| 亚洲在线一区| 亚洲午夜激情网站| 亚洲小说欧美另类婷婷| 国产精品大全| 久久精品2019中文字幕| 蜜桃久久av| 中文精品99久久国产香蕉| 欧美丝袜一区二区| 欧美一区二区三区免费观看视频| 美女脱光内衣内裤视频久久影院 | 亚洲一级黄色片| 国产欧美一区二区白浆黑人| 久久久久久久综合狠狠综合| 亚洲国产老妈| 性18欧美另类| 99精品热视频| 亚洲欧美亚洲| 欧美日韩国产精品专区 | 亚洲一区免费| 精品88久久久久88久久久| 欧美日韩免费一区二区三区| 欧美在线一二三区| 亚洲视频一区二区免费在线观看| 欧美xxxx在线观看| 欧美一二三区精品| 亚洲美女免费精品视频在线观看| 国产精品美腿一区在线看| 男女激情视频一区| 欧美亚洲在线| 中日韩美女免费视频网址在线观看 | 欧美专区日韩专区| 一区二区激情视频| 亚洲国产日韩美| 国产亚洲第一区| 欧美午夜电影在线观看| 久久久亚洲人| 久久国产一区二区| 亚洲一区二区三区免费视频| 日韩视频免费| 欧美激情视频给我| 免费一级欧美片在线播放| 久久精品人人做人人综合| 亚洲精品免费一区二区三区| 1024成人| 在线观看成人av电影| 国产一区二区在线免费观看| 国产精品久久久久久久久免费 | 久久激情中文| 午夜精品一区二区三区在线视 | 亚洲国产精品va在线看黑人动漫| 久久尤物视频| 久久久精品网| 久久精品视频在线观看| 亚洲资源在线观看| 亚洲午夜未删减在线观看| 亚洲激情专区| 亚洲人在线视频| 99国产精品自拍| 亚洲视频免费| 先锋影音国产精品| 久久精品亚洲国产奇米99| 久久精品视频免费| 免费成人美女女| 亚洲人精品午夜在线观看| 亚洲美女尤物影院| 亚洲图片欧洲图片av| 午夜亚洲视频| 麻豆国产精品va在线观看不卡 | 久久精品亚洲精品| 欧美69wwwcom| 欧美日本韩国| 国产精品久久久一本精品| 国产日韩一区在线| 亚洲福利视频二区| 一区二区三区四区五区在线 | 免费不卡视频| 亚洲人成毛片在线播放| 在线一区二区日韩| 久久久久久久久久久久久久一区 | 久久久五月婷婷| 欧美精品性视频| 国产精品自拍网站| 亚洲激情网址| 欧美一区二区三区视频免费| 免费不卡视频| 亚洲欧美成人一区二区在线电影 | 久久偷看各类wc女厕嘘嘘偷窃| 欧美福利视频| 国产日韩视频| 亚洲日本电影| 久久久99久久精品女同性| 亚洲精品黄色| 久久久噜噜噜久久久| 国产精品美女久久久久aⅴ国产馆| 狠狠色丁香婷婷综合影院| 亚洲婷婷综合色高清在线| 欧美成人在线免费视频| 香蕉久久夜色精品国产| 欧美日韩国产精品一区二区亚洲| 一区视频在线| 久久国产综合精品| 国产精品激情偷乱一区二区∴| 亚洲国产影院| 亚洲欧美中文在线视频| 91久久精品一区| 久久久亚洲精品一区二区三区 | 亚洲欧美日韩在线高清直播| 欧美好吊妞视频| 久久精品99无色码中文字幕| 欧美四级伦理在线| 日韩视频精品在线| 六十路精品视频| 亚洲欧美另类中文字幕| 欧美日韩成人免费| 亚洲美女淫视频| 欧美激情国产高清| 毛片基地黄久久久久久天堂| 黄色小说综合网站| 久久全国免费视频| 亚洲欧美日韩在线观看a三区 | 欧美一区二区在线免费观看| 欧美视频1区| 亚洲一区二区在线| av72成人在线| 欧美少妇一区| 亚洲综合电影| 在线亚洲一区二区| 国产精品免费福利| 亚洲欧美日韩视频二区| 亚洲最快最全在线视频| 欧美日韩精品综合在线| 一区二区三区视频在线看| 亚洲狼人综合| 国产精品美女在线| 久久九九免费| 久久人人爽人人爽| 亚洲精品乱码久久久久久蜜桃麻豆 | 一区二区三区欧美在线| 99riav国产精品| 国产精品美女午夜av| 久久精品国产99国产精品| 久久久久88色偷偷免费| 亚洲激情视频网| 日韩写真在线| 国产欧美一区二区白浆黑人| 美女性感视频久久久| 欧美黑人在线播放| 香蕉尹人综合在线观看| 久久av红桃一区二区小说| 亚洲精品视频在线| 中文一区在线| 一色屋精品视频免费看| 久久免费99精品久久久久久| 国产精品午夜av在线| 亚洲一区二区三区三| 一本一本久久a久久精品牛牛影视| 国产精品vip| 久久激情中文| 久久综合一区二区| 亚洲天堂av在线免费| 亚洲欧美日韩成人高清在线一区| 精品成人一区二区三区| 亚洲免费高清| 红桃视频成人| 日韩亚洲在线| 伊人精品视频| 一区二区三区视频在线播放| 黄色小说综合网站| 国产精品99久久久久久宅男 | 欧美jizzhd精品欧美喷水 | 免费在线成人av| 欧美视频一区二区三区四区| 久久久噜噜噜久噜久久| 欧美日韩三区| 免费成人av在线看| 国产精品日日做人人爱| 亚洲国产第一| 国内综合精品午夜久久资源| 亚洲日本中文字幕免费在线不卡| 狠狠干综合网| 亚洲欧美日韩综合| 一本到12不卡视频在线dvd| 久久久精品动漫| 久久久久国产精品一区| 国产精品久久久久久超碰| 亚洲韩国精品一区| 亚洲高清视频一区| 欧美亚洲三区| 午夜日韩福利| 欧美午夜宅男影院| 亚洲免费高清视频| 一区二区三区.www| 欧美精选一区| 亚洲精品国产精品国自产在线 | 久久成人久久爱| 久久大香伊蕉在人线观看热2| 欧美午夜精品久久久久久浪潮| 亚洲激情二区| 99国产麻豆精品|