搜尋
首頁後端開發php教程A DB2 Performance Tuning Roadmap --LOG INTRODUCTION_PHP教程

A DB2 Performance Tuning Roadmap --LOG INTRODUCTION

本文的内容是在整理报表时,对DB2 STAT LOG AVITIVITY部分的一个补充,主要介绍了DB2 LOG作用,overhead,涉及的部件以及部件之间的工作机制如何利用DB2 log,现有的IBM 提供的 DB2 Log utilities。最后对DB2 log的逻辑给出一个感性的认识。
  • 1 LOG OVERVIEW
    • DB2 LOG FUNDAMENTALS
      • LOG AIM:
      • WHY NEED LOGGING
      • IN PERFECT WORLD
      • OVERVIEW OF LOG WORK MECHANISM
  • 2 UNDERSTANDING OF LOG
    • LOG IMPLEMENTATION
      • 1 LOG RBA
      • 2 WHEN DATA SHARING INVOLED-LRSN
      • 3 LOG PAGE DATA SETS
        • FACTORS OF ACTIVE LOG DATA SETS:
        • BSDS – Boot Strap Data Set
        • SYSLGRNX-DLD
        • FACTORS OF ARCHIVE LOG DATASETS
    • LOG STRUCTURE
      • WHAT IS BEING LOGGED?
        • INFORMATION OF UR
        • PAGE SET INFORMATION
        • RECOVERY INFOMATION FOR
        • SYSTEM CHECKPOINTS
        • UNDO/REDO LOG EXMPLAE
        • COMPENSATION OF LOG EXMPLE
        • RECOVERY INFORMATION EXAMPLE
        • SYSTEM CHECKPOINTS DETAIL
      • WHEN IS LOGGING
    • LOG USAGE
      • Start DB2
      • Recovery of objects
      • REPLICATION
      • SOX Compliance
      • HEALTH CHECKS
    • LOG UTILITES,WORKING WITH THE LOG
      • DSN1LOGP
      • DSNJU004、DSNJU003
        • DSNJU004
        • DSNJU003 (a.k.a Change Log Inventory)
      • DSNJLOGF
      • RECOVER BSDS
        • #RECOVER BSDS
  • LOG RELATED DATASET
    • LOG PAGE FORMAT


1 LOG OVERVIEW

DB2 LOG FUNDAMENTALS

LOG AIM:

The DB2 log has two main functions: to reapply or back out units of recovery, and to rebuild DB2 back to a consistent state in the event of a failure

WHY NEED LOGGING
  1. overhead
  2. it costs in ters of performance,dasd,dministration,cleanup
  3. it's assurance-just in case of an accidentIN PERFECT WORLD
    1. no need to rollback
    2. no need to recover
    3. no program errors
    4. no hardware errors
    5. no power failtures
    6. no hurricances,terror attacks,fraud....

Let’s get the MOST out of the LOG since it’s here

OVERVIEW OF LOG WORK MECHANISM

A DB2 Performance Tuning Roadmap --LOG INTRODUCTION_PHP教程
USAGE OF EACH COMPONENTS

  1. Active logs
    Where DB2 puts the current log information
  2. Log Buffers
    Where log information is held BEFORE externalisation to DASD
  3. Bootstrap Datasets
    These hold information about the current active and archive log datasets
  4. Archive logs
    These are copies of ‘old’ active log datasets
  5. SYSLGRNX
    DB2 keeps track of WHEN objects are (possibly) being updated

2 UNDERSTANDING OF LOG

LOG IMPLEMENTATION

1 LOG RBA

BYTE ADDRESSABLE(RBA=RELATIVE BYTE ADDRESS)
RBA START=0X00000000000
RBA END=0XFFFFFFFFFFF
RBA UNIQUELY DEFINE A LOG RECORD

2 WHEN DATA SHARING INVOLED-LRSN

A DB2 Performance Tuning Roadmap --LOG INTRODUCTION_PHP教程
LRSN=LOG SEQUENCE RANGE NUMBER,WHICH IS A MODIFIED TIMESTAMP BASE ON SYSPLEX STORCE CLOCK

3 LOG PAGE DATA SETS

LOG OUTPUTBUFFER
ACTIVE LOG
ARCHIVE LOG

A DB2 Performance Tuning Roadmap --LOG INTRODUCTION_PHP教程
WHEN DB2 GO TO THE LAST ACTIVE DATA SETS ,WRAP ROUND TO FIRST ACTIVE LOG DATA SETS

FACTORS OF ACTIVE LOG DATA SETS:
  1. ACTIVE LOG DATA SETS NUMBER
  2. ACTIVE LOG DATA SETS SIZE
  3. SINGLE OR DUAL ACTIVE LOG
  4. PERFORMANCE CONSIDERATION:
    1. FAST DASD
    2. CONSIDER STRIPPING
    3. DB2 ZPARM OUTBUFFER+ LOGAPSTG
BSDS – Boot Strap Data Set

? Name: catalog.BSDS01 and catalog.BSDS02
? Must be two identical datasets
? Contains highest RBA logged
? Contains active log description (begin – end RBA and status)
? Contains archive log description
? Dataset name
? Volume name
? RBA range
? Contains other necessary system information
? System checkpoint history, BP-description, CCSID info etc

SYSLGRNX-DLD

? Table in Directory so no user access available
? Contains the RBA when any tablespace or
partition is opened or closed for update
? Note this information is also in DB2 log
? SYSLGRNGX is used by DB2 to speed up
recovery by limiting the amount of log data which needs to be scanned
? MODIFY utility removes this information along with SYSCOPY rows

SYSLGRNGX is key to speeding up log processing during recovery Contains RBAs when tablespaces are open for update. Log ranges out ranges cannot contain updates for this tablespace and therefore we needed during the recovery process.SYSLGRNGX is also updated by running the Modify Recovery utility 
FACTORS OF ARCHIVE LOG DATASETS
  1. ALWAYS PRODUCE TWO FILES FOR ONE ACTIVE LOGS
    IT IS AN ASYNCHRONOUS PROCESS
    VCAT.ARCHLOGN.BNNNNNN
    CONTAINDS THE BSDS INFORMATION BEFORE ARCHIVE IS WRITTEN FIRST LOG BEING ARCHIVED,IS STILL KNOWN AS ACTIVE LOG IN BSDS 
    VCAT.ARCHIVEN.ANNNNNN
    CONTAINS THE ACTUAL LOG FOR LOG RBA RANGE OF THAN LOG DATA SETSUPDATES BSDS WHEN COMPLETE 
  2. DB2 ZPARMS ARCHPFX1+ARCHPFX2+TSTAMP=YES|NO|EXT
    VCAT.ARCHIVEN.DXXXXX.TXXXXX.BNNNNNNNN
  3. WHEN ARCHIVE:
    ACTIVE LOG FULL
    TRUNCATED:ARCHIVE LOG COMAMND OR ERROR

LOG STRUCTURE

WHAT IS BEING LOGGED?INFORMATION OF UR
  1. BEGIN/END UR INFORMATION
  2. UNDO/REDO STATEMENTS and compensation log rec
  3. commit rollback processing

PAGE SET INFORMATION
  1. OPEN/CLOSE PAGE SET
  2. PENDING STATUS INFORMATION(COPY,CHECK,REORG)
  3. START/STOP INFORMATION(include which mode ut)
  4. DBD INFORECOVERY INFOMATION FORINVOLED TABLES:
    SYSIBM.SYSUTILX SYSIBM.DBD01 SYSIBM.SYSCOPY 
    SYSTEM CHECKPOINTSUNDO/REDO LOG EXMPLAE

UPDATE T
SET COL='BBB'
WHERE ID=1
LRH004A002F 06000001 0E800006 CEA48CC9 0006CEA4 8D590526 0006CEA4 8D59C7C0
AF504B23 0000

*LG** 80010C00 02000000 02000006 CEA4049E 2B02 0000 00120101 00030900 000600C2 C2C200C1 C1C1 

C2C2C2='BBB'
C1C1C1='AAA'
URID(0006CEA48CC9)RBA OF UR STARTED IN LOG
010C=DBID
0002==PAGE SET OBID
000000 02=PAGE ID

COMPENSATION OF LOG EXMPLE

A DB2 Performance Tuning Roadmap --LOG INTRODUCTION_PHP教程
In case of the example the current value is BBB and after the update it should become AAA, but for some reason a ROLLBACK occurs, in that
case DB2 needs to undo this update. This undo by itself is also being logged. These log records are called compensation log records.

SUBTYPE(UPDATE IN-PLACE IN A DATA PAGE) CLR(YES)*LG** 80010C00 02000000 02000006 CEA550BF AB00 0000 00120101 00030900 000600C2 C2C200C1 C1C1 

CLR(YES) which indicates it is a compensation log record

RECOVERY INFORMATION EXAMPLE

DB2 writes “syscopy” information for certain system tables to the log instead of writing it to syscopy. The reason is simple. In case of a
disaster recovery, we need to recover the system in precise steps.Meaning that certain system tables have to be recovered before we can recover sysibm.syscopy. Therefore the backup information of those objects is written to the log.

SYSTEM CHECKPOINTS DETAIL

SYSTEM CHECKPOINT (snapshot of activity on system)

  1. WHAT IS IN SYSTEM CHECKPOINT
    1. Entry per active thread (amongst other status inflight/in commit etc)
    2. Entry per open page set (including exception status)
    3. Page externalization
  2. How often should one be taken ?
    1. Every 3-5 minutes (many sites are at 15-20 minutes)
    2. CHKFREQ : V9 : # LOG records or # seconds
       V10: Minimum of # LOG records and # seconds 
  3. Important for (re)start up performance
    ? Start up ALWAYS from LAST CHECKPOINT
WHEN IS LOGGING

As the work is being done
? In Log output buffer (OUTBUFF)
? Regularly flushed to Active Log Dataset
Sequentially first active copy1 then active copy2 (DB2 V10 应该是双写)
A DB2 Performance Tuning Roadmap --LOG INTRODUCTION_PHP教程
? At Commit
? At Rollback
? Log Write threshold (WRTHRSH 20 pages without commit)
? Archive log command
? System Checkpoint
? Log Write Ahead Force

LOG USAGE

Start DB2

4 phases :

  1. Log initialization
    Read/compare BSDS
    Find current active log dataset and end of log
  2. Current status rebuild
    Read last system checpoint
  3. Forward log recovery
    Do all work for INCOMMIT and INDOUBT threads
  4. Backward log recovery
    Do all work for INABORT and INFLIGHT threads
  5. ALWAYS start from LAST SYSTEM CHECKPOINT
    Amount of work varies (ab)normal shutdowN
Recovery of objects

DB2 新增了一个参数BACKOUT(YES),这个参数应该不是太常用,更多的情况应该是使用imgcopy+log的方式去追,即point-in-time,这里不进行介绍。

REPLICATION

现在IDC内相当火的一个topic,它是实现双活或是多活的基础,平台版本的DBMS也有实现,比如mysql的mater-slave方式,即mysql本身就支持,不需要新增软件,但是是单线程进行处理,为此很多vendors提供了增强版的版本使slave上支持并发。zos 上使用QREP+MQ实现,支持异构数据库,延迟可以控制在分钟以内。RPT=2MIN,RTO=2HOUR,

SOX Compliance

这个更多是的是内审,外审的用途。相对来说使用审计LOG的方式,成本还是比较高的,有alternative software。

HEALTH CHECKS

BEST PRACTICE,根据系统现在的运行情况,查看时候ACTIVE LOG,ACHIVE LOG是否运行异常。

LOG UTILITES,WORKING WITH THE LOG

多少一句,这个应该是目前平台比较欠缺的,可能目前也存在,只是我孤陋寡闻了。

DSN1LOGP

? Formats DB2 log in a readable output
? Detailed or summarized (SUMMARY(YES/NO/ONLY)
? Include page set status (DATAONLY(YES/NO)
? Include SYSCOPY info (SYSCOPY(YES/NO)
? Limit range (from – to)
? Limit scope (e.g. URID,DBID,)
? Cannot read current active log
? Cannot read compressed logs by DFSMS

DSNJU004、DSNJU003DSNJU004

Will list certain parts of the BSDS information
? Log data set name(s), log ranges, volume(s) etc
? Active log status
? Conditional restart history
? System checkpoint history
? Backup system history
? Archive log history
? CCSID information
? Does not show Buffer pool configuration
? Be careful time values are in GMT except LTIME column

DSNJU003 (a.k.a Change Log Inventory)

? Only runs when DB2 is down
? Allows to change BSDS content, USE WITH CARE!
? Add/Delete active and archive Logs
? Add/Delete system checkpoints
? Create conditional restart record (CRESTART)
? STARTRBA
? ENDRBA
? COLD START ? STARTRBA=ENDRBA
? Causes most of the time DATA LOSS

DSNJLOGF

DSNJLOGF
? Pre-formats new active log dataset
? Avoids delay at first use !!

RECOVER BSDS#RECOVER BSDS

? MUST have TWO identical BSDS to start up
? What if one BSDS is broken ?
? DSNJ126I I/O ERROR FORCED SINGLE BSDS
? Do NOT stop DB2
? Issue command –RECOVER BSDS ? automate this!
? What if one BSDS is broken at start up?
? DB2 does not start
? IDCAMS rename/define, REPRO

LOG PAGE FORMAT

对LOG PAGE 有一个感性认识,LOG 的逻辑结构复杂了,后续如果有需要在补充上吧。
1 BYTE=8BITS
1 NIBBLE=4BITS
LOG PAGE SIZE=4KB
LOG PAGE AVAIABLE SPACE=4075
LOG PAGE CONTROL INTERVAL
SIZE: LAST 21/X'15' BYTE OF PAGE
USAGE:CI DESCRIBE THE LOG PAGE
START RAB OF THE PAGE
LOG RBA DO NOT HAVE RBA-----IT'S START RBA of the page plus offset into page of the record
1 log rec maybe span may log pages
本文所有的内容均整理自互联网,仅供参考学习,如有涉及版权问题,请自行删除本文,谢谢。

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/1097746.htmlTechArticleA DB2 Performance Tuning Roadmap --LOG INTRODUCTION 本文的内容是在整理报表时,对DB2 STAT LOG AVITIVITY部分的一个补充,主要介绍了DB2 LOG作用,overhead,...
陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
哪些常見問題會導致PHP會話失敗?哪些常見問題會導致PHP會話失敗?Apr 25, 2025 am 12:16 AM

PHPSession失效的原因包括配置錯誤、Cookie問題和Session過期。 1.配置錯誤:檢查並設置正確的session.save_path。 2.Cookie問題:確保Cookie設置正確。 3.Session過期:調整session.gc_maxlifetime值以延長會話時間。

您如何在PHP中調試與會話相關的問題?您如何在PHP中調試與會話相關的問題?Apr 25, 2025 am 12:12 AM

在PHP中調試會話問題的方法包括:1.檢查會話是否正確啟動;2.驗證會話ID的傳遞;3.檢查會話數據的存儲和讀取;4.查看服務器配置。通過輸出會話ID和數據、查看會話文件內容等方法,可以有效診斷和解決會話相關的問題。

如果session_start()被多次調用會發生什麼?如果session_start()被多次調用會發生什麼?Apr 25, 2025 am 12:06 AM

多次調用session_start()會導致警告信息和可能的數據覆蓋。 1)PHP會發出警告,提示session已啟動。 2)可能導致session數據意外覆蓋。 3)使用session_status()檢查session狀態,避免重複調用。

您如何在PHP中配置會話壽命?您如何在PHP中配置會話壽命?Apr 25, 2025 am 12:05 AM

在PHP中配置會話生命週期可以通過設置session.gc_maxlifetime和session.cookie_lifetime來實現。 1)session.gc_maxlifetime控制服務器端會話數據的存活時間,2)session.cookie_lifetime控制客戶端cookie的生命週期,設置為0時cookie在瀏覽器關閉時過期。

使用數據庫存儲會話的優點是什麼?使用數據庫存儲會話的優點是什麼?Apr 24, 2025 am 12:16 AM

使用數據庫存儲會話的主要優勢包括持久性、可擴展性和安全性。 1.持久性:即使服務器重啟,會話數據也能保持不變。 2.可擴展性:適用於分佈式系統,確保會話數據在多服務器間同步。 3.安全性:數據庫提供加密存儲,保護敏感信息。

您如何在PHP中實現自定義會話處理?您如何在PHP中實現自定義會話處理?Apr 24, 2025 am 12:16 AM

在PHP中實現自定義會話處理可以通過實現SessionHandlerInterface接口來完成。具體步驟包括:1)創建實現SessionHandlerInterface的類,如CustomSessionHandler;2)重寫接口中的方法(如open,close,read,write,destroy,gc)來定義會話數據的生命週期和存儲方式;3)在PHP腳本中註冊自定義會話處理器並啟動會話。這樣可以將數據存儲在MySQL、Redis等介質中,提升性能、安全性和可擴展性。

什麼是會話ID?什麼是會話ID?Apr 24, 2025 am 12:13 AM

SessionID是網絡應用程序中用來跟踪用戶會話狀態的機制。 1.它是一個隨機生成的字符串,用於在用戶與服務器之間的多次交互中保持用戶的身份信息。 2.服務器生成並通過cookie或URL參數發送給客戶端,幫助在用戶的多次請求中識別和關聯這些請求。 3.生成通常使用隨機算法保證唯一性和不可預測性。 4.在實際開發中,可以使用內存數據庫如Redis來存儲session數據,提升性能和安全性。

您如何在無狀態環境(例如API)中處理會議?您如何在無狀態環境(例如API)中處理會議?Apr 24, 2025 am 12:12 AM

在無狀態環境如API中管理會話可以通過使用JWT或cookies來實現。 1.JWT適合無狀態和可擴展性,但大數據時體積大。 2.Cookies更傳統且易實現,但需謹慎配置以確保安全性。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

將Eclipse與SAP NetWeaver應用伺服器整合。

WebStorm Mac版

WebStorm Mac版

好用的JavaScript開發工具

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。