IP Library › Granted Patent US 7,447,710
Granted Patent B2
US 7,447,710 · App. 10/710,868 · Granted Nov 4, 2008

Database system providing self-tuned parallel database recovery

Assignee: Sybase, Inc.
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 7,447,710
App. No.
10/710,868
Granted
Nov 4, 2008
Kind
B2
Abstract

A database system providing self-tuned parallel database recovery is described. In one embodiment, for example, in a database system, a method is described for performing recovery operations using an optimal number of recovery threads, the method comprises steps of: (a) spawning an initial recovery thread to perform recovery operations; (b) measuring I/O (input/output) performance with the initial recovery thread; (c) spawning a subsequent recovery thread to perform recovery operations; (d) measuring I/O performance with the subsequent recovery thread; and (e) as long as I/O performance does not degrade beyond a preselected percentage, repeating steps (c) and (d) for spawning a desired number of additional recovery threads. In another embodiment, the database system auto-tunes the cache during performance of database recovery operations to optimize the performance of recovery operations.

Claims (54)

1. In a database system, a self-tuning method for performing recovery operations by dynamically adapting how many recovery threads are spawned during recovery, the method comprising:

(a) spawning an initial recovery thread to perform recovery operations for at least one database that may require recovery;

(b) measuring I/O (input/output) performance with the initial recovery thread;

(c) spawning a subsequent recovery thread to perform recovery operations;

(d) measuring I/O performance with the subsequent recovery thread; and

(e) self-tuning how many threads are spawned by continuing, as long as I/O performance does not degrade beyond a preselected percentage, to repeat steps (c) and (d) for spawning a desired number of additional recovery threads and when I/O performance measured for a just-spawned recovery thread degrades beyond the preselected percentage, putting the just-spawned recovery thread to sleep;

wherein a user of the system is able to specify a particular number of concurrent recovery threads, and wherein the system generates an advisory if the particular number of concurrent recovery threads specified can be changed to achieve better I/O performance.

2. The method of claim 1 , wherein I/O performance is measured over a given period of time.

3. The method of claim 2 , wherein the given period of time is about 1 second.

4. The method of claim 1 , wherein steps (c) and (d) are repeated for spawning additional recovery threads, as long as I/O performance degrades by no more than about 15 percent.

5. The method of claim 1 , wherein steps (c) and (d) are repeated such that only a preconfigured maximum number of recovery threads may be generated.

6. The method of claim 5 , wherein the maximum number of recovery threads is limited to not exceed a count of databases that can be opened.

7. The method of claim 5 , wherein the maximum number of recovery threads is limited to not exceed one less than a count of database engines online.

8. The method of claim 1 , further comprising:

after another recovery thread finishes, awaking the thread that has been put to sleep.

9. The method of claim 1 , wherein steps (c) and (d) are repeated up to a configured maximum number of databases that can be recovered concurrently.

10. The method of claim 1 , wherein each recovery thread itself recovers a single database at a time.

11. A computer-readable medium having processor-executable instructions for performing the method of claim 1 .

12. The method of claim 1 , further comprising:

downloading a set of processor-executable instructions for performing the method of claim 1 .

13. A database system performing self-tuning recovery operations by dynamically adapting how many recovery threads are spawned during recovery, the system comprising:

a computer having at least one processor;

a database system having at least one database that may require recovery;

an initial recovery thread that is spawned to perform recovery operations, wherein the system measures I/O (input/output) performance with the initial recovery thread; and

a plurality of additional recovery threads that are spawned to perform recovery operations, wherein the system dynamically adjusts how many recovery threads are spawned based on I/O (input/output) performance with each additional recovery thread that is spawned, and wherein the system ceases spawning additional recovery threads and puts a just-spawned recovery thread to sleep when I/O performance for the just-spawned recovery thread degrades beyond a desired amount;

wherein a user of the system is able to specify a particular number of concurrent recovery threads, and wherein the system generates an advisory if the particular number of concurrent recovery threads specified can be changed to achieve better I/O performance.

14. The system of claim 13 , wherein I/O performance is measured over a given period of time.

15. The system of claim 14 , wherein the given period of time is about 1 second.

16. The system of claim 13 , wherein the system may spawn additional recovery threads as long as I/O performance degrades by no more than about 15 percent.

17. The system of claim 13 , wherein the plurality of additional recovery threads spawned is limited such that only a maximum number of recovery threads may be generated.

18. The system of claim 17 , wherein the maximum number of recovery threads is limited to not exceed a count of databases to be opened.

19. The system of claim 17 , wherein the maximum number of recovery threads is limited to not exceed one less than a count of database engines online.

20. The system of claim 13 , wherein the system awakens the thread that has been put to sleep, upon termination of another thread.

21. The system of claim 13 , wherein a maximum number of recovery threads permitted is limited to a configured maximum number of databases that can be recovered concurrently.

22. The system of claim 13 , wherein each recovery thread recovers a particular database at a given point in time.

23. In a database system, an auto-tuning method for performing database recovery in a manner that dynamically adjusts how many recovery threads are spawned based on current performance, the method comprising:

spawning a thread to perform database recovery and recording statistics about performance associated with that thread; and

during recovery, dynamically adjusting how many threads are spawned by performing substeps of:

attempting to spawn additional threads to perform database recovery and recording statistics about performance associated with each additional thread spawned;

and if the performance measured for a just-spawned thread degrades beyond a desired amount, freezing execution of the just-spawned thread and ceasing any attempt to spawn additional threads for database recovery;

wherein a user of the system is able to specify a particular number of concurrent threads, and wherein the system generates an advisory if the particular number of concurrent threads specified can be chanced to achieve better I/O performance.

24. The method of claim 23 , wherein performance comprises I/O (input/output) performance measured over a given period of time.

25. The method of claim 24 , wherein the given period of time is about 1 second.

26. The method of claim 23 , wherein the desired amount is no more than about 15 percent degradation in performance.

27. The method of claim 23 , wherein only a certain maximum number of threads may be generated for performing database recovery.

28. The method of claim 27 , wherein the maximum number of threads is limited to not exceed a count of databases that may be opened.

29. The method of claim 27 , wherein the maximum number of threads is limited to not exceed one less than a count of database engines online.

30. The method of claim 23 , further comprising:

after another one of the threads finishes, thawing the thread that has been frozen.

31. The method of claim 23 , wherein the system does not attempt to spawn more threads than a maximum number of databases available to be recovered concurrently.

32. The method of claim 23 , wherein each thread recovers a particular database at a time.

33. A computer-readable medium having processor-executable instructions for performing the method of claim 23 .

34. The method of claim 23 , further comprising:

downloading a set of processor-executable instructions for performing the method of claim 23 .

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 31, 2004
From: SAMPATH, SRIKANTH; ZHOU, FEI; VAITHEESWARAN, GIRISH; GHOSH, PRASANTA
To: SYBASE, INC.
Reel/Frame 015061/0021 →
Continuity (3)
Provisional Application 6048177400 · Dec 11, 2003
Provisional Application 6052175100 · Jun 29, 2004
Related Publication 20050131853A1 · Jun 16, 2005