IP Library Granted Patent US 8,321,447
Granted Patent B2
US 8,321,447 · App. 12/716,162 · Granted Nov 27, 2012

Adaptive query throttling system and method

Assignee: Winshuttle, LLC
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 8,321,447
App. No.
12/716,162
Granted
Nov 27, 2012
Kind
B2
Abstract

An adaptive query throttling system and method are provided herein.

Claims (39)

1. A computer-implemented method for adaptively throttling a database query, the method comprising:

obtaining, by a throttling server, a compound database query describing at least one result row from a database, said at least one result row being selected according to specified criteria from a specified plurality of database tables;

sequencing, by said throttling server, said compound database query into an ordered plurality of component select queries, each component select query describing at least one interim result row from only one of said specified plurality of database tables;

adaptively throttling said compound database query by performing steps i-iv by said throttling server for each of said ordered plurality of component select queries:

i. periodically polling a database server until a current database-load metric satisfies an availability condition;

ii. when said current database-load metric satisfies said availability condition, communicating the current component select query to said database server;

iii. obtaining from said database server a current interim result set comprising at least one current interim result row corresponding to the current component select query; and

iv. storing said current interim result set in an interim memory; and

obtaining a plurality of interim result sets from said interim memory, said plurality of interim result sets corresponding respectively to said ordered plurality of component select queries; and

assembling, by said throttling server, said at least one result row according to said plurality of interim result sets.

2. The method of claim 1 , wherein said database comprises a live transactional database.

3. The method of claim 1 , wherein communicating the current component select query to said database server further comprises translating the current component select query into a query plan.

4. The method of claim 1 , wherein communicating the current component select query to said database server comprises communicating the current component select query to said database server for optimization and execution.

5. The method of claim 1 , wherein sequencing said compound database query into said ordered plurality of component select queries comprises ordering said plurality of component select queries according to a plurality of prioritization rules.

6. The method of claim 5 , wherein said plurality of prioritization rules comprises at least one of prioritization rules i-vi:

i) perform a component select query including at least one WHERE criterion before a component select query including no WHERE criteria;

ii) perform a component select query having a higher percentage of indexed WHERE fields before a component select query having a lower percentage of indexed WHERE fields;

iii) perform a component select query having a higher count of JOIN fields before a component select query having a lower count of JOIN fields;

iv) perform a component select query having a lower percentage of indexed JOIN fields before a component select query having a higher percentage of indexed JOIN fields;

v) perform a component select query querying a smaller table before a component select query querying a larger table, according to approximations of queried-table sizes; and

vi) perform a component select query querying a table having a lower response time before a component select query querying a table having a higher response time.

7. The method of claim 6 , wherein said plurality of prioritization rules comprises prioritization rules i-vi, in order of precedence.

8. The method of claim 1 , wherein periodically polling said database server until said current database-load metric satisfies an availability condition comprises:

obtaining said current database-load metric from said database server;

determining that said current database-load metric fails to satisfy said availability condition;

dynamically determining a wait-period according to said current database-load metric; and

waiting for the dynamically-determined wait period before polling for another database-load metric.

9. The method of claim 8 , wherein said current database-load metric comprises a count of DIALOG processes that are currently available or currently utilized at said database server.

10. The method of claim 9 , wherein said availability condition comprises at least one of a predetermined minimum number of DIALOG processes being currently available, a predetermined maximum number of DIALOG processes being currently utilized, a predetermined minimum percentage of DIALOG processes being currently available, and a predetermined maximum percentage of DIALOG processes being currently utilized.

11. The method of claim 9 , further comprising obtaining a predetermined maximum number of DIALOG processes, wherein said availability condition comprises at least about 50% of said predetermined maximum number of DIALOG processes being currently available, and wherein dynamically determining said wait-period according to said current database-load metric comprises at least one of:

determining a wait-period of about 2-seconds when no more than about 30% of said predetermined maximum number of DIALOG processes are available;

determining a wait-period of about 1-second when no more than about 40% of said predetermined maximum number of DIALOG processes are available; and

determining a wait-period of less than 1-second when no more than about 50% of said predetermined maximum number of DIALOG processes are available.

12. The method of claim 1 , further comprising communicating said assembled at least one result row to a client device.

13. The method of claim 12 , wherein communicating said assembled at least one result row to said client device comprises:

chunking said assembled plurality of result rows into a plurality of partial result sets; and

communicating each of said plurality of partial result sets in serial to said client device.

14. A non-transitory computer-readable storage medium having stored thereon instructions that, when executed by a processor, perform the method of any one of claim 1 , claim 5 , or claim 8 .

15. An apparatus including a processor and a memory, the memory having stored therein instructions that, when executed by the processor, perform the method of any one of claim 1 , claim 5 , or claim 8 .

Assignments (13)
MERGER Recorded May 13, 2025
From: WINSHUTTLE, LLC
To: PRECISELY SOFTWARE INCORPORATED
Reel/Frame 071094/0984 →
RELEASE OF SECURITY INTEREST Recorded Aug 17, 2022
From: WINSHUTTLE, LLC
To: WINSHUTTLE, LLC
Reel/Frame 060829/0770 →
RELEASE OF SECURITY INTEREST RECORDED AT REEL/FRAME 50009/0537 Recorded Jul 14, 2021
From: OBSIDIAN AGENCY SERVICES, INC.
To: WINSHUTTLE, LLC
Reel/Frame 057106/0836 →
FIRST LIEN INTELLECTUAL PROPERTY SECURITY AGREEMENT Recorded Jul 13, 2021
From: WINSHUTTLE, LLC; ENTERWORKS ACQUISITION, INC.
To: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
Reel/Frame 056846/0892 →
SECOND LIEN INTELLECTUAL PROPERTY SECURITY AGREEMENT Recorded Jul 13, 2021
From: WINSHUTTLE, LLC; ENTERWORKS ACQUISITION, INC.
To: BARLCAYS BANK PLC, AS COLLATERAL AGENT
Reel/Frame 056847/0075 →
TERMINATION AND RELEASE OF PATENT SECURITY AGREEMENT Recorded Aug 12, 2019
From: PNC BANK, NATIONAL ASSOCIATION
To: WINSHUTTLE, LLC
Reel/Frame 050028/0566 →
SECURITY INTEREST Recorded Aug 9, 2019
From: WINSHUTTLE, LLC
To: OBSIDIAN AGENCY SERVICES, INC., AS COLLATERAL AGENT
Reel/Frame 050009/0537 →
SECURITY INTEREST Recorded May 2, 2018
From: WINSHUTTLE, LLC
To: PNC BANK, NATIONAL ASSOCIATION
Reel/Frame 045694/0500 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 5, 2018
From: WINSHUTTLE, INC.
To: WINSHUTTLE, LLC
Reel/Frame 045452/0313 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 5, 2018
From: CHALANA, VIKRAM
To: WINSHUTTLE, LLC
Reel/Frame 045452/0216 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 23, 2013
From: WINSHUTTLE SOFTWARE INDIA PVT. LTD.
To: WINSHUTTLE, INC.
Reel/Frame 031074/0299 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 16, 2011
From: WINSHUTTLE SOFTWARE INDIA PVT. LTD.
To: WINSHUTTLE, INC
Reel/Frame 026757/0684 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 10, 2011
From: CHALANA, VISHAL; SIDHU, GURPREET SINGH
To: WINSHUTTLE SOFTWARE INDIA PVT. LTD.
Reel/Frame 026730/0423 →
Continuity (2)
Provisional Application 61156639 · Mar 2, 2009
Related Publication 20100223256A1 · Sep 2, 2010