Three pages of summary about

profilealgxrme66
Coronel_PPT_Ch11.ppt

Database Systems Design, Implementation, and Management

Coronel | Morris

11e

©2015 Cengage Learning. All Rights Reserved. May not be scanned, copied or duplicated, or posted to a publicly accessible website, in whole or in part.

Chapter 11

Database Performance Tuning and Query Optimization

©2015 Cengage Learning. All Rights Reserved. May not be scanned, copied or duplicated, or posted to a publicly accessible website, in whole or in part.

Learning Objectives

  • In this chapter, the student will learn:
  • Basic database performance-tuning concepts
  • How a DBMS processes SQL queries
  • About the importance of indexes in query processing
  • About the types of decisions the query optimizer has to make
  • Some common practices used to write efficient SQL code
  • How to formulate queries and tune the DBMS for optimal performance

*

©2015 Cengage Learning. All Rights Reserved. May not be scanned, copied or duplicated, or posted to a publicly accessible website, in whole or in part.

Database Performance-Tuning Concepts

  • Goal of database performance is to execute queries as fast as possible
  • Database performance tuning: Set of activities and procedures that reduce response time of database system
  • Fine-tuning the performance of a system requires that all factors must operate at optimum level with minimal bottlenecks

*

©2015 Cengage Learning. All Rights Reserved. May not be scanned, copied or duplicated, or posted to a publicly accessible website, in whole or in part.

Table 11.1 - General Guidelines for Better System Performance

*

©2015 Cengage Learning. All Rights Reserved. May not be scanned, copied or duplicated, or posted to a publicly accessible website, in whole or in part.

Performance Tuning: Client and Server

  • Client side
  • SQL performance tuning: Generates SQL query that returns correct answer in least amount of time
  • Using minimum amount of resources at server
  • Server side
  • DBMS performance tuning: DBMS environment configured to respond to clients’ requests as fast as possible
  • Optimum use of existing resources

*

©2015 Cengage Learning. All Rights Reserved. May not be scanned, copied or duplicated, or posted to a publicly accessible website, in whole or in part.

DBMS Architecture

  • All data in a database are stored in data files
  • Data files automatically expand in predefined increments known as extends
  • Data files are grouped in file groups or table spaces
  • Table space or file group: Logical grouping of several data files that store data with similar characteristics
  • Data cache or buffer cache: Shared, reserved memory area
  • Stores most recently accessed data blocks in RAM

*

©2015 Cengage Learning. All Rights Reserved. May not be scanned, copied or duplicated, or posted to a publicly accessible website, in whole or in part.

DBMS Architecture

  • SQL cache or procedure cache: Stores most recently executed SQL statements or PL/SQL procedures
  • DBMS retrieves data from permanent storage and places them in RAM
  • Input/output request: Low-level data access operation that reads or writes data to and from computer devices
  • Data cache is faster than working with data files
  • Majority of performance-tuning activities focus on minimizing I/O operations

*

©2015 Cengage Learning. All Rights Reserved. May not be scanned, copied or duplicated, or posted to a publicly accessible website, in whole or in part.

Figure 11.1 - Basic DBMS Architecture

*

©2015 Cengage Learning. All Rights Reserved. May not be scanned, copied or duplicated, or posted to a publicly accessible website, in whole or in part.

Database Query Optimization Modes

  • Algorithms proposed for query optimization are based on:
  • Selection of the optimum order to achieve the fastest execution time
  • Selection of sites to be accessed to minimize communication costs
  • Evaluated on the basis of:
  • Operation mode
  • Timing of its optimization

*

©2015 Cengage Learning. All Rights Reserved. May not be scanned, copied or duplicated, or posted to a publicly accessible website, in whole or in part.

Classification of Operation Modes

  • Automatic query optimization: DBMS finds the most cost-effective access path without user intervention
  • Manual query optimization: Requires that the optimization be selected and scheduled by the end user or programmer

*

©2015 Cengage Learning. All Rights Reserved. May not be scanned, copied or duplicated, or posted to a publicly accessible website, in whole or in part.

Classification Based on Timing of Optimization

  • Static query optimization: best optimization strategy is selected when the query is compiled by the DBMS
  • Takes place at compilation time
  • Dynamic query optimization: Access strategy is dynamically determined by the DBMS at run time, using the most up-to-date information about the database
  • Takes place at execution time

*

©2015 Cengage Learning. All Rights Reserved. May not be scanned, copied or duplicated, or posted to a publicly accessible website, in whole or in part.

Classification Based on Type of Information Used to Optimize the Query

  • Statistically based query optimization algorithm: Statistics are used by the DBMS to determine the best access strategy
  • Statistical information is generated by DBMS through:
  • Dynamic statistical generation mode
  • Manual statistical generation mode
  • Rule-based query optimization algorithm: based on a set of user-defined rules to determine the best query access strategy

*

©2015 Cengage Learning. All Rights Reserved. May not be scanned, copied or duplicated, or posted to a publicly accessible website, in whole or in part.

Table 11.2 - Sample Database Statistics Measurements

*

©2015 Cengage Learning. All Rights Reserved. May not be scanned, copied or duplicated, or posted to a publicly accessible website, in whole or in part.

Query Processing

*

©2015 Cengage Learning. All Rights Reserved. May not be scanned, copied or duplicated, or posted to a publicly accessible website, in whole or in part.

SQL Parsing Phase

  • Query is broken down into smaller units
  • Original SQL query is transformed into slightly different version of the original SQL code which is fully equivalent and more efficient
  • Query optimizer: Analyzes SQL query and finds most efficient way to access data
  • Access plans: DBMS-specific and translate client’s SQL query into a series of complex I/O operations

*

©2015 Cengage Learning. All Rights Reserved. May not be scanned, copied or duplicated, or posted to a publicly accessible website, in whole or in part.

SQL Parsing Phase

  • If access plan already exists for query in SQL cache, DBMS reuses it
  • If not, optimizer evaluates various plans and chooses one to be placed in SQL cache for use

*

©2015 Cengage Learning. All Rights Reserved. May not be scanned, copied or duplicated, or posted to a publicly accessible website, in whole or in part.

SQL Execution Phase

  • All I/O operations indicated in the access plan are executed
  • Locks are acquired
  • Data are retrieved and placed in data cache
  • Transaction management commands are processed

*

©2015 Cengage Learning. All Rights Reserved. May not be scanned, copied or duplicated, or posted to a publicly accessible website, in whole or in part.

SQL Fetching Phase

  • Rows of resulting query result set are returned to client
  • DBMS may use temporary table space to store temporary data
  • Database server coordinates the movement of the result set rows from the server cache to the client cache

*

©2015 Cengage Learning. All Rights Reserved. May not be scanned, copied or duplicated, or posted to a publicly accessible website, in whole or in part.

Query Processing Bottlenecks

  • Delay introduced in the processing of an I/O operation that slows the system
  • Caused by the:
  • CPU
  • RAM
  • Hard disk
  • Network
  • Application code

*

©2015 Cengage Learning. All Rights Reserved. May not be scanned, copied or duplicated, or posted to a publicly accessible website, in whole or in part.

Indexes and Query Optimization

  • Indexes
  • Help speed up data access
  • Facilitate searching, sorting, using aggregate functions, and join operations
  • Ordered set of values that contain the index key and pointers
  • More efficient than a full table scan

*

©2015 Cengage Learning. All Rights Reserved. May not be scanned, copied or duplicated, or posted to a publicly accessible website, in whole or in part.

Indexes and Query Optimization

  • Data sparsity: Number of different values a column could have
  • Data structures used to implement indexes:
  • Hash indexes
  • B-tree indexes
  • Bitmap indexes
  • DBMSs determine best type of index to use

*

©2015 Cengage Learning. All Rights Reserved. May not be scanned, copied or duplicated, or posted to a publicly accessible website, in whole or in part.

Optimizer Choices

  • Rule-based optimizer: Uses preset rules and points to determine the best approach to execute a query
  • Cost-based optimizer: Uses algorithms based on statistics about objects being accessed to determine the best approach to execute a query

*

©2015 Cengage Learning. All Rights Reserved. May not be scanned, copied or duplicated, or posted to a publicly accessible website, in whole or in part.

Using Hints to Affect Optimizer Choices

  • Optimizer might not choose the best execution plan
  • Makes decisions based on existing statistics, which might be old
  • Might choose less-efficient decisions
  • Optimizer hints: Special instructions for the optimizer, embedded in the SQL command text

*

©2015 Cengage Learning. All Rights Reserved. May not be scanned, copied or duplicated, or posted to a publicly accessible website, in whole or in part.

Table 11.5 - Optimizer Hints

*

©2015 Cengage Learning. All Rights Reserved. May not be scanned, copied or duplicated, or posted to a publicly accessible website, in whole or in part.

SQL Performance Tuning

  • Evaluated from client perspective
  • Most current relational DBMSs perform automatic query optimization at the server end
  • Most SQL performance optimization techniques are DBMS-specific and thus rarely portable
  • Majority of performance problems are related to poorly written SQL code

*

©2015 Cengage Learning. All Rights Reserved. May not be scanned, copied or duplicated, or posted to a publicly accessible website, in whole or in part.

Index Selectivity

  • Measure of the likelihood that an index will be used in query processing
  • Indexes are used when a subset of rows from a large table is to be selected based on a given condition
  • Index cannot always be used to improve performance
  • Function-based index: Based on a specific SQL function or expression

*

©2015 Cengage Learning. All Rights Reserved. May not be scanned, copied or duplicated, or posted to a publicly accessible website, in whole or in part.

Conditional Expressions

  • Expressed within WHERE or HAVING clauses of a SQL statement
  • Restricts the output of a query to only rows matching conditional criteria
  • Guidelines to write efficient conditional expressions in SQL code
  • Use simple columns or literals as operands
  • Numeric field comparisons are faster than character, date, and NULL comparisons

*

©2015 Cengage Learning. All Rights Reserved. May not be scanned, copied or duplicated, or posted to a publicly accessible website, in whole or in part.

Conditional Expressions

  • Equality comparisons are faster than inequality comparisons
  • Transform conditional expressions to use literals
  • Write equality conditions first when using multiple conditional expressions
  • When using multiple AND conditions, write the condition most likely to be false first
  • When using multiple OR conditions, put the condition most likely to be true first
  • Avoid the use of NOT logical operator

*

©2015 Cengage Learning. All Rights Reserved. May not be scanned, copied or duplicated, or posted to a publicly accessible website, in whole or in part.

Query Formulation

  • Identify what columns and computations are required
  • Identify source tables
  • Determine how to join tables
  • Determine what selection criteria are needed
  • Determine the order in which to display the output

*

©2015 Cengage Learning. All Rights Reserved. May not be scanned, copied or duplicated, or posted to a publicly accessible website, in whole or in part.

DBMS Performance Tuning

  • Managing DBMS processes in primary memory and the structures in physical storage
  • DBMS performance tuning at server end focuses on setting parameters used for:
  • Data cache
  • SQL cache
  • Sort cache
  • Optimizer mode
  • In-memory database: Store large portions of the database in primary storage

*

©2015 Cengage Learning. All Rights Reserved. May not be scanned, copied or duplicated, or posted to a publicly accessible website, in whole or in part.

DBMS Performance Tuning

  • Recommendations for physical storage of databases:
  • Use RAID (Redundant Array of Independent Disks) to provide a balance between performance improvement and fault tolerance
  • Minimize disk contention
  • Put high-usage tables in their own table spaces
  • Assign separate data files in separate storage volumes for indexes, system, and high-usage tables

*

©2015 Cengage Learning. All Rights Reserved. May not be scanned, copied or duplicated, or posted to a publicly accessible website, in whole or in part.

DBMS Performance Tuning

  • Take advantage of the various table storage organizations in the database
  • Index-organized table or clustered index table: Stores the end-user data and the index data in consecutive locations in permanent storage
  • Partition tables based on usage
  • Use denormalized tables where appropriate
  • Store computed and aggregate attributes in tables

*