The present invention relates to the field of electronic database management.
One of the most important tasks performed by database administrators (DBAs) is to provide stable performance in the presence of changes to the database system. Changes to a database system includes, among other things, database system upgrades, parameter modifications, index creations, etc. When these changes are made to the database system, DBAs must ensure that database system performance and end-user satisfaction will not regress (i.e., become worse than before the changes were made). This task is, however, a challenging and time-consuming one because of the difficulty in predicting, in advance, the impact of a change on the performance of a production database system before actually implementing the change on the production database system.
Therefore, there is a need for a process for measuring the impact to the performance of a database system on which changes have been made. This process will enable DBAs to foresee where performance may improve or deteriorate and allow the DBAs to take corrective actions to fix the regressions before implementing the changes to the production database system.
The present invention is illustrated by way of example, and not by way of limitation, in the figures of the accompanying drawings and in which like reference numerals refer to similar elements and in which:
In the following description, for the purposes of explanation, numerous specific details are set forth in order to provide a thorough understanding of the present invention. It will be apparent, however, that the present invention may be practiced without these specific details. In other instances, well-known structures and devices are shown in block diagram form in order to avoid unnecessarily obscuring the present invention.
An SQL Performance Analyzer (SPA) provides users of a database system (e.g., DBAs) with a tool for measuring comparing performance of a workload set across different database systems. A workload set is a collection of database query language statements and performance information associated with the database query language statements. This comparison is based on quantitative measurements of the performance of the workload set on the different database systems, and the different database systems may be two database systems where the second database system is the first database system with certain changes (e.g., a patch update, new index creations, database system upgrade, etc.) implemented on it. Therefore, SPA enables DBAs to forecast and analyze how changes to a database system would impact the performance of a workload set. Furthermore, SPA enables DBAs to identify potential problems that may occur and generates recommendations to the DBAs for avoiding performance degradation. The DBAs may then tune the database system and circumvent predicted regressions before implementing the changes in production.
In one embodiment, the database query language statements are SQL statements. Although the embodiments of the invention are described herein using the term “SQL”, the invention is not limited to just this particular database query language, and may be used in conjunction with other database query languages and constructs.
According to one embodiment, SPA performs the following process to provide DBAs with comparative performance information across different database systems:
A DBA may utilize SPA to forecast how a change or changes to a database system will impact performance by directing SPA to use an unchanged database system as the first database system and by directing SPA to use a database system with the changes incorporated as the second database system.
According to one embodiment, the workload set analyzed by SPA is captured from a production database system such that the SQL statements in the workload set are SQL statements that have actually been executed on the production database system. Data related to the SQL statements in the workload set is also captured into the workload set, including: execution statistics such as the number of buffer gets and elapsed times of the SQL statements; data access statistics such as the number of rows fetched by the SQL statements; and data related to execution context, such as bind values and optimizer parameter values for the SQL statements.
According to one embodiment, SPA may generate a report summarizing and detailing the measurements and results of the comparative analysis, and provide this report to the DBA.
According to another embodiment, SPA may be used repeatedly and iteratively to compare different database systems or different versions of a database system as the DBA makes further changes to the database systems.
According to another embodiment, SPA may execute SQL statements on a remote database system for purposes of measurement and comparative analysis of performance.
The targeted SQL statements that are executed in SPA are selected from a workload set. According to one embodiment, a workload set is stored as an SQL Tuning Set. SQL Tuning Sets are described in “SQL TUNING SETS”, application Ser. No. 10/936,449, filed on Sep. 7, 2004, the entire contents of which are hereby incorporated by reference. An SQL Tuning Set is a persistent database object that stores one or more database query language statements and associated information for each statement. The associated information may include: execution statistics such as the number of buffer gets and elapsed times of the SQL statements; data access statistics such as the number of rows fetched by the SQL statements; and data related to execution context, such as bind values and optimizer parameter values for the SQL statements. Additionally, the associated information may also include information that is relevant for comparative SQL analysis, such as the number of rows that was returned by the SQL statement.
According to one embodiment, a workload set is incrementally captured from SQL statements that are executed on a production database system during a particular period of time (e.g., one hour, one day, one week, etc.). This way, a large percentage of SQL statements that have actually been executed on the production database system is captured, thereby enabling SPA execution and analysis to be performed on a realistic set of SQL statements. SQL statements that have been executed during different periods of time may also be captured into a single workload set. For example, SQL statements that have been executed on a production database system during the business hours of Monday through Friday of a particular week may be captured into the same workload set. In other words, the SQL statements that are captured into a single workload set need not have been executed contiguously in time. In addition, filtering may be performed during the capturing process so that only SQL statements that meet specified filter conditions are captured. For example, filter conditions may specify that SQL statements that are associated with a first application are to be captured into a first workload set while SQL statements that are associated with a second application are to be captured into a second workload set. The filter conditions may be specified by DBAs. Finally, two or more workload sets may be combined into a single combined workload set, where SPA execution and analysis is performed on the combined workload set.
According to another embodiment, a workload set is built from a set of diagnostic traces that are captured from a production database system.
According to yet another embodiment, a workload set is manually built by a DBA. With DBA-built workload sets, DBAs can specifically control and input the workload set that will be executed and analyzed by SPA.
Any workload set, including workload sets captured or built according to the approaches just described, may be provided to SPA for execution and analysis.
In
According to another embodiment, only a subset of the SQL statements in the workload set is selected as targeted SQL statements. For example, the targeted SQL statements may only include SQL statements that originate from a particular application. In another example, the targeted SQL statements only include SQL statements that originate from particular URL addresses. By providing the ability to select which SQL statements are targeted for execution and analysis, DBAs who use SPA are able to compare the performance of two versions of a database system for specific types of SQL statements.
In step 106 of
In one embodiment, to build an SQL workload performance version, SPA executes the targeted SQL statements only to an extent necessary for gathering performance data for the targeted SQL statements. In other words, SPA may not execute the targeted SQL statements to the same extent that the targeted SQL statements are normally executed on a production database system. For example, SPA may execute the targeted SQL statements in isolation from other SQL statements and without respect to the initial order of the targeted SQL statements as issued by the originating application or to the concurrency between the SQL statements. Also, SPA may execute each targeted SQL statement as many times as necessary to collect a meaningful and reliable set of performance data.
In addition, SPA may execute only the targeted SQL statements that are queries and only the query portions of targeted SQL statements that are Data Manipulation Language (DML) statements. Executing only queries and query portions has the benefit of avoiding impact or side effects on the underlying database system on which SPA executes the targeted SQL statements. Avoiding any impact on the underlying database system is especially important when SPA is being run on a production database system. Additionally, since executing only queries and query portions of DML statements does not change the data in the underlying database system (e.g., the first database system) on which SPA executes the targeted SQL statements, it is not necessary that the targeted SQL statements be executed in any particular order.
Also, even when SPA does not fully execute the targeted statements, SPA may still collect information regarding encountered errors for later analysis.
According to one embodiment, SPA allows a DBA to set a time limit on the total amount of time dedicated to executing the targeted SQL statements. When this time limit is reached, SPA terminates execution of the targeted SQL statements, regardless of whether all the targeted SQL statements have been executed. SPA also allows a DBA to set a time limit on the amount of time dedicated to executing a single targeted SQL statement. When this time limit is reached, SPA terminates execution of the currently executing targeted SQL statements, regardless of whether the currently executing targeted SQL statement has finished executing, and initiates execution of the next targeted SQL statement. In this manner, DBAs may control SPA to ensure that the entire execution and analysis process be completed within a reasonable amount of time and that the process is not monopolized by a few computationally expensive SQL statements.
According to one embodiment, SPA may be terminated by a DBA while in the midst of executing targeted SQL statements. Upon such termination, SPA may retain the performance data gathered from execution of previously executed targeted SQL statements for comparison analysis. In this manner, a DBA may choose to terminate a SPA execution if he determines that enough targeted SQL statements have been executed for meaningful analysis without losing valuable performance data for the targeted SQL statements that have been previously executed by SPA.
According to one embodiment, the targeted SQL statements that have been selected for analysis may be executed by SPA in an order specified by the DBA. For example, the DBA may specify that the targeted SQL statements be ranked in order of total elapsed time (total elapsed time is an execution statistic that is contained in the workload set from which targeted SQL statements are selected) and executed in an order corresponding to that ranking. In this manner, a DBA may control the execution of targeted SQL statements so that the SQL statements that are of most interest to the DBA (e.g., SQL statements associated with the longest total elapsed times) are executed first, increasing the likelihood that the targeted SQL statements of the most interest to the DBA are executed before any time limit set for SPA execution is reached.
According to one embodiment, SPA generates execution plans for the targeted SQL statements but does not fully execute the targeted SQL statements. In this embodiment, cost estimates are generated according to the execution plans and are used to build the workload set performance version. Building a workload set performance version from cost estimates of execution plans is less time-consuming than building the workload set performance version from actual execution statistics. In addition, if the first database system contains a database whose data does not resemble the data in the database in the production database system, then in some cases the cost estimates derived from the execution plans may more accurately assess the performance of the targeted SQL statements than actual execution of the targeted SQL statements on the first database system.
According to one embodiment, the first database system is a test database system that is a copy of the production database system that is separate and apart from the production database system. In this manner, SPA may execute the targeted SQL statements without affecting the production database system at all. Since the targeted SQL statements are selected from a workload set that captured actual SQL statements executed on the production database system, performance data gathered on the targeted SQL statements will accurately predicate the performance of the targeted SQL statements on the actual production database system.
According to one embodiment, the first database system is the production database system such that the SQL statements are executed by SPA directly on the production database system itself.
According to one embodiment, the data contained in the database of the first database system does not have all of the data contained in the database of the production database system. SPA may execute the targeted SQL statements on database systems that are less than full replicas of the production database system.
According to another embodiment, SPA may generate a report that is based on the associated performance data in the first workload set performance version and provide this report to the DBA. This report may be viewed by a DBA to assess the performance of the targeted SQL statements on the first database system. For example, the DBA may examine this report to assess whether the performance of the targeted SQL statements on the first database system is as expected. In this manner, DBAs can also optionally utilize SPA to assess the performance of targeted SQL statements on a single database system, without SPA performing the additional steps of executing the targeted SQL statements on a second database system and performing a comparative analysis of the performance data from the two database systems.
In order to test the impact of a potential change on the SQL performance of a database system, a minimum of two versions of workload set performance must be built. In step 108 in
The approaches described above with regard to SPA's execution of the targeted SQL statements on the first database system are equally applicable to SPA's execution of the targeted SQL statements on the second database system.
The second workload set performance version is stored separate from the first workload set performance version.
Once two SQL performance workload set versions have been built, SPA begins the next step (step 110) of performance analysis by comparing the performance data from the first version with the corresponding performance data from the second version. During this performance analysis, SPA computes the impact of the differences between the second version and the first version on (1) the overall performance of the workload set; and (2) each targeted SQL statement.
The impact numbers computed by SPA represent a measurement of the magnitude of change on SQL performance. Negative values indicate regressions and positive values highlight improvements. SPA calculates the change impact based on the rate of resource consumption by the targeted SQL statements in the two workload set performance versions and the weight of each targeted SQL statement in the set of targeted SQL statements. Weight may be determined by the number of times the SQL was executed in the workload set. This information, which is contained in the workload set from which the targeted SQL statements are selected, is important to consider in calculating the impact of a change. Incorporating information such as the execution frequency of a targeted SQL statement allows SPA to correctly and fairly assess both SQL statements that have short execution times but are frequently executed and SQL statements that have long execution times but are executed only a few times. For example, an increase in execution time from 0.1 second to 0.15 second for an SQL statement that is executed very frequently will most likely have a greater negative impact on the overall performance of the database system than an increase in execution time from 2 seconds to 4 second for an SQL statement that is executed very rarely.
Resource consumption is measured based on the execution statistics (e.g., elapsed time, CPU time, buffer gets, disk reads, etc.) that are contained in the performance data of the SQL workload performance versions. By default, SPA uses elapsed time as the metric for performance comparison. SPA may also be configured to use other statistics, such as CPU time, buffer gets, and execution plan cost, or any combination of statistics. SPA may also compare the structural changes between the execution plans contained in the two SQL workload performance versions, particularly for those statements that exhibit performance degradations, in order to find and explain the reasons for the regressions.
Additionally, SPA may be configured with a set of rules for determining whether to label a change as a significant improvement or regression. For example, the set of rules direct SPA to label a change as a significant improvement or regression only if the change impacts the performance of a targeted SQL statement by at least a specified amount, or if the change impacts the performance of the set of targeted SQL statements by another specified amount. The labeling of significant improvement or regression may be included in reports generated by SPA.
According to one embodiment, the performance analysis and comparison results are communicated to users (e.g., DBAs) through the SPA report. In addition to a summary and details about the SQL workload set content and performance information, the report also clearly identifies and isolates the subset of SQL statements which are going to cause performance problems when the planned changes are made. According to one embodiment, the SPA report is provided to a user through a graphical user interface (GUI). According to another embodiment, the report is provided to the user as text on a command line.
According to one embodiment, the SPA report indicates: what the overall impact is to the database system if the database system were to change from the first database system to the second database system; the number of SQL statements whose performance have improved; the number of SQL statements whose performance have regressed; the number of SQL statements whose performance has remained the same; and the number of SQL statements whose execution plan has changed. Furthermore, the SPA report may indicate which SQL statements have improved in performance, which SQL statements have regressed in performance, and which SQL statements have experienced a change in execution plan. The SPA report may also contain details about errors encountered during the analysis and unexpected changes to the data during the execution. If the SPA report is provided as a GUI, users may interact with the GUI to get further details on a specific topic that is reported. For example, a user may click on a link associated with the number of SQL statements whose performance have regressed to view a list of the specific SQL statements that have regressed and view the associated execution plans and runtime statistics with and without the tested changes.
According to another embodiment, SPA may make two types of recommendations for SQL statements that have regressed: (1) run SQL Tuning Advisor to tune any SQL statements that would experience degradation in performance; and (2) create plan baselines for the regressed SQL statements using plans from the pre-change version of the workload set performance. The SQL Tuning Advisor is described in “AUTOMATIC SQL TUNING ADVISOR”, application Ser. No. 10/936,778, filed Sep. 7, 2004, the entire contents of which are hereby incorporated by reference as if fully set forth herein. Creation of a plan baseline for an SQL statement results in the execution plan generated by the first database system being used to execute the SQL statement in the second database system. Thus, creating plan baselines guarantees that execution plans will remain the same and will not be affected by system change. Additional recommendations may also be made by SPA. SPA can be used in this way to test many possible changes and gather empirical evidence for their advantages and disadvantages prior to choosing a single optimal one, without imposing any risk on database users. A new workload performance version may be created to test each of the series of changes.
According to one embodiment, SPA may be used repeatedly and iteratively to compare different database systems or different versions of a database system as the DBA makes further changes to the database systems. A history may be kept of past performance workload set versions, and comparisons may be performed and reports may be generated for any two performance workload set versions that have been saved in history. In this way, SPA may be used by a DBA to test many possible changes before the DBA chooses a final set of changes for implementation. Advantageously, this testing is performed by SPA without impact to the underlying database system on which SPA runs since SPA execution does not modify the data in the database of the underlying database system.
According to another embodiment, SPA may execute SQL statements on a remote database system. SPA may be first installed and invoked on a database system that can support SPA. Then, SPA may remotely execute SQL statements on another database system by creating a database link to the other database system and using the database link to execute an SQL statement and to retrieve execution plan and statistics for the execution of the SQL statement.
By using SPA's capability to execute SQL statements on a remote database system that does not itself include SPA functionality, a DBA may test the impact of changes to an older database system that is not capable of supporting SPA, without upgrading the older database system. The DBA may also take advantage of this capability to test the impact of an upgrade to an older database system.
Computer system 200 may be coupled via bus 202 to a display 212, such as a cathode ray tube (CRT), for displaying information to a computer user. An input device 214, including alphanumeric and other keys, is coupled to bus 202 for communicating information and command selections to processor 204. Another type of user input device is cursor control 216, such as a mouse, a trackball, or cursor direction keys for communicating direction information and command selections to processor 204 and for controlling cursor movement on display 212. This input device typically has two degrees of freedom in two axes, a first axis (e.g., x) and a second axis (e.g., y), that allows the device to specify positions in a plane.
The invention is related to the use of computer system 200 for implementing the techniques described herein. According to one embodiment of the invention, those techniques are performed by computer system 200 in response to processor 204 executing one or more sequences of one or more instructions contained in main memory 206. Such instructions may be read into main memory 206 from another machine-readable medium, such as storage device 210. Execution of the sequences of instructions contained in main memory 206 causes processor 204 to perform the process steps described herein. In alternative embodiments, hard-wired circuitry may be used in place of or in combination with software instructions to implement the invention. Thus, embodiments of the invention are not limited to any specific combination of hardware circuitry and software.
The term “machine-readable medium” as used herein refers to any medium that participates in providing data that causes a machine to operation in a specific fashion. In an embodiment implemented using computer system 200, various machine-readable media are involved, for example, in providing instructions to processor 204 for execution. Such a medium may take many forms, including but not limited to storage media and transmission media. Storage media includes both non-volatile media and volatile media. Non-volatile media includes, for example, optical or magnetic disks, such as storage device 210. Volatile media includes dynamic memory, such as main memory 206. Transmission media includes coaxial cables, copper wire and fiber optics, including the wires that comprise bus 202. Transmission media can also take the form of acoustic or light waves, such as those generated during radio-wave and infra-red data communications. All such media must be tangible to enable the instructions carried by the media to be detected by a physical mechanism that reads the instructions into a machine.
Common forms of machine-readable media include, for example, a floppy disk, a flexible disk, hard disk, magnetic tape, or any other magnetic medium, a CD-ROM, any other optical medium, punchcards, papertape, any other physical medium with patterns of holes, a RAM, a PROM, and EPROM, a FLASH-EPROM, any other memory chip or cartridge, a carrier wave as described hereinafter, or any other medium from which a computer can read.
Various forms of machine-readable media may be involved in carrying one or more sequences of one or more instructions to processor 204 for execution. For example, the instructions may initially be carried on a magnetic disk of a remote computer. The remote computer can load the instructions into its dynamic memory and send the instructions over a telephone line using a modem. A modem local to computer system 200 can receive the data on the telephone line and use an infra-red transmitter to convert the data to an infra-red signal. An infra-red detector can receive the data carried in the infra-red signal and appropriate circuitry can place the data on bus 202. Bus 202 carries the data to main memory 206, from which processor 204 retrieves and executes the instructions. The instructions received by main memory 206 may optionally be stored on storage device 210 either before or after execution by processor 204.
Computer system 200 also includes a communication interface 218 coupled to bus 202. Communication interface 218 provides a two-way data communication coupling to a network link 220 that is connected to a local network 222. For example, communication interface 218 may be an integrated services digital network (ISDN) card or a modem to provide a data communication connection to a corresponding type of telephone line. As another example, communication interface 218 may be a local area network (LAN) card to provide a data communication connection to a compatible LAN. Wireless links may also be implemented. In any such implementation, communication interface 218 sends and receives electrical, electromagnetic or optical signals that carry digital data streams representing various types of information.
Network link 220 typically provides data communication through one or more networks to other data devices. For example, network link 220 may provide a connection through local network 222 to a host computer 224 or to data equipment operated by an Internet Service Provider (ISP) 226. ISP 226 in turn provides data communication services through the world wide packet data communication network now commonly referred to as the “Internet” 228. Local network 222 and Internet 228 both use electrical, electromagnetic or optical signals that carry digital data streams. The signals through the various networks and the signals on network link 220 and through communication interface 218, which carry the digital data to and from computer system 200, are exemplary forms of carrier waves transporting the information.
Computer system 200 can send messages and receive data, including program code, through the network(s), network link 220 and communication interface 218. In the Internet example, a server 230 might transmit a requested code for an application program through Internet 228, ISP 226, local network 222 and communication interface 218.
The received code may be executed by processor 204 as it is received, and/or stored in storage device 210, or other non-volatile storage for later execution. In this manner, computer system 200 may obtain application code in the form of a carrier wave.
In the foregoing specification, embodiments of the invention have been described with reference to numerous specific details that may vary from implementation to implementation. Thus, the sole and exclusive indicator of what is the invention, and is intended by the applicants to be the invention, is the set of claims that issue from this application, in the specific form in which such claims issue, including any subsequent correction. Any definitions expressly set forth herein for terms contained in such claims shall govern the meaning of such terms as used in the claims. Hence, no limitation, element, property, feature, advantage or attribute that is not expressly recited in a claim should limit the scope of such claim in any way. The specification and drawings are, accordingly, to be regarded in an illustrative rather than a restrictive sense.
This application claims benefit of Provisional Appln. 60/973,363, filed Sep. 18, 2007, the entire contents of which is hereby incorporated by reference as if fully set forth herein, under 35 U.S.C. §119(e).
Number | Name | Date | Kind |
---|---|---|---|
4769772 | Dwyer | Sep 1988 | A |
4803614 | Banba et al. | Feb 1989 | A |
4829427 | Green | May 1989 | A |
4956774 | Shibamiya et al. | Sep 1990 | A |
5091852 | Tsuchida et al. | Feb 1992 | A |
5251131 | Masand et al. | Oct 1993 | A |
5287459 | Gniewek | Feb 1994 | A |
5301317 | Lohman et al. | Apr 1994 | A |
5315580 | Phaal | May 1994 | A |
5325525 | Shan et al. | Jun 1994 | A |
5339429 | Tanaka et al. | Aug 1994 | A |
5379424 | Morimoto et al. | Jan 1995 | A |
5412804 | Krishna | May 1995 | A |
5412806 | Du et al. | May 1995 | A |
5444820 | Tzes et al. | Aug 1995 | A |
5452468 | Peterson | Sep 1995 | A |
5459837 | Caccavale | Oct 1995 | A |
5469560 | Beglin | Nov 1995 | A |
5495419 | Rostoker et al. | Feb 1996 | A |
5495606 | Borden et al. | Feb 1996 | A |
5504894 | Fegurson et al. | Apr 1996 | A |
5537588 | Engelmann et al. | Jul 1996 | A |
5551027 | Choy et al. | Aug 1996 | A |
5572640 | Schettler | Nov 1996 | A |
5574900 | Huang et al. | Nov 1996 | A |
5590319 | Cohen et al. | Dec 1996 | A |
5642515 | Jones et al. | Jun 1997 | A |
5671403 | Shekita et al. | Sep 1997 | A |
5675791 | Bhide et al. | Oct 1997 | A |
5680547 | Chang | Oct 1997 | A |
5694591 | Du et al. | Dec 1997 | A |
5710915 | McElhiney | Jan 1998 | A |
5764912 | Rosborough | Jun 1998 | A |
5765150 | Burrows | Jun 1998 | A |
5787251 | Hamilton et al. | Jul 1998 | A |
5794227 | Brown | Aug 1998 | A |
5797136 | Boyer et al. | Aug 1998 | A |
5822748 | Cohen et al. | Oct 1998 | A |
5852820 | Burrows | Dec 1998 | A |
5857180 | Hallmark et al. | Jan 1999 | A |
5860069 | Wright | Jan 1999 | A |
5875445 | Antonshenkov | Feb 1999 | A |
5918225 | White et al. | Jun 1999 | A |
6003022 | Eberhard et al. | Dec 1999 | A |
6009265 | Huang et al. | Dec 1999 | A |
6026390 | Ross et al. | Feb 2000 | A |
6026391 | Osborn et al. | Feb 2000 | A |
6026394 | Tsuchida et al. | Feb 2000 | A |
6061676 | Srivastava et al. | May 2000 | A |
6205451 | Norcott et al. | Mar 2001 | B1 |
6289335 | Downing et al. | Sep 2001 | B1 |
6298342 | Graefe et al. | Oct 2001 | B1 |
6334128 | Norcott et al. | Dec 2001 | B1 |
6339768 | Leung et al. | Jan 2002 | B1 |
6353826 | Seputis | Mar 2002 | B1 |
6356889 | Lohman et al. | Mar 2002 | B1 |
6356891 | Agrawal et al. | Mar 2002 | B1 |
6370524 | Witkowski | Apr 2002 | B1 |
6430550 | Leo et al. | Aug 2002 | B1 |
6438558 | Stegelmann | Aug 2002 | B1 |
6438562 | Gupta et al. | Aug 2002 | B1 |
6526526 | Dong et al. | Feb 2003 | B1 |
6529896 | Leung et al. | Mar 2003 | B1 |
6529901 | Chaudhuri et al. | Mar 2003 | B1 |
6615222 | Hornibrook et al. | Sep 2003 | B2 |
6684203 | Waddington et al. | Jan 2004 | B1 |
6694306 | Nishizawa et al. | Feb 2004 | B1 |
6807546 | Young-Lai | Oct 2004 | B2 |
6901405 | McCrady et al. | May 2005 | B1 |
6934699 | Haas et al. | Aug 2005 | B1 |
6941360 | Srivastava et al. | Sep 2005 | B1 |
6954776 | Cruanes et al. | Oct 2005 | B1 |
6961729 | Toohey et al. | Nov 2005 | B1 |
6980988 | Demers et al. | Dec 2005 | B1 |
6990503 | Luo et al. | Jan 2006 | B1 |
7007007 | Slutz | Feb 2006 | B2 |
7089225 | Li et al. | Aug 2006 | B2 |
7155428 | Brown et al. | Dec 2006 | B1 |
7185000 | Brown et al. | Feb 2007 | B1 |
7234112 | Brown et al. | Jun 2007 | B1 |
7246108 | Ahmed | Jul 2007 | B2 |
7305410 | Skopec et al. | Dec 2007 | B2 |
7363289 | Chaudhuri et al. | Apr 2008 | B2 |
7383247 | Li et al. | Jun 2008 | B2 |
7406477 | Farrar et al. | Jul 2008 | B2 |
7499907 | Brown et al. | Mar 2009 | B2 |
7747606 | Dageville et al. | Jun 2010 | B2 |
20010047372 | Gorelik et al. | Nov 2001 | A1 |
20020038313 | Klein et al. | Mar 2002 | A1 |
20020099521 | Yang et al. | Jul 2002 | A1 |
20020138376 | Hinkle | Sep 2002 | A1 |
20020188600 | Lindsay et al. | Dec 2002 | A1 |
20030033291 | Harris | Feb 2003 | A1 |
20030065644 | Horman et al. | Apr 2003 | A1 |
20030093408 | Brown et al. | May 2003 | A1 |
20030115212 | Hornibrook et al. | Jun 2003 | A1 |
20030135480 | Van Arsdale et al. | Jul 2003 | A1 |
20030159136 | Huang et al. | Aug 2003 | A1 |
20030182276 | Bossman et al. | Sep 2003 | A1 |
20030212647 | Bangel et al. | Nov 2003 | A1 |
20030212668 | Hinshaw et al. | Nov 2003 | A1 |
20030229639 | Carlson et al. | Dec 2003 | A1 |
20040015600 | Tiwary et al. | Jan 2004 | A1 |
20040205062 | Brown et al. | Oct 2004 | A1 |
20040220911 | Zuzarte et al. | Nov 2004 | A1 |
20040244031 | Martinez | Dec 2004 | A1 |
20050028134 | Zane et al. | Feb 2005 | A1 |
20050055382 | Ferrat et al. | Mar 2005 | A1 |
20050120000 | Ziauddin et al. | Jun 2005 | A1 |
20050125393 | Yagoub et al. | Jun 2005 | A1 |
20050125427 | Dageville et al. | Jun 2005 | A1 |
20050125452 | Ziauddin et al. | Jun 2005 | A1 |
20050165741 | Gordon | Jul 2005 | A1 |
20050177557 | Ziauddin et al. | Aug 2005 | A1 |
20050177971 | Porco | Aug 2005 | A1 |
20050187917 | Lawande et al. | Aug 2005 | A1 |
20050187971 | Hassan et al. | Aug 2005 | A1 |
20050198013 | Cunningham et al. | Sep 2005 | A1 |
20050203933 | Chaudhuri et al. | Sep 2005 | A1 |
20050203940 | Farrar et al. | Sep 2005 | A1 |
20050234965 | Rozenshtein et al. | Oct 2005 | A1 |
20050262060 | Rohwedder et al. | Nov 2005 | A1 |
20050278577 | Doong et al. | Dec 2005 | A1 |
20050283471 | Ahmed | Dec 2005 | A1 |
20060026115 | Ahmed | Feb 2006 | A1 |
20060026133 | Ahmed | Feb 2006 | A1 |
20060031200 | Santosuosso | Feb 2006 | A1 |
20060041537 | Ahmed | Feb 2006 | A1 |
20060129542 | Hinshaw et al. | Jun 2006 | A1 |
20060195416 | Ewen et al. | Aug 2006 | A1 |
20060212428 | Nelson | Sep 2006 | A1 |
20060218123 | Chowdhuri et al. | Sep 2006 | A1 |
20070038595 | Ghosh et al. | Feb 2007 | A1 |
20070061379 | Wong et al. | Mar 2007 | A1 |
20070078825 | Bornhoevd et al. | Apr 2007 | A1 |
20070083500 | Zibitsker | Apr 2007 | A1 |
20080010240 | Zait | Jan 2008 | A1 |
20080040196 | Coon et al. | Feb 2008 | A1 |
20080052271 | Lam | Feb 2008 | A1 |
20080077348 | Hildebrand et al. | Mar 2008 | A1 |
20080098003 | Dias et al. | Apr 2008 | A1 |
20080114718 | Anderson et al. | May 2008 | A1 |
20080168058 | Gordon | Jul 2008 | A1 |
20080178079 | Chen et al. | Jul 2008 | A1 |
20080215536 | Day et al. | Sep 2008 | A1 |
20080228710 | Muras | Sep 2008 | A1 |
20080235183 | Draese et al. | Sep 2008 | A1 |
20090006445 | Shemenzon et al. | Jan 2009 | A1 |
20090018992 | Zuzarte et al. | Jan 2009 | A1 |
20090037923 | Smith et al. | Feb 2009 | A1 |
20090077016 | Belknap et al. | Mar 2009 | A1 |
20090100004 | Andrei et al. | Apr 2009 | A1 |
Number | Date | Country | |
---|---|---|---|
20090077017 A1 | Mar 2009 | US |
Number | Date | Country | |
---|---|---|---|
60973363 | Sep 2007 | US |