# US 8,788,527 B1 · Object-level database performance management

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 8,788,527 B1
- Document ID: US8788527B1
- Status: Granted
- Kind: B1
- Application number: 13/209,745
- Filed: 2011-08-15
- Granted: 2014-07-22
- Earliest claimed: 2003-12-31
- Assignees: Precise Software Solutions, Inc.
- Applicants: Gil Nadel; Kristiaan Kolk
- Inventors: Gil Nadel; Kristiaan Kolk
- Web page: https://patentgrep.com/patent/US8788527B1

## CPC

- G06F 16/217: {Database tuning (G06F16/2282 takes precedence; database performance monitoring G06F11/3409)}
- Y10S 707/99932: Access augmentation or optimizing
- Y10S 707/99933: Query processing, i.e. searching
- Y10S 707/99939: Privileged access
- Y10S 707/99944: Object-oriented database structure
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- Y10S: TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS

## Abstract

A method and system are provided for object-level database monitoring and tuning in a performance management system. Performance data for a plurality of database objects in a database server computer system are collected and stored. A performance problem in the database server computer system is detected. A problematic database object is identified using the performance data for the plurality of database objects, wherein the problematic database object is related to the performance problem. The problematic database object is tuned to improve performance of the database server computer system.

## Claims

### Claim 1

A method, including steps of
by a measurement component at a server, for one or more database objects, measuring a performance timing effect associated with accessing said database objects;
identifying a particular database object in response to said performance timing effect, said particular database object adversely effecting performance of said server in correlation with said performance timing effect;
wherein said steps of identifying include steps of periodically sampling a database performance view, said database performance view being responsive to said performance timing effect; and measuring which particular database objects exhibit said performance timing effect relatively more frequently;
generating one or more tuning recommendations, wherein the one or more tuning recommendations comprise one or more of: moving said particular database object to a different storage component, or creating a new access path to said particular database object.

### Claim 2 (depends on 1)

A method as in claim 1, wherein
said particular database object includes at least one of:
a block involved in an I/O operation,
an object involved in an I/O operation,
an object involved in lock contention.

### Claim 3 (depends on 1)

A method as in claim 1, wherein
said performance timing effect includes at least one of:
a measure of CPU time, a time delay, an access time, an application lock wait, an I/O wait, a wait time in response to contention.

### Claim 4 (depends on 1)

A method as in claim 1, wherein
said steps of identifying include steps of
automatic reporting of said particular database object.

### Claim 5 (depends on 1)

A method as in claim 1, wherein
said steps of identifying include steps of
correlating said database objects with one or more results of said steps of measuring a performance timing effect.

### Claim 6 (depends on 1)

A method as in claim 1, wherein
said steps of tuning include at least one of:
transferring said particular database object between a 1st and a 2nd type of memory;
creating a new access path to said particular database object;
transferring said particular database object between a 1st and a 2nd location in a memory;
altering a table at said server.

### Claim 7 (depends on 1)

A method as in claim 1, wherein
said steps of identifying include steps of
detecting a performance problem associated with accessing said server.

### Claim 8 (depends on 7)

A method as in claim 7, wherein
said steps of identifying include steps of
scheduled analysis of one or more results of said steps of measuring a performance timing effect.

### Claim 9 (depends on 1)

A method as in claim 1, further comprising tuning said particular database object based on said one or more tuning recommendations.

### Claim 10 (depends on 9)

A method as in claim 9, wherein said tuning step is performed automatically.

### Claim 11 (depends on 9)

A method as in claim 9, wherein said tuning step comprises tuning a plurality of database objects.

### Claim 12 (depends on 1)

A method as in claim 1, further comprising collecting and storing performance data for a plurality of database objects.

### Claim 13 (depends on 1)

A method as in claim 1, wherein said one or more tuning recommendations improves a measure of performance of said server.

### Claim 14 (depends on 1)

A method as in claim 1, wherein said one or more tuning recommendations improves a measure of performance of an application that accesses said database objects.

### Claim 15 (depends on 1)

A method as in claim 1, wherein said performance timing effect comprises access patterns.

### Claim 16

A method, including steps of
by a measurement component determining an effect of using queries to access one or more database objects on a resource consumption performance of said queries;
identifying a particular database object in response to said steps of determining, said particular database object adversely effecting performance of said server in correlation with said resource consumption performance;
wherein said steps of identifying include steps of
periodically sampling a database performance view, said database performance view being responsive to said resource consumption performance; and
measuring which particular database objects exhibit said resource consumption performance relatively more frequently;
improving a measure of performance of said queries in response to said steps of identifying by one or more of: moving said particular database object to a different storage component, or creating a new access path to said particular database object.

### Claim 17 (depends on 16)

A method as in claim 16, wherein
said resource consumption includes a time delay.

### Claim 18 (depends on 16)

A method as in claim 16, wherein
said steps of identifying include steps of automatic reporting of said particular database object.

### Claim 19 (depends on 16)

A method as in claim 16, wherein
said steps of identifying include steps of
correlating said database objects with one or more results of said steps of determining an effect.

### Claim 20 (depends on 16)

A method as in claim 16, wherein
said resource consumption performance includes a time measure.

### Claim 21 (depends on 16)

A method as in claim 16, wherein
said steps of improving include steps of tuning said particular database object.

### Claim 22 (depends on 21)

A method as in claim 21, wherein
said steps of tuning include at least one of:
moving said particular database object;
creating a new access path to said particular database object.

### Claim 23 (depends on 16)

A method as in claim 16, wherein said improving step is performed automatically.

### Claim 24 (depends on 16)

A system as in claim 16, wherein said improving step is based on one or more tuning recommendations.

### Claim 25 (depends on 16)

A method as in claim 16, wherein said improving step comprises tuning a plurality of database objects.

### Claim 26 (depends on 16)

A method as in claim 16, further comprising collecting and storing performance data for a plurality of database objects.

### Claim 27 (depends on 16)

A method as in claim 16, wherein said improving step improves a measure of performance of said server.

### Claim 28 (depends on 16)

A method as in claim 16, wherein said improving step improves a measure of performance of an application that accesses said database objects.

### Claim 29 (depends on 16)

A method as in claim 16, wherein said resource consumption comprises access patterns.

### Claim 30

A method, including steps of
receiving onto a computer-readable physical medium, sending from a computer-readable physical medium, or storing on a computer-readable physical medium, information interpretable by a computing device, the information including instructions to perform steps of
by a measurement component at a server, for one or more database objects, measuring a performance timing effect associated with accessing said database objects;
identifying a particular database object in response to said performance timing effect, said particular database object adversely effecting performance of said server in correlation with said performance timing effect;
wherein said steps of identifying include steps of
periodically sampling a database performance view, said database performance view being responsive to said performance timing effect; and
measuring which particular database objects exhibit said performance timing effect relatively more frequently;
generating one or more tuning recommendations, wherein the one or more tuning recommendations comprise one or more of: moving said particular database object to a different storage component, or creating a new access path to said particular database object.

### Claim 31 (depends on 30)

A method as in claim 30, wherein
said particular database object includes at least one of:
a block involved in an I/O operation,
an object involved in an I/O operation,
an object involved in lock contention.

### Claim 32 (depends on 30)

A method as in claim 30, wherein
said performance timing effect includes at least one of:
a measure of CPU time, a time delay, an access time, an application lock wait, an I/O wait, a wait time in response to contention.

### Claim 33 (depends on 30)

A method as in claim 30, wherein
said steps of identifying include steps of
automatic reporting of said particular database object.

### Claim 34 (depends on 30)

A method as in claim 30, wherein
said steps of identifying include steps of
correlating said database objects with one or more results of said steps of measuring a performance timing effect.

### Claim 35 (depends on 30)

A method as in claim 30, wherein
said steps of tuning include at least one of:
creating a new access path to said particular database object;
transferring said particular database object between a 1st and a 2nd location in a memory;
transferring said particular database object between a 1st and a 2nd type of memory;
partitioning or rebuilding a table at said server.

### Claim 36 (depends on 30)

A method as in claim 30, wherein
said steps of identifying include steps of
detecting a performance problem associated with accessing said server.

### Claim 37 (depends on 36)

A method as in claim 36, wherein
said steps of detecting a performance problem include steps of
scheduled analysis of one or more results of said steps of measuring a performance timing effect.

### Claim 38 (depends on 30)

A method as in claim 30, further comprising tuning said particular database object based on said one or more tuning recommendations.

### Claim 39 (depends on 38)

A method as in claim 38, wherein said tuning step is performed automatically.

### Claim 40 (depends on 38)

A method as in claim 38, wherein said tuning step comprises tuning a plurality of database objects.

### Claim 41 (depends on 30)

A method as in claim 30, further comprising collecting and storing performance data for a plurality of database objects.

### Claim 42 (depends on 30)

A method as in claim 30, wherein said one or more tuning recommendations improves a measure of performance of said server.

### Claim 43 (depends on 30)

A method as in claim 30, wherein said one or more tuning recommendations improves a measure of performance of an application that accesses said database objects.

### Claim 44 (depends on 30)

A method as in claim 30, wherein said performance timing effect comprises access patterns.

### Claim 45

A database server, including
one or more processors;
one or more database objects that participate in the execution of SQL statements, said SQL statements being executed by said one or more processors and said database objects being accessed in response thereto;
a measure of performance of said execution of SQL statements including resource consumption, said measure of performance being responsive to said SQL statements being executed by said one or more processors;
at least one particular said database object adversely affecting said resource consumption; and
agent software operating at said database server,
said agent software identifying said particular database object in response to:
monitoring said database server,
sampling said database objects for resource consumption cases,
maintaining performance data, and
correlating said performance data with said particular database object,
wherein said agent software is operative to tune said particular database object, whereby improving performance of said database server;
wherein said agent software is operative to generate one or more tuning recommendations;
wherein said one or more tuning recommendations comprise one or more of:
moving said particular database object to a different storage component, or creating a new access path to said particular database object.

### Claim 46 (depends on 45)

A database server as in claim 45, wherein
said resource consumption cases include at least one of:
a time delay, an access time, an application lock wait, an I/O wait, a wait time in response to contention.

### Claim 47 (depends on 45)

A database server as in claim 45, wherein said resource consumption comprises access patterns.

### Claim 48 (depends on 45)

A database server as in claim 45, wherein said agent software is operative to tune a plurality of database objects.

### Claim 49 (depends on 45)

A database server as in claim 45, wherein said tuning improves performance of an application that accesses said database objects.

### Claim 50

A system including
one or more processors;
a measurement component including agent software modules capable of identifying particular database objects and capturing performance metrics on said database objects, said
agent software modules being executed by said one or more processors and said performance metrics being updated in response thereto;
wherein said agent software is capable of generating one or more tuning recommendations;
wherein said one or more tuning recommendations comprise one or more of:
moving said particular database object to a different storage component, or creating a new access path to said particular database object;
a discovery component including installations of agent software on each server running target applications, said installations being executed by one or more processors;
a console component communicating key performance indicators to users at appropriate times;
a performance warehouse including a repository of said performance metrics accessible to said measurement component, said discovery component, and said console component.

### Claim 51 (depends on 50)

A system as in claim 50, wherein
said performance warehouse includes historical data with respect to said performance metrics.

### Claim 52 (depends on 50)

A system as in claim 50, wherein
said console component includes a software element capable of at least one of:
establishing thresholds for said indicators,
reporting and charting said indicators,
providing alerts for said indicators,
managing user interaction with said measurement component and said discovery component.

### Claim 53 (depends on 50)

A system as in claim 50, wherein
said servers running target applications include at least one of:
a web server, an application server, a database server, a storage server.

### Claim 54 (depends on 50)

A system as in claim 50, wherein said agent software is capable of tuning a plurality of database objects.

### Claim 55 (depends on 50)

A system as in claim 50, wherein said agent software is capable of tuning a plurality of database objects based on one or more tuning recommendations.

### Claim 56 (depends on 55)

A system as in claim 55, wherein said tuning improves a measure of performance of at least one server accessing said database objects.
