Post on 29-Dec-2015
transcript
1
Performance Data: What is Important and How Do I Make
Sense of It
Adam BackmanA Nice Guy, DBAppraise
2
Shameless Plug
• DBAppraise is an OpenEdge specific database monitoring service
• DBAppraise provides our clients with the ability to offload as much of the DBA function as they need
• Customized to your environment• Backed by some of the top OpenEdge DBAs in
the world
4
Agenda
• Why do you need a monitor?• Monitoring Alternatives• What Are VSTs?• ProTop Basic Capabilities• Advanced Features
5
Why monitor?
• Performance matters• Your workload changes– Number of users– Number of Records
• Application changes• Change in the weather
6
Monitoring
• You need to document where you are now• Change one thing at a time so you know the
affect of changes• Document what constitutes “good”
performance• Keeping historical records allows for targeted
future planning
7
Monitoring Tools/Services
• Free– Glance– top– promon– ProTop
• Not Free– OpenEdge Management (product)– DBAppraise (service)
8
What Are VSTs?
• Virtual System Tables• A 4GL View of Progress Data Structures (the
same as those shown in PROMON.)• No Performance Impact (mostly)• Primarily Read-Only• Knowing what to use can be a challenge
9
Some VST Quirks• Updateable:– _startup._spin– Private buffers
• Table & Index Ranges: -tablebase, -tablerangesize-indexbase, -indexrangesize – Table & Index Window can be reset!
• Quirky Keys:– _myconnection…– _tablestat & _indexstat
11
ProTop Basic Capabilities
• Summary Data• Blocked Clients & Open Transactions• Table & Index Activity• User Activity• Storage Area Capacity• Estimating Big B• Latches & Resources• Clients & Servers
12
Summary Data11:32:52 ProTop xvi -- Progress Database Monitor 07/05/05
Sample sports [/db/sports] Rate
Hit Ratio: 182:1 195:1 Commits: 149 195 Sessions: 2057
Miss% : 0.549% 0.512% Latch Waits: 13 16 Local: 953
Hit% : 99.45% 99.48% Tot/Mod Bufs: 60002 3167 Remote: 956
Log Reads: 76342 80927 Evict Bufs: 2 1 Batch: 1045
OS Reads: 419 414 Lock Table: 1516 3 Server: 97
Rec Reads: 23789 23619 LkHWM|OldTrx: 1392 00:00 Other: 51
Log/Rec: 3.2091 3.4264 Old/Curr BI: 54 54 TRX: 26
Area Full: 1 98.60% After Image: Disabled Blocked: 0
13
Blocked Sessions
Blocked Sessions
Usr Name Note
----- ------------ ----------------------------------
24 tom REC XQH 102 [Order] julia
15
Locked Records
for each _Lock no-lock while _Lock-usr <> ?:
if _Lock-recid = _Connect-wait1 then
do:
find _file where _file._file-num = _Lock-table no-error.
bxtbl = _file._file-name.
end.
if _Lock-usr = _Connect-usr then
bxwait = bxwait + “ “ + _Lock-flags.
else
bxque = bxque + " " + _Lock-name.
end.
bxnote = bxtbl + bxwait + bxque.
16
Open TransactionsOpen Transactions
Usr Name TRX Num BI Clstr Start Trx Stat Duration Wait
---- ----- -------- -------- -------- -------- -------- ----------
9 root 2432897 1024 15:39:05 ACTIVE 00:00:01 -- 29440
20 root 2432896 - ALLOCATE 00:00:00 -- 20115
5 root 2432898 1024 15:39:06 ACTIVE 00:00:00 -- 21952
7 root 2432899 1024 15:39:06 ACTIVE 00:00:00 -- 19040
23 julia 2418661 - ALLOCATE 00:00:00 -- 0
22 tom 2417938 - ALLOCATE 00:00:00 -- 0
17
Table ActivityTable Statistics
Tbl# Table Name Create Read Update Delete
---- ---------------- --------- --------- --------- ---------
4 OrderLine 0 444 11 0
18 Order 0 98 1 0
24 POLine 0 92 1 0
23 PurchaseOrder 0 42 1 0
21 Bin 0 5 0 0
2 Customer 0 4 0 0
1 Invoice 0 1 0 0
10 Employee 0 0 0 0
13 Family 0 0 0 0
18
Table Stats
/** This does NOT work if –tablebase <> 1!!!
find _File no-lock where _File._File-num = p_tbl no-error.
find _TableStat no-lock where _TableStat-id = p_tbl no-error.
display p_tbl _file-num _TableStat-id.
**/
/*** use the following: ***/
find _TableStat no-lock where _TableStat-id = p_tbl no-error.
find _File no-lock where _File._File-num = _TableStat-id no-error.
display p_tbl _file-num _TableStat-id.
19
Index Activity
Index Statistics
Idx# Index Name Create Read Split Delete BlkDel
---- --------------- -- ------ ------ ------ ------ ------
22 orderline PU 0 44 0 0 0
12 CustNum PU 0 3 0 0 0
2 _File/Field PU 0 0 0 0 0
3 _Field-Name U 0 0 0 0 0
5 _File/Index PU 0 0 0 0 0
20
User IO ActivityUIO
Usr Name Flags PID DB Access OS Rd OS Wr Hit%
---- ------- ----- ------ --------- ----- ----- -------
13 tom SB 13590 2266 200 1 91.13%
10 jami SB 13584 190 6 1 97.10%
16 julia SB 13596 185 6 1 97.03%
17 peter SB 13598 181 5 1 97.07%
15 emily SB 13594 177 5 1 97.12%
11 tiger SB* 13586 166 4 0 97.58%
14 tucker SB 13592 159 5 1 97.10%
19 granite SB 13602 146 1 0 99.25%
7 astro SB 13578 145 4 1 97.16%
21
Estimating Big B
Big B GuessTimator
Pct Big B % db Size Hit:1 Miss% Hit% OS Rd
----- --------- --------- ----- ------ ------- -----
10% 6000 0.124% 30 3.306% 96.694% 1343
25% 15001 0.311% 48 2.091% 97.909% 849
50% 30001 0.622% 68 1.479% 98.521% 601
100% 60002 1.243% 96 1.046% 98.954% 425 <=
150% 90003 1.865% 117 0.854% 99.146% 347
200% 120004 2.486% 135 0.739% 99.261% 300
400% 240008 4.973% 191 0.523% 99.477% 213
22
Big B
MissPct = 100 * ( 1 – ( LogRd – OSRd ) / LogRd )).
HitPct = 100 – MissPct.
OSRd = LogRd * ( MissPct / 100 ).
m2 = m1 * exp(( b1 / b2 ), 0.5 ).
23
Latch WaitsLatch Waits
Id Latch Requests Waits Lock%
--- -------------------- ---------- ---------- -------
28 MTL_BF4 5540 33 99.40%
17 MTL_BHT 4205 106 97.49%
21 MTL_LRU 4154 55 98.68%
10 MTL_LHT 1800 24 98.65%
15 MTL_LKF 1798 0 100.00%
26 MTL_BF2 1218 6 99.48%
27 MTL_BF3 1184 10 99.13%
25 MTL_BF1 1150 10 99.16%
4 MTL_OM 913 4 99.60%
24
Resource WaitsResource Waits
Id Resource Locks Waits Lock%
--- -------------------- ---------- ---------- -------
10 DB Buf S Lock 2661 0 100.00%
6 Record Get 658 0 100.00%
7 DB Buf Read 40 0 100.00%
2 Record Lock 21 0 100.00%
11 DB Buf X Lock 11 0 100.00%
19 TXE Share Lock 11 0 100.00%
8 DB Buf Write 3 0 100.00%
21 TXE Commit Lock 2 0 100.00%
1 Shared Memory 0 0 0.00%
3 Schema Lock 0 0 0.00%
25
Servers and ClientsServers
Srv Type Port Con Max MRecv MSent RRecv RSent QSent TimeSlice
--- ----- ----- --- --- ----- ----- ----- ----- ----- ---------
1 Login 7150 0 1 0 0 0 0 0 0
2 Auto 1026 10 55 0 0 0 0 0 0
3 Auto 1027 10 55 23 13 0 6 10 86
Server IO
Srv Type Port Con Max DB Access OS Rd OS Wr Hit%
--- ----- ---- --- --- --------- ----- ------ -------
19 Auto 1043 10 55 5041 2 0 99.96%
20 Auto 1044 10 55 1348 1 0 99.96%
18 Auto 1042 10 55 157 1 0 99.51%
16 Auto 1040 10 55 42 1 0 98.70%
26
Storage Area Capacity
Area Statistics
Area Area Name Blocks Hi Water Free %Used RPB Note
---- ------------- ------- -------- ------- ------- --- ---------
1 Control Area 31 9 22 29.03% 64
3 Primary Recovery 31998 30720 1278 96.01% 1
6 Schema Area 11711 10688 1023 91.26% 64 i(25) **
7 Cust_Dat 895975 602498 293477 67.24% 64 t(48)
8 Cust_Idx 191991 115270 76721 60.04% 64 i(157)
9 Sales_Dat 1311962 1103066 208896 84.08% 64 t(41)
10 Sales_Idx 271986 184401 87585 67.80% 64 i(125)
27
Storage Area Capacity
for each _AreaStatus no-lock, _Area no-lock where
_Area._Area-num = _AreaStatus._AreaStatus-Areanum:
bfree = _AreaStatus-Totblocks - _AreaStatus-Hiwater.
if ( _AreaStatus-Freenum <> ? ) then
bfree = bfree + _AreaStatus-Freenum.
if bfree = ? then bfree = _AreaStatus-totblocks.
used = (( _AreaStatus-totblocks - bfree) /
_AreaStatus-totblocks ) * 100.
end.
28
Storage Area Contents
for each _storageobject no-lock where
_storageobject._area-number = xid and
_storageobject._object-num > 0 and
_storageobject._object-associate > 0:
if _storageobject._object-type = 1 then
so_tbl = so_tbl + 1.
else if _storageobject._object-type = 2 then
so_idx = so_idx + 1.
end.
29
Balancing IODatabase File IO
Id Extent Name Mode Blksz Reads Writes Extends
---- ------------------- -------- ----- ------ ------- --------
12 sports2000_11.d1 BUFIO 1024 28 3 0
6 sports2000_8.d1 BUFIO 1024 9 0 0
13 sports2000_11.d2 BOTHIO 1024 6 0 0
1 sports2000.db BOTHIO 1024 2 0 0
3 sports2000.d1 BOTHIO 1024 1 0 0
4 sports2000_7.d1 BUFIO 1024 1 0 0
8 sports2000_9.d1 BUFIO 1024 1 0 0
10 sports2000_10.d1 BUFIO 1024 1 0 0
2 sports2000.b1 UNBUFIO 8192 0 1 0
9 sports2000_9.d2 BOTHIO 1024 0 0 0
30
ProTop Architecture
• VST Based
• Multi-Platform– UNIX Character– HTML– Windows GUI
• Using Publish & Subscribe
31
DBAppraise
• It is a service not a product• Have us cover as much of the DBA function as
you want • 24x7 access to OpenEdge expertise• Please visit DBAppraise.com for more
information and a demo