DB2 10 Inline LOBS. Sandi Smith BMC Software Inc. Session Code: E10 2011, November 16 9:45-10:45 Platform: DB2 for z/os

Similar documents
LOBs were introduced back with DB2 V6, some 13 years ago. (V6 GA 25 June 1999) Prior to the introduction of LOBs, the max row size was 32K and the

DB2 10 Tips and Other Performance Topics

Session: Archiving DB2 comes to the rescue (twice) Steve Thomas CA Technologies. Tuesday Nov 18th 10:00 Platform: z/os

IBM DB2 for z/os. DB2 Version 9 - Zusammenfassung. (DB2_V9_SUMMARYnews.ppt) Dez, 09 1 (*)

A basic create statement for a simple student table would look like the following.

Performance rule violations usually result in increased CPU or I/O, time to fix the mistake, and ultimately, a cost to the business unit.

database abstraction layer database abstraction layers in PHP Lukas Smith BackendMedia

4 Simple Database Features

MS SQL Performance (Tuning) Best Practices:

3.GETTING STARTED WITH ORACLE8i

DBAs having to manage DB2 on multiple platforms will find this information essential.

Best Practices. Using IBM InfoSphere Optim High Performance Unload as part of a Recovery Strategy. IBM Smart Analytics System

DB2 for z/os: Utilities and Application Development

Database Migration from MySQL to RDM Server

SAP Performance Review/System Health Check

Database Programming with PL/SQL: Learning Objectives

DB2 for z/os Utilities Best Practices

Managing Objects with Data Dictionary Views. Copyright 2006, Oracle. All rights reserved.

Programming with SQL

Introduction to Microsoft Jet SQL

In this session, we use the table ZZTELE with approx. 115,000 records for the examples. The primary key is defined on the columns NAME,VORNAME,STR

Introduction to the Oracle DBMS

Chapter 13 File and Database Systems

Chapter 13 File and Database Systems

StreamServe Persuasion SP5 Oracle Database

How To Create A Table In Sql (Ahem)

SQL Simple Queries. Chapter 3.1 V3.0. Napier University Dr Gordon Russell

DB2 for z/os: [Some] Backup and Recovery Utility Enhancements in V8/9/10

MyOra 3.0. User Guide. SQL Tool for Oracle. Jayam Systems, LLC

Optimizing Your Database Performance the Easy Way

Revolutionized DB2 Test Data Management

SQL Performance for a Big Data 22 Billion row data warehouse

Data Compression in Blackbaud CRM Databases

Best Practices for DB2 on z/os Performance

Instant SQL Programming

Chapter 6: Physical Database Design and Performance. Database Development Process. Physical Design Process. Physical Database Design

DB2 V8 Performance Opportunities

Embedded SQL. Unit 5.1. Dr Gordon Russell, Napier University

SQL Server Training Course Content

Data Warehousing With DB2 for z/os... Again!

SAP Business Objects Business Intelligence platform Document Version: 4.1 Support Package Data Federation Administration Tool Guide

SQL Replication Guide and Reference

AUTHENTICATION... 2 Step 1:Set up your LDAP server... 2 Step 2: Set up your username... 4 WRITEBACK REPORT... 8 Step 1: Table structures...

Experiment 5.1 How to measure performance of database applications?

OLTP Meets Bigdata, Challenges, Options, and Future Saibabu Devabhaktuni

Teradata Utilities Class Outline

SQL Server for developers. murach's TRAINING & REFERENCE. Bryan Syverson. Mike Murach & Associates, Inc. Joel Murach

ENHANCEMENTS TO SQL SERVER COLUMN STORES. Anuhya Mallempati #

ArcSDE Configuration and Tuning Guide for Oracle. ArcGIS 8.3

Performance Tuning for the Teradata Database

5. CHANGING STRUCTURE AND DATA

IBM Redistribute Big SQL v4.x Storage Paths IBM. Redistribute Big SQL v4.x Storage Paths

Safe Harbor Statement

Review your answers, feedback, and question scores below. An asterisk (*) indicates a correct answer.

How Strings are Stored. Searching Text. Setting. ANSI_PADDING Setting

Chapter 5 More SQL: Complex Queries, Triggers, Views, and Schema Modification

System Monitor Guide and Reference

Data Tool Platform SQL Development Tools

W I S E. SQL Server 2008/2008 R2 Advanced DBA Performance & WISE LTD.

1Z0-117 Oracle Database 11g Release 2: SQL Tuning. Oracle

Improve SQL Performance with BMC Software

CA Log Analyzer for DB2 for z/os

Raima Database Manager Version 14.0 In-memory Database Engine

An Oracle White Paper January Advanced Compression with Oracle Database 11g

MyOra 3.5. User Guide. SQL Tool for Oracle. Kris Murthy

Firebird. Embedded SQL Guide for RM/Cobol

Oracle Database 11g Express Edition PL/SQL and Database Administration Concepts -II

Best Practices. Temporal Data Management with DB2

Oracle Database 11 g Performance Tuning. Recipes. Sam R. Alapati Darl Kuhn Bill Padfield. Apress*

Monitoring Agent for PostgreSQL Fix Pack 10. Reference IBM

IT2304: Database Systems 1 (DBS 1)

How To Improve Your Database Performance

Working with DB2 UDB objects

Porting from Oracle to PostgreSQL

Migrating Non-Oracle Databases and their Applications to Oracle Database 12c O R A C L E W H I T E P A P E R D E C E M B E R

SharePoint 2010 Performance and Capacity Planning Best Practices

Who am I? Copyright 2014, Oracle and/or its affiliates. All rights reserved. 3

Principles of Database Management Systems. Overview. Principles of Data Layout. Topic for today. "Executive Summary": here.

Database Administration with MySQL

Oracle. Brief Course Content This course can be done in modular form as per the detail below. ORA-1 Oracle Database 10g: SQL 4 Weeks 4000/-

IT2305 Database Systems I (Compulsory)

Advanced SQL. Jim Mason. Web solutions for iseries engineer, build, deploy, support, train

Automatic Data Optimization

Writing SQL. PegaRULES Process Commander

Optimizing the Performance of the Oracle BI Applications using Oracle Datawarehousing Features and Oracle DAC

Oracle Backup and Recover 101. Osborne Press ISBN

PeopleSoft DDL & DDL Management

A Brief Introduction to MySQL

TrendWorX32 SQL Query Engine V9.2 Beta III

Part 5: More Data Structures for Relations

DBA Best Practices: A Primer on Managing Oracle Databases. Leng Leng Tan Vice President, Systems and Applications Management

IBM DB2: LUW Performance Tuning and Monitoring for Single and Multiple Partition DBs

DBMaster. Backup Restore User's Guide P-E5002-Backup/Restore user s Guide Version: 02.00

SQL Optimization & Access Paths: What s Old & New Part 1

Optimizing Performance. Training Division New Delhi

Transcription:

DB2 10 Inline LOBS Sandi Smith BMC Software Inc. Session Code: E10 2011, November 16 9:45-10:45 Platform: DB2 for z/os

Introduction Click to edit Master title style LOBs have been available since DB2 V6 Need for LOBs because of limitations of VARCHAR Maximum length of VARCHAR is 32K Every row has maximum bytes allocated LOBs allowed storage of data in a separate space Improvements to LOBs in each release INLINE LOBs introduced in DB2 V10 ENFM mode

Agenda Understand how INLINE LOBs work Learn how to create INLINE LOBs Discuss how to determine the best INLINE LENGTH value. Pinpoint the new V10 features that affect INLINE LOBs (ZPARMS,utilities) Explore how INLINE LOBs effect processing regarding DASD savings and processing savings.

A short history of LOBs V6 EBCDIC & ASCII V7 UNICODE, ability to use LOAD & UNLOAD LOBS materialized using data spaces CHECK LOB identify structural defects in LOB TS and invalid LOB values CHECK DATA validate consistency between base and auxiliary tables V8 LOBs materialized using DBM1 storage above 2GB ZPARMS to limit storage allocation for LOB materializaation LOBVALA size per user LOBVALS size per system Auto genation of ROWID column and base table XMB2CLOB function convert XML value into a CLOB

LOBs in V9 Click to edit Master title style LOAD/UNLOAD - ability to use file reference ZPARM MAXOFILR control max number of file references concurrently open REORG removes embedded free space, attempts to make LOB pages contiguous and uses shadow data sets REORG SHRLEVEL REFERENCE longer availability during reorg Avoidance of LOB locking - LOB lock is no longer required to serialize the consistency between the value of the LOB and the column of the base row for an uncommitted read, resulting in fewer locks and less locking overhead Automatic creation of objects omit IN clause in CREATE TABLE FETCH CONTINUE way for applications to read LOB data without having to materialize the entire LOB in memory or use LOB LOCATORs CHECK LOB SHRLEVEL CHANGE CHECK DATA SHRLEVEL CHANGE

LOBs in V10 Click to edit Master title style REORG enhancements Allow SHRLEVEL CHANGE Permit rows to move between partitions Add AUX YES syntax INLINE LOBs introduced Eliminate LOB materialization within DB2 Alter AUX tablespace and index page size DEFINE NO on AUX tablespace and index Spanned records in LOAD and UNLOAD Alter maximum length of LOB column

How do INLINE LOBS work? The data for an outline LOB column (non-inline LOB) is contained entirely in the auxiliary table The data for an INLINE LOB column is contained in the base table and (optionally) in the auxiliary table The size of your data and the value of the INLINE LENGTH determine what data is stored where.

CREATE TABLE BMCTABLE (KEYCOL1 INTEGER,CHARCOL1 CHAR(20),CHARLOB CLOB(1M) INLINE LENGTH( 2000)) CHARLOB contains 1024 bytes of data OUTLINE LOB INLINE LOB BASE TABLESPACE KEYCOL1 CHARCOL1 BASE TABLESPACE KEYCOL1 CHARCOL1 CHARLOB AUX TABLESPACE CHARLOB

CREATE TABLE BMCTABLE (KEYCOL1 INTEGER,CHARCOL1 CHAR(20),CHARLOB CLOB(1M) INLINE LENGTH( 2000)) OUTLINE LOB CHARLOB contains 2200 bytes of data INLINE LOB BASE TABLESPACE KEYCOL1 CHARCOL1 BASE TABLESPACE KEYCOL1 CHARCOL1 CHARLOB (2000 bytes) AUX TABLESPACE CHARLOB (2200 bytes) AUX TABLESPACE CHARLOB (200 bytes)

How do you create an INLINE LOB? Universal Table Space only Must be Reordered Row Format Define No on AUX table space INLINE LOB columns can be used in index on expression SUBSTR only, INLINE portion only Start and end values must be constants If you use TYPE to define INLINE LOB, you cannot use LOB column in index on expression and you cannot specify a default value

How do you create an INLINE LOB? CREATE TYPE BMC.BMC_CHARLOB AS CLOB(1M) CCSID ASCII INLINE LENGTH 32680; CREATE TABLE BMC.TABLE1 (KEYCOL1 INTEGER,CHARLOB BMC.BMC_CHARLOB CREATE TABLE BMC.TABLE2 (KEYCOL1 INTEGER,BINLOB BLOB(1M) INLINE LENGTH (32680) WITH DEFAULT CAST('BMC IS THE BEST! AS BLOB) CREATE TABLE BMC.TABLE3 (KEYCOL1 INTEGER,DBCHARLOB DBCLOB(1M) INLINE LENGTH (16340)

CREATE INDEX BMC.INDEX1 ON BMC.TABLE1 (CHAR(SUBSTR(CHARLOB,1,200)) ) USING STOGROUP AFR10003SG ; SELECT DBCHARLOB FROM BMC.TABLE1 WHERE CHAR(SUBSTR(CHARLOB,21,10)) = pick me ;

What is a good value for INLINE LENGTH? Factors that affect the decision LOB column frequency of reference Distribution of LOB column sizes Page size of base tablespace Compressibility of LOB data Search requirements on LOB data Information and discussion of these topics can be found in DB2 V10 Performance Topics redbook publication

LOB column frequency of reference If LOB column is rarely referenced, storing the LOB column inline will increase size of row, resulting in fewer rows stored per page and lower hit ratio If LOB column is frequently referenced, storing the LOB column inline will result in fewer I/O and possible DASD savings. But, other factors need to be considered too.

Distribution of LOB column sizes Need to consider size of the row and size of the page If the LOB column will fit entirely inline 90% of the time, then it is beneficial to inline the LOB If the LOB column will overflow 90% of the time, it doesn t make sense to inline the LOB (increased I/O) Statistics on the distribution of LOB column lengths are not maintained in the DB2 catalog. DB2 V10 Peformance Topics provides a sample SQL query to print column size distribution for your data (page 109)

SQL query to display LOB column sizes Query uses LENGTH function to pull the actual length of the LOB column for each row WITH LOB_DIST_TABLE (LOB_LENGTH, LOB_COUNT) AS(SELECT LOBCOL_LENGTH, COUNT(*) FROM(SELECT ((LENGTH(lob column name) / 4000) + 1) * 4000 AS LOBCOL_LENGTH FROM table name) LOB_COL_LENGTH_TABLE GROUP BY LOBCOL_LENGTH) SELECT '04000', SUM(LOB_COUNT) FROM LOB_DIST_TABLE WHERE LOB_LENGTH <= 4000 UNION SELECT '08000', SUM(LOB_COUNT) FROM LOB_DIST_TABLE WHERE LOB_LENGTH <= 8000 UNION.. The end result is a report that shows how many LOB rows fit into each multiple of 4000 bytes in length.

Example of output from SQL query to display LOB column sizes LOB_LENGTH LOB_COUNT ------------------ ---------------- 04000 35208 << of the 35263 rows, 35208 are 4000 or less.. 16000 35255 20000 35263 24000 35263 << 0 are between 20001 and 28000. 99999 35263 << 35263 total rows Counts are a cumulative distribution Helps you determine what page size and inline length to use

Display number of LOB columns If you want to find out how many LOBs you have in a specific database or schema, you can issue an SQL statement like this SELECT SUBSTR(TBCREATOR,1,15) AS TBCREATOR, SUBSTR(TBNAME,1,15) AS TBNAME, SUBSTR(NAME,1,15) AS COLNAME, COLTYPE, LENGTH2 FROM SYSIBM.SYSCOLUMNS WHERE TBCREATOR LIKE 'SYS%' AND COLTYPE IN ('BLOB','CLOB','DBCLOB') ;

Output from query to display number of LOB columns -------------------------------------------------------------------------- TBCREATOR TBNAME COLNAME COLTYPE LENGTH2 -------------------------------------------------------------------------- SYSIBM SYSQUERY_AUX AUXVALUE CLOB 209715 SYSIBM SYSROUTINES TEXT CLOB 209715 SYSIBM SYSROUTINES PARSETREE BLOB 107374182 SYSIBM SYSROUTINESTEXT AUXVALUE CLOB 209715 SYSIBM SYSROUTINES_TRE AUXVALUE BLOB 107374182 SYSIBM SYSTABLES_PROFI PROFILE_TEXT CLOB 104857 SYSIBM SYSTRIGGERS STATEMENT CLOB 209715 SYSIBM SYSTRIGGERS_STM AUXVALUE CLOB 209715 SYSIBM SYSVIEWS STATEMENT CLOB 209715 SYSIBM SYSVIEWS PARSETREE BLOB 107374182 SYSIBM SYSVIEWS_STMT AUXVALUE CLOB 209715

Display number of INLINE LOB columns If you want to find out how many INLINE LOBs you have in a specific database or schema, you can issue an SQL statement like this SELECT SUBSTR(TBCREATOR,1,15) AS TBCREATOR, SUBSTR(TBNAME,1,15) AS TBNAME, SUBSTR(NAME,1,15) AS COLNAME, COLTYPE, LENGTH FROM SYSIBM.SYSCOLUMNS WHERE TBCREATOR LIKE 'SYS%' AND COLTYPE IN ('BLOB','CLOB','DBCLOB') ; AND LENGTH > 4;

Output from query to display number of INLINE LOB columns TBCREATOR TBNAME COLNAME COLTYPE LENGTH +--------------------------------------------------------+ SYSIBM SYSCONTR RULETEXT CLOB 16004 SYSIBM SYSCONTR DESCRIPT BLOB 12004 SYSIBM SYSPACKS STATEMEN CLOB 15364 SYSIBM SYSPACKS STMTBLOB BLOB 7172 SYSIBM SYSQUERY STMTTEXT CLOB 2052 SYSIBM SYSVIEWS PARSETRE BLOB 27674

Page size of base table space Determines how many rows fit on a page. For outline LOBS, only one row can be stored on a LOB tablespace page. With INLINE LOBS, you can fit many on a page. Small page size and large lob = few rows per page Large page size and small lob = many rows per page Alter INLINE LENGTH, alter BUFFERPOOL, and REORG allows experimentation

Compressibility of LOB data LOB data in AUX table spaces cannot be compressed Compression of INLINE LOB data can save space and I/O by storing multiple rows per page CLOBs are good compression candidates Use DSN1COMP to gather information about compressibility

LOB column search requirements Able to build index on expression on INLINE LOB column Restricted to SUBSTR expression Allows search for a text string in LOB data

ZPARM that effects INLINE LOB LOB_INLINE_LENGTH Determines inline length value if none specified in DDL Default value is 0 (outline LOB). BMC recommends you do not change this value Valid values 0-32680 (bytes) If this value is greater than lob length in the DDL, DB2 will use the lob length as the inline length If the total length of the table columns plus the inline length exceed a page size, DB2 will issue a -670 error -670, ERROR: THE RECORD LENGTH OF THE TABLE EXCEEDS THE PAGE SIZE LIMIT

Alters available for INLINE LOBs Alter Add INLINE LENGTH to existing LOB column Space left in AREO status after alter Cannot create index on expression until after a reorg Alter increase existing INLINE LENGTH Space left in AREO status after alter Newly inserted rows will have new inline length Cannot increment to length greater than LOB column length Alter decrease existing INLINE LENGTH Space left in REORP status after alter Cannot decrement if space has index on expression Cannot decrement if new inline length is less than default Alter add LOB column with INLINE LENGTH to existing table

REORG support for INLINE LOBs If a LOB is not fully inlined, base and auxiliary objects should be reorganized in the same step. Use AUX YES and SHRLEVEL REFERENCE. With AUX Yes you must use TEMPLATE for copy datasets UNLOAD ONLY and UNLOAD EXTERNAL are not available for tables with INLINE LOB

LOAD/UNLOAD support for INLINE LOBs UNLOAD/LOAD with spanned records Don t need LOB File Reference Variables UNLOAD EXTERNAL is invalid for INLINE LOBs

What are the advantages of using INLINE LOBS? DASD savings. Disk space savings: Inline LOBS allow more than one LOB per page Inline portion of a LOB can be compressed If LOB size is 4K and the page size is 4K, then there are no DASD savings because you can only store one LOB in a page of a base table space If LOB is 1K and the page size is 4K, then DASD savings is significant. Each inline LOB consumes 1K of DASD, while each LOB stored in a LOB table space consumes 4 K of DASD space, or four times as much DASD DASD savings for inline LOBs are greatest when you have small LOBs and many of them. Compression can also contribute to savings for inline LOBs.

What are the advantages of using INLINE LOBS? CPU savings. Performance Enhancement Synchronous I/Os to the AUX index and LOB table space are avoided for fully INLINE LOB CPU savings associated with accessing the AUX index and LOB table space for fully INLINE LOB Index on expression can be enabled for LOB data to provide more direct access

31 Base Table Space Format Header Space Map Data Dictionary Pages Data Pages Standard UPDATE behavior Header Page ------------------------------------- Space Map ------------------------------------- Data Dictionary Pages ------------------------------------- Data Pages

32 LOB SPACE Format Header High Level Space Map Low Level Space Map LOB Map and Data Pages UPDATES induce a delete of the before image and insert of the after image Header Page ------------------------------------- High Level Space Map ------------------------------------- Low Level Space Maps 1-16 ------------------------------------- Lob Map and Data Pages ------------------------------------- Low Level Space Maps 17-32 ------------------------------------- Lob Map and Data Pages

DB2 Catalog Tables affected by INLINE LOBs SYSIBM.SYSDATATYPES -- new column INLINE_LENGTH value of -1 = no INLINE LENGTH value greater than or equal zero = inline length attribute (in byte) of the type if it is based on a LOB source type SYSIBM.SYSCOLUMNS column LENGTH. The number does not include the internal prefixes that are used to record the actual length and null state, where applicable. value > 4 = value of INLINE LENGTH + 4. The maximum length of the LOB column is found in column LENGTH2 SYSIBM.SYSCOPY -- column ICTYPE=A and column STYPE=I for Alter INLINE LENGTH activity TTYPE=I REORG INCREASE INLINE LENGTH TTYPE=D REORG DECREASE INLINE LENGTH

DB2 Catalog Tables affected by INLINE LOBs SYSIBM.SYSTABLEPART CHECKFLAG new values D - inline length of LOB column was decremented with an alter I inline length of LOB column was incremented with an alter

DB2 Directory Tables affected by INLINE LOBs DSNDB01.SPT01 now a Partition-by-Growth space ZPARM - SPT01_INLINE_LENGTH Max inline length of LOB column in SPT01 valid values = NOINLINE, 1 32138 default value is 32138 Use the largest possible setting to decrease fetches from auxiliary tables and increase compression efficiency ZPARM - COMPRESS_SPT01 specifies whether the SPT01 table space is to be compressed. valid values = NO, YES default is NO All data sharing members must use the same settings for these parms

My experiment objects and data Three object types CLOB(2000) (outline lob) CLOB(2000) INLINE LENGTH 1600 (no overflow, index on expression) CLOB(2000) INLINE LENGTH 1000 (overflow, index on expression) Used different page sizes -- 4K,32K, 32K compressed Columns in table: LOB, integer, timestamp 500,000 rows LOB data is 1500 bytes Measured EXCP in MSTR, DBM1, DIST, IRLM

Dasd (in tracks) Click to edit Master title style 70000 60000 50000 40000 4K 32K 32C 30000 20000 10000 0 Outline LOB Inline LOB Inline LOB w/ov

LOAD EXCP Click to edit Master title style 1400000 1200000 1000000 800000 600000 Load 4K Load 32K Load 32C 400000 200000 0 Outline LOB Inline LOB Inline LOB w/ov

COPY EXCP Click to edit Master title style 800000 700000 600000 4K 500000 32K 400000 32C 300000 200000 100000 0 Outline LOB Inline LOB Inline LOB w/ov

DELETE EXCP Click to edit Master title style 18000 16000 14000 12000 10000 8000 4K 32K 32C 6000 4000 2000 0 Outline LOB Inline LOB Inline LOB w/ov

INSERT EXCP Click to edit Master title style 3500000 3000000 2500000 4K 2000000 1500000 32K 32C 1000000 500000 0 Outline LOB Inline LOB Inline LOB w/ov

Summary There is no definitive answer as to whether using INLINE LOBs will benefit your shop. It depends on your data and usage trends.

Bibliography DB2 10 for z/os SQL Reference, SC19-2983-02 DB2 10 for z/os Utility Guide and Reference, SC19-2984-02 DB2 V10 Performance Topics http://www.redbooks.ibm.com/redbooks.nsf/redbookabstracts/sg 247942.html?Open

Sandi Smith BMC Software Inc. sandi_smith@bmc.com E10 DB2 10 Inline LOBs