IP Library › Granted Patent US 12,346,300
Granted Patent B2
US 12,346,300 · App. 17/343,659 · Granted Jul 1, 2025

Automated real-time index management

Inventors: Mohamed Zait (San Jose, CA); Sunil Chakkappen (Foster City, CA); Christoforus Widodo (Sunnyvale, CA); Zhan Li (Redwood Shores, CA)
Assignee: ORACLE INTERNATIONAL CORPORATION
G06F16/2272
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 12,346,300
App. No.
17/343,659
Granted
Jul 1, 2025
Kind
B2
Abstract

Automated Index Management entails automated monitoring of query workload in a DBMS to determine a set of higher load queries to use to evaluate new potential indexes. Without the need of user approval or action, the potential indexes are automatically created, evaluated and tested, and then made available for system wide use for executing queries issued by end users. Indexes created by Automated Index Management are referred to herein as auto indexes.

Claims (66)

1. A method, comprising:

a database management system (DBMS) selecting a working set of queries by monitoring queries that are executed by said DBMS;

monitoring column usage of said working set of queries, wherein said column usage includes use of a column in one or more of a filtering predicate, a join predicate, a group-by operation, and an order-by operation by said set of working queries;

based on said column usage, selecting a certain set of one or more auto indexes;

making said certain set of one or more auto indexes available for executing queries not in said working set of queries; and

after making said certain set of one or more auto indexes available:

performing one or more executions of a particular query, each execution of said one or more executions using a particular auto index of said certain set of one or more auto indexes; and

based on execution performance of said one or more executions, locking down said particular auto index for said particular query.

2. The method of claim 1 , wherein selecting the certain set of one or more auto indexes includes:

based on said column usage, creating a first set of meta-only auto indexes;

compiling at least some of said working set of queries; and

determining a second set of meta-only auto indexes selected by compiling at least some of said working set of queries.

3. The method of claim 2 , wherein before compiling said at least some of said working set of queries, generating index statistics for said first set of meta-only auto indexes.

4. The method of claim 1 , wherein locking down said particular auto index for said particular query includes generating a SQL management object that causes said particular auto index to not be used for generating an execution plan.

5. The method of claim 1 , further including:

monitoring usage of said certain set of one or more auto indexes; and

deactivating at least one of said certain set of one or more auto indexes based on said usage of said certain set of one or more auto indexes.

6. A method, comprising:

a database management system (DBMS) selecting a working set of queries by monitoring queries that are executed by said DBMS;

monitoring column usage of said working set of queries, wherein said column usage includes use of a column in one or more of a filtering predicate, a join predicate, a group-by operation, and an order-by operation by said set of working queries;

based on said column usage, selecting a certain set of auto indexes that includes a plurality of auto indexes;

in response to selecting said certain set of auto indexes, materializing said certain set of auto indexes, wherein said materializing said certain set of auto indexes includes performing a single index creation scan of a particular table to materialize said plurality of auto indexes; and

making said certain set of one or more auto indexes available for executing queries not in said working set of queries.

7. The method of claim 6 , further including:

after making said certain set of one or more auto indexes available:

compiling a particular query not in the working set of queries thereby generating a first execution plan, said first execution plan using a particular auto index of said certain set of one or more auto indexes;

monitoring query execution performance of said first execution plan;

based on said query execution performance of said first execution plan, locking down said particular auto index for said particular query.

8. The method of claim 7 , wherein locking down said particular auto index for said particular query includes generating a SQL management object that causes said particular auto index to not be used for generating an execution plan.

9. The method of claim 6 , wherein selecting the certain set of one or more auto indexes includes:

based on said column usage, creating a first set of meta-only auto indexes;

compiling at least some of said working set of queries; and

determining a second set of meta-only auto indexes selected by compiling at least some of said working set of queries.

10. One or more non-transitory computer-readable media storing sequences of instructions which, when executed by one or more processors, cause:

a database management system (DBMS) selecting a working set of queries by monitoring queries that are executed by said DBMS;

monitoring column usage of said working set of queries, wherein said column usage includes use of a column in one or more of a filtering predicate, a join predicate, a group-by operation, and an order-by operation by said set of working queries;

based on said column usage, selecting a certain set of one or more auto indexes;

making said certain set of one or more auto indexes available for executing queries not in said working set of queries; and

after making said certain set of one or more auto indexes available:

performing one or more executions of a particular query, each execution of said one or more executions using a particular auto index of said certain set of one or more auto indexes; and

based on execution performance of said one or more executions, locking down said particular auto index for said particular query.

11. The one or more non-transitory computer-readable media of claim 10 , wherein selecting the certain set of one or more auto indexes includes:

based on said column usage, creating a first set of meta-only auto indexes;

compiling at least some of said working set of queries; and

determining a second set of meta-only auto indexes selected by compiling at least some of said working set of queries.

12. The one or more non-transitory computer-readable media of claim 11 , wherein the sequences of instructions include instructions that, when executed by said one or more processers, cause before compiling said at least some of said working set of queries, generating index statistics for said first set of meta-only auto indexes.

13. The one or more non-transitory computer-readable media of claim 10 , wherein locking down said particular auto index for said particular query includes generating a SQL management object that causes said particular auto index to not be used for generating an execution plan.

14. The one or more non-transitory computer-readable media of claim 10 , wherein the sequences of instructions include instructions that, when executed by said one or more processers, cause:

monitoring usage of said certain set of one or more auto indexes; and

deactivating at least one of said certain set of one or more auto indexes based on said usage of said certain set of one or more auto indexes.

15. One or more non-transitory computer-readable media storing sequences of instructions which, when executed by one or more processors, cause:

a database management system (DBMS) selecting a working set of queries by monitoring queries that are executed by said DBMS;

monitoring column usage of said working set of queries, wherein said column usage includes use of a column in one or more of a filtering predicate, a join predicate a group-by operation, and an order-by operation by said set of working queries;

based on said column usage, selecting a certain set of auto indexes that includes a plurality of auto indexes;

in response to selecting said certain set of auto indexes, materializing said certain set of auto indexes, wherein said materializing said certain set of auto indexes includes performing a single index creation scan of a particular table to materialize said plurality of auto indexes; and

making said certain set of one or more auto indexes available for executing queries not in said working set of queries.

16. The one or more non-transitory computer-readable media of claim 15 , wherein the sequences of instructions include instructions that, when executed by said one or more processers, cause:

after making said certain set of one or more auto indexes available:

compiling a particular query not in the working set of queries thereby generating a first execution plan, said first execution plan using a particular auto index of said certain set of one or more auto indexes;

monitoring query execution performance of said first execution plan;

based on said query execution performance of said first execution plan, locking down said particular auto index for said particular query.

17. The one or more non-transitory computer-readable media of claim 16 , wherein locking down said particular auto index for said particular query includes generating a SQL management object that causes said particular auto index to not be used for generating an execution plan.

18. The one or more non-transitory computer-readable media of claim 15 , wherein selecting the certain set of one or more auto indexes includes:

based on said column usage, creating a first set of meta-only auto indexes;

compiling at least some of said working set of queries; and

determining a second set of meta-only auto indexes selected by compiling at least some of said working set of queries.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 10, 2021
From: ZAIT, MOHAMED; CHAKKAPPEN, SUNIL; WIDODO, CHRISTOFORUS; LI, ZHAN
To: ORACLE INTERNATIONAL CORPORATION
Reel/Frame 056505/0389 →
Continuity (4)
Continuation 16248479 · Jan 15, 2019
Provisional Application 62748457 · Oct 20, 2018
Provisional Application 62715263 · Aug 6, 2018
Related Publication 20210303539A1 · Sep 30, 2021
References Cited (32)
US 7191169B1 · Tao · 2007 [cited by applicant]
US 7213012B2 · Jakobsson · 2007 [cited by applicant]
US 7644730B2 · Reck · 2010 [cited by applicant]
US 8996502B2 · Folkert et al. · 2015 [cited by applicant]
US 9727608B2 · Cheng et al. · 2017 [cited by applicant]
US 10769123B2 · Das · 2020 [cited by examiner]
US 11243956B1 · Papakonstantinou et al. · 2022 [cited by applicant]
US 20020091699A1 · Norton · 2002 [cited by examiner]
US 20030093408A1 · Brown · 2003 [cited by examiner]
US 20030167255A1 · GraBhoff et al. · 2003 [cited by applicant]
US 20050256835A1 · Jenkins, Jr. · 2005 [cited by examiner]
US 20060230035A1 · Bailey et al. · 2006 [cited by applicant]
US 20070226264A1 · Luo et al. · 2007 [cited by applicant]
US 20080052266A1 · Goldstein et al. · 2008 [cited by applicant]
US 20080183764A1 · Bruno · 2008 [cited by examiner]
US 20080222080A1 · Stewart · 2008 [cited by examiner]
US 20090319476A1 · Olston et al. · 2009 [cited by applicant]
US 20120221534A1 · Gao et al. · 2012 [cited by applicant]
US 20140201192A1 · Hu · 2014 [cited by examiner]
US 20160026666A1 · Namiki · 2016 [cited by examiner]
US 20170300517A1 · Amirsoleymani · 2017 [cited by examiner]
US 20210019318A1 · Leung et al. · 2021 [cited by applicant]
Zait, U.S. Appl. No. 16/248,479, filed Jan. 15, 2019, Notice of Allowance and Fees Due, Jun. 23, 2021. [cited by applicant]
Ahmed, et al. “Automatic Generation of Materialized Views in Oracle”. Oct. 29, 2018, pp. 1-11. [cited by applicant]
Oracle® Database, “Performance Tuning Guide”,11g Release 1 (11.1), B28274-02 Chapter 15-18, dated Jul. 2008, 500 pages. [cited by applicant]
Ahmed, U.S. Appl. No. 16/523,872, filed Jul. 26, 2019, Final Rejection, May 10, 2022. [cited by applicant]
Zhou et al., “Efficient Exploitation of Similar Subexpressions for Query Processing” Proceedings of the ACM SIGMOD, International Conference on Management of Data, dated Jun. 2007, ACM, pp. 553-544. [cited by applicant]
Ahmed, U.S. Appl. No. 16/523,872, filed Jul. 26,2019, Notice of Allowance and Fees Due, Nov. 3, 2022. [cited by applicant]
Ahmed, U.S. Appl. No. 16/523,872, filed Jul. 26, 2019, Advisory Action, Aug. 3, 2022. [cited by applicant]
Ahmed, U.S. Appl. No. 16/523,872, filed Jul. 26, 2019, Non-Final Rejection, Dec. 13, 2021. [cited by applicant]
Theodoratos, Dimitri, et al., “Constructing search spaces for materialized view selection”, DOLAP '04: Proceedings of the 7th ACM International Workshop on Data Warehousing and OLAP, pp. 112-121, Nov. 12, 2004, 10pgs. [cited by applicant]
Schnaitter et al, “On-Line Index Selection for Shifting Workloads”, IEEE, Apr. 20, 2007, pp. 1-10. [cited by applicant]