1. Field of the Invention
This patent relates generally to query planning in data management systems.
2. Background Information
Relational Database Management Systems are sometimes referred to as RDBMS. In RDBMS', data are stored in tables and users are able to “query” that data using queries which are submitted to the RDBMS by client applications (often referred to simply as “clients”). The Structured Query Language (SQL) is an example of a query language understood by RDBMS.
In the execution of queries the RDBMS inspects the query for syntactical correctness and upon successful verification of correctness, the query is processed by a series of components that determine how to execute the query. Typical RDBMS implement these steps with query parsers, query optimizers and query executors to verify, interpret, plan and execute queries.
In the process of executing queries, RDBMS construct “Query Plans”. A “Query Plan” is an ordered list of operations that must be performed in response to a query, in order to produce the intended effect of the query. The process of query planning and optimization are complex because they have to address a wide variety of different kinds of queries and circumstances. There are occasions when the Query Plan chosen by an RDBMS is not optimal, for one of a very large number of possible reasons.
A particular class of RDBMS systems is the Parallel RDBMS (PRDBMS), a system where user data are partitioned across a plurality of computers (called nodes), each providing computing capacity (CPU), volatile memory, network connectivity and storage, and whereby queries are collectively executed by this collection of computers.
The data stored by the DBMS may be stored in some persistent storage medium (such as hard disk drives or solid state drives) or may be stored in some ephemeral memory storage medium such as a RAM-disk.
A PRDBMS is a specific instance of a distributed computing system. According to the sharing of resources such as CPU, volatile memory, and storage, these systems are categorized as Shared Nothing, Shared Disk, Shared Memory, or Shared Everything systems.
In PRDBMS systems that are Shared Nothing, query execution is further complicated by the fact that each node only has visibility to a subset of the data. For example, in Shared Nothing PRDBMS each node only has access to the data on the storage associated with that node. Query planning in a PRDBMS must also take into account issues relating to data visibility and data location.
The complexity of query planning in PRDBMS is therefore significantly higher and the possibility for a sub-optimal or incorrect query plans is increased.
Often query planners take some direction from metadata and statistics that are accumulated by the DBMS over time. Such metadata often includes table sizes, key distribution values, schema information such as available indices, and various constraints established in the data model such as uniqueness and referential integrity relationships.
A variety of methods have been proposed to influence the Query Plans constructed by an RDBMS. All of these can be broadly categorized as “hints” to the RDBMS; suggestions from the client application that provide the RDBMS with information that may not be otherwise available to it, and that the client believes to be important in the query planning process. These hints must be specified with the query on each execution. Hints sometimes include a specification of a particular access methods (such as indexes), or join orders.
The software and algorithms for generating query plans can be provided these hints as described in a variety of items of prior art but all of these mechanisms allow the query planning software to construct a query plan within the parameters established by the hints. However, despite the hints, there are circumstances where the query planning process chooses sub-optimal query plans.
In query planning, especially in the case of PRDBMS it is sometimes required to specify a particular query execution plan in response to a query. This can occur for one of many reasons including the fact that no legitimate code path in the query planner would, in the specific circumstances elect to execute a particular query in a manner that the user would like it to be executed.
In the general case, manually constructing a query plan for a non-trivial query is extremely complicated and not practical. This complexity is only compounded when one considers that query languages (including SQL) provide the ability to specify parameters. The two queries below are semantically identical and differ only in the parameters provided therein.
SELECT * FROM USERS WHERE USERID=40;
SELECT * FROM USERS WHERE USERID=35;
Yet there exist cases where it is essential that the DBMS execute a very specific query plan, and one that it would not itself choose as the query plan for the query at hand. DBMS traditionally plan and execute queries in a manner that is graphically represented in
Also DBMS traditionally provide a mechanism to retrieve query plans as represented in
A mechanism is presented whereby a user can construct a query plan for a query of arbitrary complexity and then express that query plan in a format that can be provided to the DBMS. The query plan provided to the system in this form is referred to as a Raw Plan.
In specifying the Raw Plan to the system, the user may also specify the criteria under which this raw plan is to be executed. When a matching query and the subject circumstances are encountered the DBMS will execute the Raw Plan in response to that query, instead of searching in a query cache or generating a new query plan if one is not found in a query cache.
The invention description below refers to the accompanying drawings, of which:
Some examples of when it would be beneficial to provide a mechanism whereby a client application could force a specific query plan are provided first.
The data stored in databases is often highly privileged and often contains personally identifiable information about people. Companies that own this data are reluctant to share this with others, especially software vendors. In some countries and in some situations, the owners of the data may not be permitted to share the data with others.
On occasion, bugs in software cause query execution to go wrong, but only when a specific query plan is executed. When a customer reports this problem to a vendor, the vendor is often unable to recreate the problem because sample data is not provided with the problem report. Therefore, in the absence of the data set that created the problem, the vendor is unable to replicate the problem as no amount of hints or other trickery can cause the query planner to emit the particular aberrant query plan.
In another circumstance, the RDBMS when presented with a particular query analyzed it and generated what appeared to be a perfectly valid query plan. However the data against which this query was executed was peculiar in some way that could not be captured in the metadata and statistics and therefore the query plan constructed was particular bad and resulted in the system taking unacceptably long to execute the query. A visual inspection of the query and some elementary debugging showed the problem and a user felt that if the system were only to execute a slightly different query plan, it would be much quicker. The user was able to infer this by a logical process of manually computing the various steps in this proposed query plan and estimating the total time that the query would take to execute but the user was unable to provide any hints to the query planner to cause it to generate the plan that was desired.
In another circumstance, the RDBMS when presented with a particular query analyzed it and generated a perfectly functional and efficient query plan that also executed very quickly. However when a very similar query differing from the first one only in the parameters is executed the specific data lead to a highly sub-optimal query execution plan.
In all of these situations a mechanism to force a specific query plan is essential.
A DBMS according to the preferred embodiments herein provides a mechanism for a client application to provide the DBMS with a Raw Plan as illustrated in
A DBMS according to the preferred embodiments follows a process for query execution as illustrated in
The decisions about how to plan a query are based on the settings that indicate whether or not Raw Plans are enabled.
In
Several database queries are considered equivalent by the system for the purpose of query planning. For example, Query A and Query B below are equivalent as they differ only in the parameter (the userid) that is being searched.
SELECT * FROM USERS WHERE USERID=40;
SELECT * FROM USERS WHERE USERID=35;
For the purpose of query planning, we consider a “Template” to be a representation of a query such that a query plan constructed for the template of a query can be recombined with the non-template information to produce an executable query plan. Using this technique, one could construct the following Template and Non-Template Information. Template:
SELECT * FROM USERS WHERE USERID=<PARAMETER1>;
Parameter 1: Integer
If a cached plan is not found in (806), a set of feasible query plans are constructed (807) based on Metadata & Heuristics (808). The optimum plan is chosen based on some specified optimization parameters (809) and the plan cache is updated (811) to reflect this optimum plan for the template generated in (802). Non-template information that was extracted in step (802) is now reinserted (810) into the query plan and the process of query planning is done (812).
If a cached plan is found in (806), processing resumes at step (810) where the non-template information is reinserted into the query plan obtained from cache, and the process of query planning is done (812).
As you can see from the above, the query cache contains a cache of Query Templates and their associated Query Plans constructed in step (809) above. One purpose of a query plan cache is to save time and resources in the query planning process.
Returning attention to
Using an EXPLAIN command with the “RAW PLAN=TRUE” qualifier, the user obtained a raw plan for the query (902) that is shown in
The Raw Plan in this representation uses XML and the incoming SQL Template that is the subject of this plan is illustrated with the <insql> XML tag (1001). The Template generation process identified one non-template item, a parameter and that is called out as such (1002) with the <parameter> XML tag. The Query Plan illustrated has multiple steps and one of the steps performs an operation that requires the use of a Dynamic Nodegroup which is, for the purpose of this Raw Plan, identified as “dg0” (1003) and identified using the “dyngroup” XML tag. The Query Plan consists of multiple steps and the first step of the Query Plan (1004) consists of a query identified by the “srcsql” XML tag (1005). Observe that this step uses a query with the parameter @p0 which is the Non-Template information (1002). It performs a redistribution (1006) where the target is temp4 which is a table on a nodegroup dg0 which was the Dynamic Group (1003). The definition of the storage group dg0 (1003) provides a qualifier (size=“large”) which is used at run time to map dg0 onto an actual storage group that matches the qualifier (size=“large”). The name “dg0” is used within the raw plan to identify this storage group for use in the various Query Plan Steps.
is
Returning attention to
The criteria specified is any expression that the system can evaluate and the criteria associated with a raw plan are considered to be satisfied if the expression evaluates to TRUE and are considered to be not satisfied if the expression evaluates to other than TRUE. Without loss of generality, this expression could include logical operators, grouping operators, and so on. The degenerate criteria of “TRUE” or “FALSE” can also be specified. A default of either TRUE or FALSE may be inferred by the system if no criteria are specified.
The SHOW RAW PLANS command (1311) lists the raw plans known to the system. The output of the command (1312 through 1316) reflect information about the raw plan ‘rpt1’ (1312) just created above.
The “ALTER RAW PLAN” command can be used to modify a raw plan and as shown (1320) it can be used to enable a raw plan.
The “DELETE RAW PLAN” command can be used to delete a raw plan and as shown (1330) it can be used to delete the raw plan “rpt1”.
Without loss of generality, one may use the techniques described above to provide the system with a raw plan and a query for immediate execution. Using this “Immediate Raw Plan” specification, a client application could further specify zero or more items of criteria, and whether or not the raw plan should be cached in the raw plan cache.
Assume that a user believes that a query plan generated by the system is aberrant for some reason and would like to debug this further. One avenue available to the user is to generate a query plan for the aberrant query and export that plan in the “Raw Plan” format. He can then send that Raw Plan with no data to a third party who can then cause a system to execute that query plan in response to a query. The third party can now insert arbitrary data into the database and attempt to recreate the effect of the aberrant query against that fictitious data and debug the problem with the system.
The third party can also suggest an alternative plan that the user should experiment with and he (or she) can do this by merely altering the Raw Plan and returning a modified Raw Plan to the user who is then able to install that into the Raw Plan cache and enable it.
The user could specify criteria that would instruct the system to only use the raw plan under test for (say) the present session. This would mean that a production system would continue to run unimpeded while the user can experiment with the raw plan and ensure proper functioning. Once a suitable Raw Plan is found, it can be installed into the Raw Plan cache with a less restrictive set of criteria which would expose it to (potentially) all users and the production system.
The criteria may also include references to non-template information and further restrict the applicability of the raw plan. For example, data skew is a common problem in database management systems. Assume that a table contains many rows with a particular attribute. However, the values for this particular attribute are “skewed” or “unequal”. The system may normally generate a good query plan for most values of that particular attribute but in the case of some particular values of that attribute, the query plan is sub- optimal. One could therefore include in the criteria, a specification that would cause the raw plan to be executed only when one of those sub-optimal attributes is specified in the user query.
It should be understood that the embodiments described above are but one example and the system and methods may be implemented in many different ways. In some instances, the various “data processors” described herein may each be implemented by a physical or virtual general purpose computer having a central processor, memory, disk or other mass storage, communication interface(s), input/output (I/O) device(s), and other peripherals. The general purpose computer is transformed into the processors and executes the processes described above, for example, by loading software instructions into the processor, and then causing execution of the instructions to carry out the functions described.
As is known in the art, such a computer may contain a system bus, where a bus is a set of hardware lines used for data transfer among the components of a computer or processing system. The bus or busses are essentially shared conduit(s) that connect different elements of the computer system (e.g., processor, disk storage, memory, input/output ports, network ports, etc.) that enables the transfer of information between the elements. One or more central processor units are attached to the system bus and provide for the execution of computer instructions. Also attached to system bus are typically I/O device interfaces for connecting various input and output devices (e.g., keyboard, mouse, displays, printers, speakers, etc.) to the computer. Network interface(s) allow the computer to connect to various other devices attached to a network. Memory provides volatile storage for computer software instructions and data used to implement an embodiment. Disk or other mass storage provides non-volatile storage for computer software instructions and data used to implement, for example, the various procedures described herein.
Embodiments may therefore typically be implemented in hardware, firmware, software, or any combination thereof.
The computers that execute the processes described above may be deployed in a cloud computing arrangement that makes available one or more physical and/or virtual data processing machines via a convenient, on-demand network access model to a shared pool of configurable computing resources (e.g., networks, servers, storage, applications, and services) that can be rapidly provisioned and released with minimal management effort or service provider interaction. Such cloud computing deployments are relevant and typically preferred as they allow multiple users to access computing resources as part of a shared marketplace. By aggregating demand from multiple users in central locations, cloud computing environments can be built in data centers that use the best and newest technology, located in the sustainable and/or centralized locations and designed to achieve the greatest per-unit efficiency possible.
In certain embodiments, the procedures, devices, and processes described herein are a computer program product, including a computer readable medium (e.g., a removable storage medium such as one or more DVD-ROM's, CD-ROM's, diskettes, tapes, etc.) that provides at least a portion of the software instructions for the system. Such a computer program product can be installed by any suitable software installation procedure, as is well known in the art. In another embodiment, at least a portion of the software instructions may also be downloaded over a cable, communication and/or wireless connection.
Embodiments may also be implemented as instructions stored on a non-transient machine-readable medium, which may be read and executed by one or more procedures. A non-transient machine-readable medium may include any mechanism for storing or transmitting information in a form readable by a machine (e.g., a computing device). For example, a non-transient machine-readable medium may include read only memory (ROM); random access memory (RAM); magnetic disk storage media; optical storage media; flash memory devices; and others.
Furthermore, firmware, software, routines, or instructions may be described herein as performing certain actions and/or functions. However, it should be appreciated that such descriptions contained herein are merely for convenience and that such actions in fact result from computing devices, processors, controllers, or other devices executing the firmware, software, routines, instructions, etc.
It also should be understood that the block and network diagrams may include more or fewer elements, be arranged differently, or be represented differently. But it further should be understood that certain implementations may dictate the block and network diagrams and the number of block and network diagrams illustrating the execution of the embodiments be implemented in a particular way.
Accordingly, further embodiments may also be implemented in a variety of computer architectures, physical machines, virtual machines, cloud computers, and/or some combination thereof, and thus the computer systems described herein are intended for purposes of illustration only and not as a limitation of the embodiments.
Thus, while this invention has been particularly shown and described with references to example embodiments thereof, it will be understood by those skilled in the art that various changes in form and details may be made therein without departing from the scope of the invention as encompassed by the appended claims.
The present application is related to the following commonly assigned U.S. patent application Ser. No. 13/906,556, which was filed on May 31, 2013, by Annapragada et al. for an “Adaptive Multi-Client Saas Database” and Attorney Docket Number 111055-0004, filed on the same date herewith entitled “Hierarchical Query Plans In An Elastic Parallel Database Management System” also by Annapragada et al., both of which are hereby incorporated by reference in their entirety.