WO2015029187A1 - データベース管理システム及び計算機システム - Google Patents
データベース管理システム及び計算機システム Download PDFInfo
- Publication number
- WO2015029187A1 WO2015029187A1 PCT/JP2013/073181 JP2013073181W WO2015029187A1 WO 2015029187 A1 WO2015029187 A1 WO 2015029187A1 JP 2013073181 W JP2013073181 W JP 2013073181W WO 2015029187 A1 WO2015029187 A1 WO 2015029187A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- query
- execution
- database
- unit
- query execution
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Ceased
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2453—Query optimisation
- G06F16/24534—Query rewriting; Transformation
- G06F16/24542—Plan optimisation
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/21—Design, administration or maintenance of databases
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24552—Database cache management
Definitions
- the present invention relates to data input / output, for example, data processing technology and database management technology.
- the database management system receives a query for the database, executes the query, and outputs the execution result.
- the database management system sequentially executes one or more database operations necessary for the query execution procedure in a predetermined order.
- Patent Document 1 When executing a query, the database management system according to Patent Document 1 generates a task each time a data read request required for executing a database operation is executed, and executes the task thus generated in parallel. As a result, database operations are executed in parallel, and multiple data read requests are issued. This may reduce the time required to execute one query.
- a database server employs a type of database management system that sequentially executes one or more database operations in a predetermined order.
- a type of existing database management system is changed to a database management system of a type having a function of dynamically generating tasks according to Patent Document 1.
- modification is accompanied by drastic modification of the database management system, and it is necessary to rewrite the program code drastically, which is not easy.
- Such a problem may exist not only in a database management system but also in other computer programs or computer systems that require data input / output, for example, data reading.
- An object of the present invention is to shorten the time required to execute one processing request without drastically modifying an existing system. For example, an object of the present invention is to reduce the time required to execute one query without drastically modifying an existing database management system.
- the database management system includes a query reception unit, a query execution plan generation unit, a first query execution unit, a second query execution unit, and a buffer management unit.
- the database management system is a computer program that is executed in a computer, thereby allowing a query reception unit, a query execution plan generation unit, a first query execution unit, a second query execution unit, and a buffer management unit. Are configured in a computer.
- the query acceptance unit accepts queries to the database from the query issuer.
- the query execution plan generation unit generates a query execution plan including information indicating one or more database operations and an execution procedure of the one or more database operations necessary for executing the received query based on the received query.
- Each of the first query execution unit and the second query execution unit executes a query by executing a database operation based on the generated query execution plan, and obtains an execution result thereof.
- each of the first query execution unit and the second query execution unit may issue a data read request necessary for executing the database operation to the buffer management unit.
- the buffer management unit when the buffer management unit receives a data read request from one of the first query execution unit and the second query execution unit, if the data requested to be read is already stored in the buffer, the buffer management unit Data is read and provided to the query execution unit that issued the read request. If the requested data is not stored in the buffer, the data read request is issued to the database, and the data read by the read request is read. Are stored in a buffer and provided to the query execution unit that issued the read request.
- the first query execution unit returns the query execution result to the query issuer. That is, the first query execution unit returns the query execution result to the query issuer, and the second query execution unit does not return the query execution result to the query issuer. Yes.
- the buffer management unit When the buffer management unit receives a data read request from the first query execution unit, the data requested to be read has already received the data read request from the second query execution unit, so that the data has already been received.
- the data When the data is read from the database and stored in the buffer, the data may be read from the buffer and provided to the first query execution unit.
- the first query execution unit may be a query execution unit that sequentially executes one or more database operations in a predetermined order.
- the second query execution unit may be a query execution unit that dynamically generates a task according to Patent Document 1.
- the buffer management unit When the first query execution unit needs data to execute the database operation in executing the query, the buffer management unit has already stored the data in the buffer in response to a read request from the second query execution unit. In this case, the first query execution unit only needs to read the data from the buffer, and does not need to newly read the data from the database. That is, the second query execution unit may be able to reduce the time required for executing the query by the first query execution unit. Therefore, according to the present invention, it is expected to shorten the time required to execute one query without drastically modifying the existing database management system having the first query execution unit.
- the first embodiment shows a configuration of a computer system according to a first embodiment.
- surface of a database concerning Example 1, and an index is shown.
- the Part table concerning Example 1 is shown.
- the Lineitem table concerning Example 1 is shown.
- the query concerning Example 1 is shown. 7 shows a query execution plan according to the first embodiment. 10 shows an execution instance tree for query execution according to the first embodiment.
- the structure of the query execution plan information concerning Example 1 is shown.
- the structure of the statistical information concerning Example 1 is shown.
- the structure of the query execution part state management information concerning Example 1 is shown.
- the structure of the acceleration part state management information concerning Example 1 is shown.
- the structure of the cooperative control information concerning Example 1 is shown.
- generates a query execution plan, and performs a query is shown.
- generates the cooperative control information concerning Example 1 is shown.
- 10 shows a first query execution procedure according to the first embodiment.
- 10 shows a flow of a second query execution procedure according to the first embodiment.
- 10 shows a procedure for calculating cooperation of execution instances according to the first embodiment.
- the procedure which performs the execution instance concerning Example 1 is shown.
- 3 is a time chart for explaining the effect of the first embodiment.
- 10 shows a configuration of database buffer management information according to a second embodiment.
- EXAMPLE 3 The structure of such statistical information is shown.
- the structure of the computer system concerning Example 4 is shown.
- the issuer of the query to the database management system may be an internal computer program of the database management system or an external computer program.
- the query issuer may be a computer program (for example, an application program) executed in a database server having a database management system, or a computer program executed by a device such as a client computer connected to the database server. (For example, an application program).
- FIG. 1 shows a configuration of a computer system according to the first embodiment.
- the database server 401 is a computer, and may be, for example, a personal computer, a workstation, or a mainframe, or may be a virtual computer configured by a virtualization program in these computers.
- the database server 401 includes a network adapter 413, a memory 416, a storage device 415, and a processor 414 connected thereto.
- the processor 414 is, for example, a microprocessor and executes a computer program.
- the computer program executed by the processor 414 is, for example, an operating system 417, a database management system 412, and an application program 411 that issues a query to the database management system 412.
- the memory 416 is, for example, a volatile DRAM (Dynamic Random-Access Memory) or the like, and temporarily stores a program executed by the processor 414 and data used by the program.
- the storage device 415 is, for example, a nonvolatile magnetic disk, flash memory, or the like, and stores a program and data used by the program.
- the network adapter 413 connects the communication network 403 and the database server 401.
- the application program 411 may operate not on the database server 401 but on another computer (not shown) connected to the communication network 403.
- the processor 414 may be an element included in a control device connected to the network adapter 413, the memory 416, and the like.
- the control device may include a dedicated hardware circuit such as a circuit that performs encryption and decryption of data.
- the database server 401 may include a plurality of elements of any one of the processor 414, the memory 416, the storage device 415, and the network adapter 413 in order to improve performance and redundancy.
- the database server 401 may include an input device (not shown) such as a keyboard and a pointing device and an output device (not shown) such as a liquid crystal display. Input and output devices may be connected to the processor 414. The input device and the output device may be integrated.
- the database management system 412 executes a query issued from the application program 411, and in executing the query, in order to read data from the database 451 or write data to the database 451, the database An I / O request for the external storage apparatus 402 storing 451 is issued to the operating system 417.
- the operating system 417 receives the input / output request and issues the input / output request to the external storage apparatus 402.
- the external storage device 402 is a device having a storage device group 451 including a plurality of storage devices, and is, for example, a disk array device, but may instead be a single storage device.
- the external storage apparatus 402 stores the database 451 managed by the database management system 412 included in the database server 401, but may store a program in addition to the data of the database 451.
- the external storage apparatus 402 receives an input / output request from the database server 401, reads / writes data according to the input / output request, and returns the result to the database server 401.
- the external storage apparatus 402 includes a network adapter 441 and a storage controller 442 connected thereto in addition to the storage device group 451.
- the network adapter 441 connects the external storage apparatus 402 to the communication network 403, and is connected to the database server 401 via this.
- a communication protocol via the communication network 403 for example, Fiber Channel (FC), SCSI (Small Computer System Interface), or TCP / IP (Transmission Control Protocol / Internet Protocol) may be employed.
- FC Fiber Channel
- SCSI Small Computer System Interface
- TCP / IP Transmission Control Protocol / Internet Protocol
- the network adapter 413 of the database server 401 and the network adapter 441 of the external storage device 402 may be referred to as host bus adapters.
- the storage device included in the storage device group 451 is a device having a nonvolatile storage medium, such as a magnetic disk drive, a flash memory drive, and other semiconductor memory drives.
- the storage device group 451 may have a RAID (Redundant Array of Independent Disks) mechanism and store data at a predetermined RAID level.
- a logical storage device (for example, logical unit, logical volume, file system volume) based on the storage space of the storage device group 451 is provided to the database server 401, and the database 451 is stored on the logical storage device. Also good.
- the storage controller 442 includes, for example, a memory and a processor, and reads / writes data from / to the storage device group 451 storing the database 451 in response to an input / output request from the database server 401. For example, when the storage controller 442 receives a data read request from the database server 401, the storage controller 442 reads data from the storage device group 451 according to the request and returns the read data to the database server 401.
- the external storage apparatus 402 may have a plurality of components such as the storage controller 442 in order to improve performance and redundancy.
- the database management system 412 manages the database 451.
- Database 451 includes one or more tables 462 and may further include one or more indexes 461.
- the table 462 is a set of one or more records, and the record is composed of one or more columns.
- the index 461 is a data structure created for one or more columns or the like of the table 462, and is for speeding up the access to the table 462 by the selection condition including the column or the like targeted by the index 461. is there.
- the table 462 has a data structure that holds information for specifying a record including the value in the table 462 for each value of the target column.
- a B-tree or the like is used as the data structure.
- the database 451 may include database statistics 463.
- the database statistics 463 include, for example, data included in the database, such as information indicating the number of entries in the index 461, information indicating the number of records in the table 462, maximum value, average value, minimum value, and value distribution for each column. Contains information about.
- the database management system 412 includes a query reception unit 421, a query execution plan generation unit 422, query execution plan information 423, statistical information 427, a query execution unit 424 (an example of a first query execution unit), and query execution unit state management information 425.
- Acceleration unit validity determination unit 426, acceleration unit 428 (an example of a second query execution unit), acceleration unit state management information 429, cooperative control information generation unit 430, cooperative control information 431, database buffer management unit 432, database buffer 551 and database buffer management information 550 are included.
- the query receiving unit 421 receives a query issued by the application program 411.
- the query is described in, for example, a structured query language (SQL, Structured Query Language).
- the query execution plan generation unit 422 generates a query execution plan including one or more database operations necessary for executing the query from the query received by the query reception unit 421.
- the query execution plan is, for example, information including a relationship between one or more database operations and the execution order of the database operations, and is stored in the query execution plan information 423.
- a query execution plan may be represented by a tree structure in which a database operation is a node and a relation of execution order of database operations is an edge.
- the query execution plan generation unit 422 may use the statistical information 427 when generating the query execution plan.
- the query execution unit 424 executes the query received by the query reception unit 421 in accordance with the query execution plan generated by the query execution plan generation unit 422, and returns the execution result to the application program 411. At this time, the query execution unit 424 executes database operations in the query execution plan in a predetermined order according to the technology adopted in the existing database management system 412, and the query execution result is the application program 411 that is the query issuer. To return to. At this time, the query execution unit 424 issues a data read request necessary for executing the database operation to the database buffer management unit 432, and uses the data returned by the database buffer management unit 432 in response to the read request, Perform the database operation. When executing the query, the query execution unit 424 may store the execution state in the query execution unit state management information 425 and use it.
- the acceleration unit 428 executes the query received by the query reception unit 421 in accordance with the query execution plan generated by the query execution plan generation unit 422.
- the acceleration unit 428 may be a query execution unit to which the technique described in Patent Document 1 is applied. Specifically, the acceleration unit 428 generates (a) a task for executing the database operation, and (b) executes the generated task, so that data necessary for the database operation corresponding to the task is generated.
- the acceleration unit 428 may execute one or more tasks generated in this way in parallel. When there are two or more executable tasks, the acceleration unit 428 may execute at least two of the two or more tasks in parallel.
- the acceleration unit 428 may store and use the execution state in the acceleration unit state management information 429 when executing the query.
- the acceleration unit 428 may determine an executable task based on information stored in the query execution unit state management information 425 and the cooperative control information 431, respectively.
- the acceleration unit 428 issues a data read request required for executing the database operation to the database buffer management unit 432, and executes the database operation using the data returned by the database buffer management unit 432 in response to the request. .
- the acceleration unit 428 may execute a plurality of database operations in one task.
- the acceleration unit 428 may execute the next database operation in the same task without generating a new task each time.
- a process or kernel thread realized by the operating system 417 or a user thread realized by a library or the like may be used.
- the acceleration unit 428 unlike the query execution unit 424, the acceleration unit 428 does not need to return the query execution result to the application program 411, and the acceleration unit 428 does not necessarily execute the entire query. .
- the database buffer management unit 432 manages a database buffer 551 for temporarily storing data of the database 451.
- Database buffer 551 is configured on memory 416 and includes one or more database pages. The number of database pages included in the database buffer 551 may be limited to a predetermined number.
- the database buffer management unit 432 reads the data in the database 451 into the database buffer 551 and writes the data stored in the database buffer 551 into the database 451.
- the database buffer management unit 432 receives a data read request from the query execution unit 424 or the acceleration unit 428, if the requested data is already stored in the database buffer 551, the database buffer management unit 432 issues the read request source.
- the data requested to be read is not stored in the database buffer 551, the data is read from the database 451, and the read data is stored in the database buffer 551. Then, the data is returned to the query execution unit 424 or the acceleration unit 428 which is the issuer of the read request.
- the method in which the query execution unit 424 and the acceleration unit 428 request the database buffer management unit 432 to read data may be the same.
- the database buffer management unit 432 may store management information in the database buffer management information 550 and use it.
- the database management system 412 is different from the existing database management system mainly in the program modules shown in the dashed frame in FIG. 1, that is, the acceleration unit 428, the acceleration unit validity determination unit 426, and the cooperative control information generation unit 430. It can be said that this is an added (eg, add-in) database management system.
- the existing database management system mainly includes a query execution unit 424, a query execution plan generation unit 422, a query execution unit 424, and a database buffer management unit 432.
- the database management system 412 of the present embodiment additionally includes Primarily, it includes an accelerating unit 428, an accelerating unit validity determining unit 426, and a cooperative control information generating unit 430, which may reduce the time required to execute one query. That is, it is expected that the time required to execute one query is shortened without drastic modification of the database management system 412.
- the above-described query receiving unit 421, query execution plan generating unit 422, query executing unit 424, accelerating unit 428, accelerating unit validity determining unit 426, cooperative control information generating unit 430 and database buffer managing unit 432 are stored in the database management system 412. Although it is realized by being executed by the processor 414, at least a part of the processing performed by at least one of these components may be realized by hardware.
- Computer programs including the database management system 412 may be installed in the database server 401 from the program source.
- the program source may be a storage medium that can be read by the database server 401, for example.
- the configuration of the database management system 412 shown in FIG. 1 is merely an example.
- a certain component may be divided into a plurality of components, and a plurality of components may be integrated into one component.
- FIG. 2 shows definitions of the table 462 and the index 461 of the database according to the first embodiment.
- the database 451 includes, as a table 462, for example, a Part table including a column c1 that stores integer values and a column c2 that stores integer values, a column c3 that stores integer values, and a character value. And a Lineitem table including a column c4 to be stored. Further, the database 451 includes, as the index 461, an index related to the Part table based on the value of the column c1 (Part index) and an index related to the Lineitem table based on the value of the column c3 (Lineitem index).
- FIG. 3 shows a Part table according to the first example.
- Each record of the Part table of the database 451 is composed of a value in the column c1 and a value in the column c2.
- FIG. 4 shows a Lineitem table according to Example 1.
- Each record of the Lineitem table of the database 451 is composed of a value in the column c3 and a value in the column c4.
- FIG. 5 shows a query according to the first embodiment.
- the query shown in FIG. 5 is an example of a query for the database 451 shown in FIGS.
- the query shown in FIG. 5 is obtained from the Part table and the Lineitem table for the column c1 value “130” and the value of the column c2 and the value of the column c3 are the same. This means that the value of c4 is extracted.
- FIG. 6 shows a query execution plan according to the first embodiment.
- the query execution plan shown in FIG. 6 shows an example of the query execution plan generated by the query execution plan generation unit 422 when the database management system 412 receives the query shown in FIG.
- the query execution plan shown in FIG. 6 means a nested loop index join of two tables in which the Part table is an outer table and the Lineitem table is an inner table.
- the database operation OP1 for performing an index search using the Part index A database operation OP2 that acquires a record from the Part table based on the result of the index search, a database operation OP3 that performs an index search based on the Lineitem index based on the result of the record acquisition, and a record from the Lineitem table based on the result of the index search Database operation OP4 to be performed, and database operation OP5 to generate a result record to be output based on the result of the record acquisition.
- FIG. 7 shows an execution instance tree for query execution according to the first embodiment.
- an execution instance when the query execution unit 424 executes a query, a certain database operation may be executed, and another database operation may be executed based on the result. At this time, the subsequent database operation may be executed for each of a plurality of records obtained as a result of the previous database operation. That is, the subsequent database operation is executed a plurality of times. In each execution, the same database operation is executed for different input values (may be state values). . Each execution of such a database operation is referred to as an “execution instance”, and the input value at this time is referred to as an “execution context”.
- in the Part table that matches c1 130 is obtained, and the database operation OP2 for acquiring the record is called.
- the database operation OP2 for acquiring the record is called.
- is defined as one execution instance (# 2).
- is defined as one execution instance (# 4).
- the database operation OP5 is further called and executed, and a result record
- this is one execution instance (# 5).
- a database operation OP4 for acquisition is called.
- is defined as one execution instance (# 6).
- the database operation OP5 is further called and executed, and a result record
- is one execution instance (# 8).
- the next database operation is similarly called and executed based on the execution result of the database operation. That is, another execution instance is generated from the execution instance and executed. Since such a case can be shown as a tree structure in FIG. 7, in the present embodiment, the drawing is referred to as an “execution instance tree”.
- the query execution by the query execution unit 424 is performed by converting the execution instance tree of FIG. 7 from the root execution instance (# 1). This is equivalent to starting and executing all execution instances according to a predetermined order.
- the prescribed order is (# 1)-> (# 2)-> (# 3)-> (# 4)-> (# 5)-> (# 6)-> (# 7)-> (# 8)->...
- a value that is an order number indicating the order in which the execution instance is executed is considered.
- the sequence number of execution instances may be assigned with a value obtained by incrementing a natural number in the order in which execution instances are executed by the query execution unit 424.
- the order number of the execution instance (# 1) is 1, the order number of the execution instance (# 2) is 2, the order number of the execution instance (# 3) is 3, and so on. It may be assigned.
- the acceleration unit 428 basically executes the query shown in FIG. 5 with the query execution plan shown in FIG. 6, similarly to the query execution unit 424. Therefore, the query execution by the acceleration unit 428 can be represented by the basically same execution instance tree as the query execution unit 424.
- the acceleration unit 428 executes a query while dynamically generating a task, the order in which execution instances are executed is different from that of the query execution unit 424. That is, although starting from the root execution instance (# 1), the order may not always follow the default order. For example, in the example of FIG. 7, as a result of executing the database operation OP1 in the execution instance (# 1), the execution instance (# 2) is always executed first in the query execution procedure by the query execution unit 424.
- the execution instance (# 2) may be executed first, or the execution instance (# 8) may be traced first.
- the execution order of execution instances by the acceleration unit 428 may not be reproducible. For example, when the query is executed for the first time, even if the execution instance (# 8) is executed first after the execution instance (# 1), the execution instance will be executed if the same query is executed next. The possibility that the execution instance (# 16) is traced first after (# 1) cannot be denied.
- data read from the database 451 when the acceleration unit 428 executes a query may be stored in the database buffer 551.
- the query execution unit 424 executes the same query in parallel, there is a possibility that data may be read from the database buffer 551 without newly reading data from the database 451, and thus the query execution unit
- the time required for the query execution procedure by 424 may be shortened.
- the query execution unit 424 acquires the same data from the database buffer 551 within a certain time or step after the acceleration unit 428 stores the data in the database buffer 551. It is desirable to do so. In other words, the same execution instance in the query execution procedure is preferably executed by the query execution unit 424 without much delay, although the acceleration unit 428 executes it in advance.
- the acceleration unit 428 adjusts the execution order of execution instances by referring to the execution order of execution instances by the query execution unit 424. It is expected to increase the effect of shortening the time required for executing the query by the query execution unit 424. Specific procedures will be described later.
- an execution instance tree a tree structure has been described as an example, but this may be a graph.
- an edge may be extended from a plurality of execution instances to a single execution instance. This means that all the execution results of the database operation in the former execution instance are obtained, and the database operation in the latter execution instance is called.
- FIG. 8 shows the configuration of the query execution plan information 423 according to the first embodiment.
- the query execution plan information 423 is information on the memory 416 of the query execution plan shown in FIG.
- the query execution plan information 423 includes a start database operation table 801 and a database operation table 802.
- the start database operation table 801 indicates a database operation to be executed first in execution of a query.
- the database operation table 802 is a list of database operations executed in the execution of a query.
- the start database operation table 801 has one record, and has a start database operation ID 811 as an attribute.
- the start database operation ID 811 indicates a database operation ID indicating the database operation to be executed first in the execution of the query.
- the database operation table 802 has a record for each database operation, and includes a database operation ID 821, a next database operation ID 822, a database operation summary 823, and a database operation detail 824 as attributes.
- the database operation ID 821 is an ID for uniquely identifying a database operation in the query execution plan.
- the next database operation ID 822 is the database operation ID of the next database operation that the database operation calls after execution.
- the database operation summary 823 represents the type of processing performed by the database operation.
- Database operation details 824 represent details of processing performed by the database operation.
- FIG. 9 shows a configuration of statistical information 427 according to the first embodiment.
- the statistical information 427 includes information on data included in the database 451.
- the statistical information 427 is information on all or a part of the memory 416 of the database statistics 463 included in the database 451, and is further configured based on information included in the database 451. May be.
- the statistical information 427 includes a general statistical information table 901.
- the general statistical information table 901 includes information related to the table 462 or the index 461 included in the database 451. For example, information indicating the number of entries in the index 461, information indicating the number of records in the table 462, the maximum value for each column, Includes average value, minimum value, value distribution for each column, etc.
- the general statistical information table 901 has a record for each statistical item, and has, for example, a table 911, a column 912, and a statistical value 913 as attributes.
- Table 911 represents a table to which statistical items are related.
- a column 912 represents a column to which the statistical item is related. However, the column 912 is “ ⁇ ” when not related to a specific column.
- the statistical value 913 represents a specific value of the statistical type.
- the first statistical item means a frequency distribution regarding the c1 column of the Part table, and the number of records whose c1 value is 0 to 999 is 20,000, 1000 to 1999.
- the number means 50,000.
- the second statistical item means that the cardinality regarding the c3 column of the Lineitem table is 1,000,000.
- the third statistical item means that the total number of rows in the Lineitem table is 6,000,000.
- FIG. 10 shows the configuration of the query execution unit state management information 425 according to the first embodiment.
- the query execution unit state management information 425 includes a database operation table 1001 being executed and a database operation table 1002 being stacked.
- the in-execution database operation table 1001 manages execution information of the database operation currently being executed in the query execution unit 424. That is, the table 1001 manages information on execution instances currently being executed in the query execution unit 424.
- the in-stack database operation table 1002 manages execution information of database operations stacked in the query execution unit 424. That is, the table 1002 manages information on execution instances stacked up to now in the query execution unit 424.
- the query execution unit 424 executes database operations sequentially, the number of database operations being executed is 1, that is, the number of execution instances being executed is 1.
- the executing database operation table 1001 always has one record. As attributes, it has a database operation ID 1011 and an execution context 1012.
- the database operation ID 1011 is a database operation ID indicating the database operation currently being executed.
- the execution context 1012 is an execution context of the database operation. For example, in the example of FIG. 10, the query execution unit 424 is currently executing the database operation OP3, and the database operation has information of sibling #: 1 as an execution context, that is, the parent database operation This means that this is the first database operation call.
- the in-stack database operation table 1002 has a record for each execution of stacked database operations, that is, stacked execution instances, and has a stack depth 1021, a database operation ID 1022, and an execution context 1023 as attributes.
- Stack depth 1021 indicates the stacking order.
- the database operation ID 1022 is a database operation ID indicating a stacked database operation.
- the execution context 1023 is an execution context of stacked database operations.
- the query execution unit 424 first stacks the execution of the database operation OP1. Since the database operation OP1 is a start database operation, the execution context is not shown here. Further, in the example of FIG. 10, the query execution unit 424 has stacked execution of the database operation OP2 next.
- the database operation has sibling #: 2 information as an execution context, which means that the parent database operation OP1 is a second database operation call.
- FIG. 11 shows a configuration of the acceleration unit state management information 429 according to the first embodiment.
- the acceleration unit state management information 429 includes a running execution instance table 1101, a queued running instance table 1102, and an executed execution instance table 1103.
- the running execution instance table 1101 manages information on execution instances currently being executed in the acceleration unit 428.
- the in-queue execution instance table 1102 manages information of execution instances waiting to be queued in the current acceleration unit 428.
- the executed execution instance table 1103 manages information on execution instances already executed in the acceleration unit 428.
- the running execution instance table 1101 has a record for each execution instance being executed, and has an execution instance ID 1111, a database operation ID 1112, an execution context 1113, a parent execution instance ID 1114, and a prediction order number 1115 as attributes.
- the execution instance ID 1111 is an execution instance ID indicating the execution instance currently being executed.
- the database operation ID 1112 is a database operation ID indicating a database operation to be executed in the execution instance.
- the execution context 1113 is an execution context when executing a database operation in the execution instance.
- the parent execution instance ID 1114 is an execution instance ID indicating the parent execution instance that generated the execution instance.
- the prediction order number 1115 is the order number predicted by the procedure described later for the execution instance. For example, in the example of FIG.
- the accelerating unit 428 is executing at least the # 4 execution instance and the # 10 execution instance in parallel. Further, for example, the execution instance of # 4 executes the database operation OP4, and the execution context at this time is sibling #: 1, which is the generation of the first execution instance for the parent execution instance # 3.
- the sequence number predicted by is 4.
- the queued execution instance table 1102 has a record for each execution instance in the queued execution waiting state, and the attributes include an execution instance ID 1121, a database operation ID 1122, an execution context 1123, a parent execution instance ID 1124, and a predicted order number. 1125.
- the execution instance ID 1121 is an execution instance ID indicating a queued execution instance waiting to be executed.
- the database operation ID 1122 is a database operation ID indicating a database operation to be executed in the execution instance.
- the execution context 1123 is an execution context for executing a database operation in the execution instance.
- the parent execution instance ID 1124 is an execution instance ID indicating the parent execution instance that generated the execution instance.
- the prediction order number 1125 is an order number predicted by a procedure described later for the execution instance.
- the accelerating unit 428 queues at least # 6 execution instances, # 12 execution instances, and # 14 execution instances. Further, for example, the execution instance # 6 executes the database operation OP4, and the execution context at this time is sibling #: 2, which is the generation of the second execution instance for the parent execution instance # 3.
- the sequence number predicted by is 6.
- the executed execution instance table 1103 has a record for each execution instance in the executed state, and includes, as attributes, an execution instance ID 1131, a database operation ID 1132, an execution context 1133, a parent execution instance ID 1134, and a prediction order number 1135.
- the execution instance ID 1131 is an execution instance ID indicating the execution instance in the executed state.
- the database operation ID 1132 is a database operation ID indicating a database operation to be executed in the execution instance.
- the execution context 1133 is an execution context for executing a database operation in the execution instance.
- the parent execution instance ID 1134 is an execution instance ID indicating the parent execution instance that generated the execution instance.
- the prediction order number 1135 is an order number predicted by a procedure described later for the execution instance. For example, in the example of FIG.
- the acceleration unit 428 has completed execution of at least the execution instances of # 1, # 2, # 8, # 3, and # 9. Further, for example, the execution instance of # 1 executes the database operation OP1, and since the database operation is the start database operation, there is no parent execution instance, and the execution context is not particularly recorded.
- the sequence number assigned is 1.
- FIG. 12 shows the configuration of the cooperative control information 431 according to the first embodiment.
- the cooperative control information 431 is referred to the execution order of the execution instances by the query execution unit 424 by the acceleration unit 428 according to the procedure described later. This is for adjusting the execution order of execution instances.
- the entire execution instance required for executing the query for example, the execution instance tree shown in FIG. 7 is not found until the query execution is completed, and is executed before or after executing the query. It is impossible to grasp the whole picture on the way.
- the statistical information 427 related to the database 451 and the information such as the query execution plan it is possible to predict the entire execution instance although it is not complete accuracy.
- the cooperative control information generation unit 430 predicts the entire contents of the execution instance by using statistical information 427 related to the database, information such as a query execution plan, and the like.
- the control information 431 is stored in the memory 416. Further, the execution order of execution instances by the acceleration unit 428 is adjusted using the cooperative control information 431 by a procedure described later.
- the cooperative control information 431 includes a start prediction execution instance table 1201 and a prediction execution instance table 1202.
- the start prediction execution instance table 1201 indicates an execution instance that is predicted to be executed first in the acceleration unit 428 in the execution of a query.
- the predicted execution instance table 1202 is a list of execution instances predicted to be executed by the acceleration unit 428 in the execution of a query.
- the start prediction execution instance table 1201 has one record, and has a start prediction execution instance ID 1211 as an attribute.
- the start predicted execution instance ID 1211 indicates an execution instance ID indicating an execution instance predicted to be executed first in the acceleration unit 428 in the execution of a query.
- the predicted execution instance table 1202 has a record for each execution instance predicted to be executed by the accelerating unit 428.
- a predicted execution instance ID 1221 As attributes, a predicted execution instance ID 1221, a database operation ID 1222, a predicted execution context 1223, a child predicted execution instance ID 1224, It has a parent prediction execution instance ID 1225 and a prediction order number 1226.
- the predicted execution instance ID 1221 is a predicted execution instance ID indicating an execution instance predicted to be executed by the acceleration unit 428.
- the database operation ID 1222 is a database operation ID indicating a database operation executed in the predicted execution instance.
- the predicted execution context 1223 is an execution context predicted when a database operation is executed in the predicted execution instance.
- the child predicted execution instance ID 1224 is a predicted execution instance ID indicating a predicted execution instance that is predicted to be generated by the predicted execution instance.
- the parent predicted execution instance ID 1225 is a predicted execution instance ID indicating a predicted execution instance that is predicted to generate the predicted execution instance.
- the prediction order number 1226 is the order number of the execution in which the prediction execution instance is predicted to be executed by the query execution unit 424. For example, in the example of FIG. 12, it is predicted that execution instances listed as ## 1, ## 2, ## 3, etc. are generated in the execution of a query.
- the predicted execution instance ## 1 is generated first, executes the database operation OP1, and since it is generated first, there is no execution context, there is no parent execution instance, and the sequence number is 1 and is predicted to generate predicted execution instances such as ## 2, ## 8, ## 16, ## 22, and the like.
- the predicted execution instance ## 2 executes the database operation OP2, and is generated as sibling: 1 as the execution context from the predicted execution instance # 1, that is, as the first, the sequence number is 2, and ## 3 predicted execution instances are predicted to be generated.
- FIG. 13 shows a procedure for receiving a query according to the first embodiment, generating a query execution plan, and executing the query.
- FIG. 13 shows a procedure when one query is accepted.
- the database management system 412 displays the two queries in parallel in FIG.
- the procedure shown may be performed, or the procedure shown in FIG. 13 may be sequentially performed.
- the information shown in FIGS. 8 to 12 may be configured for each query. This may be done, for example, by providing an attribute that identifies the query in each table.
- the query reception unit 421 receives a query issued by the application program 411 and stores it in the memory 416, for example.
- the query may be described in, for example, a structured query language (SQL, Structured Query ⁇ ⁇ ⁇ Language).
- the query execution plan generation unit 422 generates a query execution plan from the query received by the query reception unit 421 based on the database statistics 463 of the database 451 or the statistical information 427 on the memory 416, and the generated query execution plan Query execution plan information 423 is stored in the memory 416 as information representing the plan.
- the query execution plan generation unit 422 generates one or more query execution plan candidates and performs cost calculation for each of them. For example, the query execution plan generation unit 422 calculates the cost of one query execution plan based on a criterion such as a minimum cost. Candidates may be selected as query execution plans.
- the query execution plan may be generated based on an instruction included in the query description received in S1301, for example, an SQL hint.
- the acceleration unit validity determination unit 426 determines whether or not the acceleration unit 428 is valid in the database management system 412. Specifically, in S1303, the acceleration unit validity determination unit 426 determines whether the acceleration unit 428 is included in the database management system 412 and operates effectively. For example, this may be determined based on setting information such as setting parameters of the database management system 412. Further, for example, the setting information is stored in a storage (for example, the storage device 415 or the external storage device 402) that can be referred to from the database management system 412, and when the setting information includes a predetermined instruction, If the acceleration unit 428 is effective and not included, it may be determined that it is not effective. If the result of the determination by the acceleration unit validity determination unit 426 is affirmative, S1304 and S1305 are executed, and then S1306 is executed. If the result is negative, S1306 is executed.
- setting information such as setting parameters of the database management system 412.
- the setting information is stored in a storage (for example, the storage device 415 or the external storage device 40
- the cooperative control information generation unit 430 generates the cooperative control information 431 based on the query execution plan generated by the query execution plan generation unit 422. Details of this procedure will be described later.
- the acceleration unit validity determination unit 426 inputs the query execution plan generated by the query execution plan generation unit 422 and drives the acceleration unit 428.
- the acceleration unit 428 executes the procedures from S1311 to S1312 described on the right side of FIG.
- the query execution unit 424 executes the query received by the first query execution procedure based on the query execution plan generated by the query execution plan generation unit 422. Details of this procedure will be described later.
- the query execution unit 424 completes the execution of the query by completing the first query execution procedure, and returns the result obtained by executing the query to the application program 411 that is the query issuer.
- the query execution unit 424 reads data from the database buffer 551. Therefore, the query execution unit 424 can use the data already read into the database buffer 551 by the second query execution procedure described later in the first query execution procedure. That is, the query execution unit 424 may be able to execute a database operation without input / output with respect to the database in the first query execution procedure.
- the acceleration unit 428 determines whether the input query execution plan is a query execution plan that can be accelerated.
- “acceleration is possible” means that the time taken for the query execution procedure by the first query execution procedure can be shortened by executing the second query execution procedure in parallel based on the query execution plan. It means that there is.
- the determination in S1311 gives a predetermined condition that the database management system 412 can be accelerated in advance. It may be performed by determining whether or not the above is satisfied. In addition, the determination as to whether or not the query execution plan can be accelerated may be performed based on the criteria described below separately or in addition to the above.
- the acceleration unit 428 determines that acceleration is possible if the amount of resources that can be used for query execution by the second query execution procedure satisfies a predetermined condition, and if the predetermined condition is not satisfied. It may be determined that acceleration is not possible.
- the amount of usable resources may be, for example, the capacity of the usable memory 416 or the capacity of the database buffer 551.
- the determination in S1311 may be performed based on an instruction included in the query description received in S1301, for example, an SQL hint.
- the acceleration unit 428 determines that the query can be accelerated if the query received in S1301 includes a predetermined instruction, and determines that the query cannot be accelerated if the query is not included. Good.
- the determination in S1311 may be made based on the values of the setting parameters of the database management system 412 and the like.
- the acceleration unit 428 determines that acceleration is possible when the setting information stored in the storage that can be referred to from the database management system 412 (for example, the storage device 415 or the external storage device 402) includes a predetermined instruction, If not included, it may be determined that acceleration is not possible.
- the acceleration unit 428 executes S1312, and if negative, the acceleration unit 428 ends.
- the acceleration unit 428 executes the query accepted by the second query execution procedure based on the query execution plan generated by the query execution plan generation unit 422. Details of this procedure will be described later.
- the acceleration unit 428 completes the execution of the query by completing the second query execution procedure.
- the acceleration unit 428 executes the second query execution procedure when the query execution unit 424 completes the first query execution procedure even during the execution of the second query execution procedure. You may stop and end.
- the acceleration unit 428 may determine from the query execution unit state management information 425 that the query execution unit 424 has completed the first query execution procedure, for example.
- the acceleration unit 428 may store the data read from the database in the database buffer 551. Therefore, the query execution unit 424 may be able to use data already stored in the database buffer 551 by the second query execution procedure in the first query execution procedure.
- the procedure for generating the cooperative control information 431 shown in S1304 may be performed prior to the execution of S1311 in the acceleration unit 428, for example, or may be performed prior to the execution of S1306 in the query execution unit 424 instead of the above. Also good. In this case, the execution of S1311 and S1306 is performed after the generation of the cooperative control information 431.
- FIG. 14 shows a procedure for generating the cooperative control information 431 according to the first embodiment. This procedure corresponds to the procedure of S1304 in FIG.
- the cooperative control information generation unit 430 generates the cooperative control information 431 with reference to the query execution plan information 423 and the statistical information 427.
- the frequency of c1 class 0 to 999 is 20,000
- the database operation OP2 acquires a record based on the record reference.
- the database operation OP4 acquires a record based on the record reference. In this case, since one record corresponds to one record reference, it is predicted that one database operation OP5 is executed as a result of the execution of each database operation OP4. Assuming statistical uniformity by the above procedure, the following execution instance tree is predicted.
- the execution instance corresponding to the database operation OP1 is 1. This is the execution instance (predicted execution instance) to be executed first. 20 execution instances (execution of database operation OP2) are generated from this execution instance. That is, there are 20 execution instances corresponding to the database operation OP2.
- One execution instance (execution of database operation OP3) is generated from each execution instance. That is, there are 20 execution instances corresponding to the database operation OP3.
- execution instances (execution of database operation OP4) are generated from each execution instance. That is, the execution instance corresponding to the database operation OP4 is 120.
- One execution instance (execution of database operation OP5) is generated from each execution instance. That is, 120 execution instances corresponding to the database operation OP5 are generated.
- Such a prediction execution instance tree is stored in the memory 416 in the structure shown in FIG. On the prediction execution instance tree, starting from the start prediction execution instance and tracing the prediction execution instance based on the query execution procedure in the query execution unit 424, the prediction order number in each prediction execution instance is calculated. be able to.
- the cooperative control information generation unit 430 refers to the query execution plan information 423 and the statistical information 427, generates all information of the predicted execution instance tree in advance, and traces the predicted execution instance, for example, in the above example. Is the same value with the predicted order number of the execution instance corresponding to the database operation OP1 being 1, and the predicted order number of the execution instance corresponding to the database operation OP2 being executed first (ie sibling #: 1) being 2, The prediction order number may be obtained by incrementing. Further, the cooperative control information generation unit 430 may generate partial information related to the prediction execution instance tree so that the cooperative control information 431 can be calculated when the cooperative control information 431 is referred to later. Good.
- an execution instance corresponding to the database operation OP2 generates an execution instance corresponding to one database operation OP3 on average, and an execution instance corresponding to the database operation OP3 is averaged
- the execution instance corresponding to the database operation OP3 is generated, the execution instance corresponding to the database operation OP3 generates an execution instance corresponding to one database operation OP4 on average, and the execution instance corresponding to the database operation OP4 is It is predicted that an execution instance corresponding to one database operation OP5 will be generated on average.
- FIG. 15 shows a first query execution procedure according to the first embodiment.
- the first query execution procedure corresponds to the procedure of S1306 in FIG.
- the query execution unit 424 refers to the query execution plan information 423, and sets the start database operation to x (local variable on the memory 416).
- the query execution unit 424 reflects x in the executing database operation table 1002 of the query execution unit state management information 425.
- the query execution unit 424 acquires a database page necessary for execution of x from the database 451.
- the query execution unit 424 issues a read request for the database page to the database buffer management unit 432.
- the database buffer management unit 432 returns the stored database page from the database buffer 551 to the query execution unit 424 if the database page is already stored in the database buffer 551, and stores the database 451 if it is not stored.
- a read request is issued to the external storage device 402 that has been stored, the database page read from the database 451 is stored in the database buffer 551, and returned to the query execution unit 424.
- the database page necessary for execution of the database operation is the second query executed by the acceleration unit 428.
- the data is already stored in the database buffer 551 by the execution procedure. If a database page is not required to execute x, the procedure of S1503 need not be performed.
- the query execution unit 424 executes x.
- the database page read in S1503 may be used.
- the query execution unit 424 further refers to the query execution plan information 423 based on the execution result of x performed in S1504, and determines whether there is a next database operation to be executed. If the determination result is affirmative, S1506 is executed, and if negative, S1507 is executed.
- step S1506 the query execution unit 424 further saves the database operation set to x in the in-stack database operation table 1002 of the query execution unit state management information 425, and newly sets the next database operation to be executed to x. Then, S1502 is executed.
- the query execution unit 424 determines whether or not the database page 451 is a database page that is necessary for executing x and has not been read. If the determination result is affirmative, S1503 is executed, and if negative, S1508 is executed.
- step S1508 the query execution unit 424 deletes x from the database operation table being executed in the query execution unit state management information 425.
- the query execution unit 424 refers to the database operation table 1002 in the stack of the query execution unit state management information 425 and determines whether or not a database operation to be executed is loaded. If the determination result is affirmative, S1510 is executed. If the determination result is negative, the first query execution procedure in the query execution unit 424 ends.
- the query execution unit 424 retrieves the highest-level (largest stack depth value) database operation from the in-stack database operation table 1002 of the query execution unit state management information 425, sets it to x, and executes S1502. .
- the query execution by the query execution unit 424 from S1501 to S1510 will be described with reference to FIG. (01)
- the query execution unit 424 obtains a reference to the record
- of the first Part table that satisfies the index condition c1 130 by executing the database operation OP1. (03)
- the query execution unit 424 starts executing the database operation OP2 for acquiring a record from the Part table based on the reference to the record
- the query execution unit 424 acquires the record
- from the Part table by executing the database operation OP2. (05) The query execution unit 424 starts executing the database operation OP3 for searching the Lineitem index based on the index condition c3 id131 based on the record acquired from the Part table. (06) The query execution unit 424 obtains a reference to the record
- of the first Lineitem table that satisfies the index condition c3 id131 by executing the database operation OP3.
- the query execution unit 424 starts executing the database operation OP4 for obtaining a record from the Lineitem table based on the reference to the record
- the query execution unit 424 obtains a reference to the record
- of the second Lineitem table that satisfies the index condition c3 id131 by executing the database operation OP3. (12) The query execution unit 424 starts executing the database operation OP4 for acquiring a record from the Lineitem table based on the reference to the record
- the query execution unit 424 outputs the result record
- the procedures (01) and (02) are executed in the execution instance (# 1) shown in FIG. 7, the procedures (03) and (04) are executed in the execution instance (# 2), and the procedures (05) and (06) are In the execution instance (# 3), the steps (07) and (08) are the execution instance (# 4), the steps (09) and (10) are the execution instance (# 5), and the procedure (11) is the execution instance.
- the steps (12) and (13) correspond to the execution instance (# 7), and the steps (14) and (15) correspond to the execution instance (# 8).
- FIG. 16 shows a second query execution procedure according to the first embodiment.
- the second query execution procedure corresponds to the procedure of S1312 in FIG.
- the acceleration unit 428 refers to the query execution plan information 423, generates an execution instance for executing the first database operation, and stores it in the in-queue execution instance table 1102 (queue) of the acceleration unit state management information 429. To do.
- the acceleration unit 428 may generate an execution instance for executing the database operation indicated by the start database operation ID 811 with reference to the query execution plan information 423.
- the acceleration unit 428 determines whether or not the in-queue execution instance table 1102 is empty. If the result of this determination is affirmative, the acceleration unit 428 terminates the second query execution procedure, and if negative, the acceleration unit 428 executes S1603.
- the acceleration unit 428 takes out one execution instance from the execution instance table 1102 in the queue.
- the accelerating unit 428 executes a procedure for calculating the cooperation of the execution instances described later, and calculates the cooperation of the execution instances extracted in S1603.
- the cooperation means that the acceleration unit 428 executes the execution instance, thereby shortening the time required for executing the query performed by the first query execution procedure executed by the query execution unit 424 in parallel. May be possible.
- the acceleration unit 428 determines whether the cooperation calculated in S1604 is Case A. If the result of this determination is affirmative, the acceleration unit 428 executes S1606, and if negative, the acceleration unit 428 executes 1607.
- the acceleration unit 428 does not execute the execution instance extracted in S1603, discards the execution instance, and executes S1602.
- the acceleration unit 428 determines whether or not the cooperation calculated in S1604 is Case C. If the result of this determination is affirmative, the acceleration unit 428 executes S1608, and if negative, the acceleration unit 428 executes 1609.
- the acceleration unit 428 does not execute the execution instance extracted in S1603, returns the execution instance to the execution instance table 1102 in the queue, and executes S1602.
- the acceleration unit 428 In S1609, the acceleration unit 428 generates a task for executing the execution instance extracted in S1603. The task is generated and executed by the processor 414. Thus, the acceleration unit 428 executes S1611 in each task.
- the acceleration unit 428 executes a procedure for executing an execution instance described later in the task generated in S0098. As a result, the database operation corresponding to the execution instance is executed.
- the processor 414 can execute a plurality of tasks in parallel.
- an execution instance is executed as shown in S1611, thereby executing a database operation.
- a database page read from the database when executing a database operation may be stored in the database buffer 551.
- the query execution unit 424 executes the first query execution procedure, there is a possibility that a database page may be read from the database buffer 551 without newly reading a database page from the database. Therefore, the time required for query execution by the query execution unit 424 may be shortened.
- FIG. 17 shows a procedure for calculating the cooperation of execution instances according to the first embodiment.
- the procedure for calculating the cooperation of execution instances corresponds to the procedure of S1604 in FIG.
- the acceleration unit 428 identifies the prediction order number in the prediction execution instance tree corresponding to the execution of the database operation currently being executed by the query execution unit 424, and sets the prediction order number to X (local variable on the memory 416). ). Specifically, referring to the query execution unit state management information 425, the query execution unit 424 obtains information related to the execution of the database operation currently being executed and the execution of the stacked database operation, and further the cooperative control information 431. , The query execution unit 424 identifies a predicted execution instance on the predicted execution instance tree that appears to approximate the execution of the currently executing database operation. For example, referring to the example of FIG.
- the database operation OP2 is first generated as the second child database operation by the database operation OP1, and the first of the database operation OP2 is further generated. It can be seen that the database operation OP3 is generated.
- a prediction execution instance ## 1 is generated, and ## 8 is generated as the second child prediction execution instance.
- ## 9 is generated as the prediction execution instance of the first child. That is, it can be seen that the database operation currently being executed by the query execution unit 424 in FIG. 10 corresponds to the prediction execution instance ## 9 on the prediction execution instance tree in FIG. I understand.
- the prediction order of the predicted execution instances in the vicinity thereof may be used as the predicted order number of the database operation.
- the accelerating unit 428 identifies the prediction order number in the prediction execution instance tree corresponding to the execution instance that the acceleration unit 428 intends to execute from now on, and sets the prediction order number to Y (local variable on the memory 416). ).
- the acceleration unit state management information 429 is referred to, the acceleration unit 428 acquires information on the execution instance to be executed and the execution instance that has been executed, and further refers to the cooperative control information 431.
- the acceleration unit 428 identifies a predicted execution instance on the predicted execution instance tree that seems to be close to the execution instance to be executed. For example, in the example of FIG.
- the execution instance # 1 is first generated as the second child execution instance by the execution instance # 1, and the execution instance # is further generated.
- the execution instance # 9 is generated as the first execution instance of No. 8, and is further generated as the first execution instance of the execution instance # 9.
- a predicted execution instance ## 1 is generated, and ## 8 is generated as a second child predicted execution instance.
- ## 9 is generated as the prediction execution instance of the first child, and ## 10 is generated as the prediction execution instance of the first child. That is, it can be seen that the execution instance # 10 that the acceleration unit 428 in FIG.
- 11 is about to execute corresponds to the prediction execution instance ## 10 on the prediction execution instance tree in FIG. I understand that. If there is no predicted execution instance corresponding to the currently executing execution instance on the predicted execution instance tree, the prediction order number of the predicted execution instance in the vicinity thereof (for example, the closest parent) is used. The prediction order number of the execution instance may be used.
- the acceleration unit 428 determines the preceding relationship between X and Y.
- the database page necessary for executing the database operation has already been read from the database 451 by the second query execution procedure by the acceleration unit 428 and stored in the database buffer 551.
- the query execution unit 424 only needs to read the database page from the database buffer 551 without newly reading the database page from the database 451, and this is expected to reduce the time required for executing the query.
- the second operation by the acceleration unit 428 is performed. It must be done in the query execution procedure.
- the second query execution procedure by the acceleration unit 428 precedes the first query execution procedure by the query execution unit 424 in order to reduce the time required for executing the query.
- the second query execution procedure by the acceleration unit 428 after execution of the database operation corresponding to the same execution instance is performed in the second query execution procedure by the accelerating unit 428, a considerable time has passed, and the first query by the query executing unit 424 has passed.
- the database page required for execution of the database operation is temporarily stored in the database buffer 551 in the second query execution procedure by the acceleration unit 428, but the first query execution by the query execution unit 424 is performed.
- the procedure When the procedure requires the database page, it has already been evicted from the database buffer 551 by the database buffer management unit 432, and this may not have the effect of reducing the time required to execute the query. That is, it is necessary for query execution that the degree that the second query execution procedure by the acceleration unit 428 precedes the first query execution procedure by the query execution unit 424 is within a certain range. It is desirable to shorten the time.
- the execution of the database operation in the second query execution procedure by the acceleration unit 428 is executed by the query execution unit 424.
- the execution of the database operation in the procedure precedes the execution of the database operation.
- the acceleration unit 428 determines whether X precedes Y, and executes S1704 if the result is affirmative, and executes S1705 if the result is negative. To do.
- the acceleration unit 428 determines that the cooperation is case A, and ends the procedure for calculating the cooperation of the execution instance. That is, the case A represents that the database operation being executed by the query execution unit 424 precedes the execution instance that the acceleration unit 428 intends to execute on the predicted execution instance tree. In this case, it is not possible to expect the effect of reducing the time required for query execution by the query execution unit 424 by executing the execution instance that the acceleration unit 428 intends to execute.
- the acceleration unit 428 determines whether the degree that Y precedes X is equal to or greater than a predetermined value. If the result is affirmative, execute S1706. If the result is negative, Executes S1707.
- the accelerating unit 428 determines that the cooperation is case C, and ends the procedure for calculating the cooperation of the execution instance. That is, the case C represents that the execution instance that the acceleration unit 428 intends to execute is ahead of a predetermined value on the predicted execution instance tree with respect to the database operation being executed by the query execution unit 424. . In this case, it is not possible to expect the effect of reducing the time required for query execution by the query execution unit 424 by executing the execution instance that the acceleration unit 428 intends to execute.
- the acceleration unit 428 determines that the cooperation is case B, and ends the procedure for calculating the cooperation of the execution instance. That is, the case B means that the execution instance that the acceleration unit 428 is trying to execute precedes the database operation being executed by the query execution unit 424 by less than a predetermined value on the predicted execution instance tree. To express. In this case, there is an effect that the time required for the query execution by the query execution unit 424 can be shortened by executing the execution instance that the acceleration unit 428 is trying to execute.
- the boundary between cases relating to the determination of the preceding degree of X and Y may be determined according to any case where the boundary touches.
- the cooperation of execution instances may be determined as case B when a predetermined condition is satisfied.
- the predetermined condition may be whether the execution instance is within the execution range of the first predetermined number of execution instances after the execution of the query is started. Alternatively, the predetermined condition may be whether the execution instance is within the range of the child execution instance within the predetermined generation from the start prediction execution instance on the prediction execution tree. Alternatively, the predetermined condition may be whether the database operation related to the execution instance is within the range of the child database operation within the predetermined generation from the start database operation on the query execution plan prediction. Further, the predetermined condition may be determined based on a value such as a setting parameter of the database management system 412. For example, it may be determined whether a predetermined condition is satisfied based on setting information stored in a storage (for example, the storage device 415 or the external storage device 402) that can be referred to from the database management system 412.
- the acceleration unit 427 is further replaced with or in addition to this.
- the amount of database pages required to perform database operations in the execution instance may be taken into account.
- the acceleration unit 427 changes from a predicted execution instance corresponding to the database operation being executed by the query execution unit 424 to a predicted execution instance corresponding to the execution instance that the acceleration unit 428 is about to execute from now on.
- the amount of database pages required to execute all predicted execution instances is predicted, it is determined whether the amount is equal to or greater than a predetermined value, and if the result of the determination is affirmative, Case C If it is negative, it may be determined as Case B.
- the amount of database pages is not only the amount of database pages required for executing database operations, but also the capacity required to store the database pages on the database buffer 551 (for example, the number of database pages). Also good.
- the predetermined value may be a capacity value available at that time in the database buffer 551.
- the prediction order number is calculated.
- the acceleration unit 428 performs the acceleration unit in the procedure illustrated in FIG.
- a prediction order number may be calculated in advance and stored in the query execution unit state management information 425 and the acceleration unit state management information 429, respectively.
- the query execution unit state management information 425 and the acceleration unit state management information 429 may each have a prediction order number as an attribute.
- the query execution unit state management information 425 shown in FIG. 10 does not have a prediction order number
- the acceleration unit state management information 429 shown in FIG. 11 has a prediction order number 1115. Yes.
- a predicted execution instance in the predicted execution instance tree corresponding to the execution instance is identified, and the cooperation is calculated using the prediction order number of the predicted execution instance.
- the cooperation may be calculated after correcting the prediction order number based on the difference between the execution instance tree and the prediction execution instance tree. For example, in the example of FIG. 7, it is assumed that the execution instances # 4 and # 6 that are children of the execution instance # 3 are not generated, and the predicted execution instance tree is generated as in the example of FIG. In this case, the execution instances corresponding to the execution instances # 4 to # 7 in FIG. 7 are not generated, and the execution instance # 8 corresponding to the execution instance # 8 in FIG. 4 is generated.
- the prediction execution instance corresponding to the execution instance is # 8
- the prediction order number is calculated as 8
- a difference occurs between the order number and the predicted order number due to the difference between the execution instance tree and the predicted execution instance tree.
- the difference is calculated by checking the acceleration unit state management information 429 and the cooperative control information 431, and the prediction order number is corrected based on the difference. Calculation of cooperation may be performed.
- FIG. 18 shows a procedure for executing an execution instance according to the first embodiment.
- the procedure for executing the execution instance corresponds to the procedure of S1611 in FIG.
- the acceleration unit 428 stores the execution instance in the execution instance table 1101 during execution of the acceleration unit state management information 429.
- the accelerating unit 428 reads a database page necessary for executing the database operation in the execution instance from the database.
- the acceleration unit 428 issues a request for reading the database page to the database buffer management unit 432. If the database page is already stored in the database buffer 551, the database buffer management unit 432 returns the stored database page to the query execution unit 424. If the database page is not stored, the database buffer management unit 432 externally stores the database 451. By issuing a read request to the storage apparatus 402, the database page is read from the database 451 and returned to the query execution unit 424.
- the database page already stored in the database buffer 551 by the second query execution procedure executed by the acceleration unit 428 is used as the first query execution procedure executed by the query execution unit 424. May be used to perform database operations. Note that if a database page is not required to execute the database operation in the execution instance, the procedure of S1802 need not be performed.
- the acceleration unit 428 executes the database operation in the execution instance.
- the database page acquired in S1802 may be used.
- step S1804 the acceleration unit 428 further determines whether there is a next database operation to be executed by referring to the query execution plan information 423 based on the execution result of the database operation in the execution instance performed in step S1803. . If the determination result is affirmative, S1805 is executed, and if negative, S1806 is executed.
- the accelerating unit 428 In S1805, the accelerating unit 428 generates an execution instance for executing the next database operation to be executed based on the execution result of the database operation in the execution instance performed in S1803, and stores the queue of the acceleration unit state management information 429. It stores in the middle execution instance table 1102 and executes S1806. For example, when it is necessary to execute the database operation for each of different data based on the execution result of the database operation, the accelerating unit 428 may generate an execution instance for each of the different data. At this time, when generating and storing a plurality of execution instances, the accelerating unit 428 may generate a plurality of execution instances at once and store them in the queued execution instance table 1102 afterwards. Each time an instance is generated, it may be stored in the execution instance table 1102 in the queue.
- the accelerating unit 428 determines whether or not the database 451 includes database pages that are necessary for executing the database operation in the execution instance and are not read. If the determination result is affirmative, S1802 is executed, and if negative, S1807 is executed.
- the acceleration unit 428 deletes the execution instance from the execution instance table 1101 being executed in the acceleration unit state management information 429 and stores it in the executed execution instance table 1103 of the acceleration unit state management information 429.
- the procedure for executing the execution instance is completed, the task execution is also finished as shown in the lower left diagram in FIG.
- the procedure from S1602 to S1609 in FIG. 16 may be recursively performed.
- the accelerating unit 428 may directly execute the execution instance by a procedure corresponding to S1611 without generating a task in S1609.
- the execution instance executed by the accelerating unit 427 is stored in the in-queue execution instance table 1102 if it is waiting, and is stored in the executing instance instance table 1101 if it is being executed.
- description of storage of execution instances executed by the acceleration unit 427 in the tables 1101 to 1103 is omitted.
- FIG. 19 is a time chart for explaining the effects of the first embodiment.
- FIG. 19 shows a time chart when executing a part of the execution instance tree (execution instances (# 1) to (# 16)) shown in FIG.
- execution instances (# 1) to (# 16) shown in FIG.
- squares with rounded corners indicate execution instances, and numbers above them indicate execution instance IDs.
- the pentagon in the execution instance indicates the time required for reading when reading the database page required for executing the database operation corresponding to the execution instance, and the> symbol indicates the time required for the calculation in the execution instance. ing. It is assumed that the maximum number of database pages (data) that can be stored in the database buffer 551 by the acceleration unit 428 is 10.
- the execution instances in which the query execution unit 424 is executing the range of execution instances that can be executed by the acceleration unit 428 so that the number of database pages stored in the database buffer 551 by the acceleration unit 428 is 10 or less. Thereafter, 10 execution instances are executed (including this execution instance).
- the query execution unit 424 executes a query alone, execution instances are executed in a predetermined order as shown in the upper diagram of FIG. Then, in each execution instance, if there is a database page necessary for execution of the database operation corresponding to the execution instance, the query execution unit 424 issues a read request for the database page to the database buffer management unit 432.
- the database buffer management unit 432 reads the database page requested to be read from the database 451 and stores it in the database buffer 551, and returns the database page to the query execution unit 424.
- the query execution unit 424 receives the database page requested to be read from the database buffer management unit 432 and executes an operation using the database page. Therefore, in an execution instance that reads a new database page, it takes a relatively long time to generate a process for reading a new database page from the database 451.
- FIG. As shown in the first embodiment, when the first query execution procedure by the query execution unit 424 and the second query execution procedure by the acceleration unit 428 are executed in parallel, FIG. As shown, it can be expected that the time required to execute one query can be shortened as compared with the case where the query execution unit 424 executes query processing alone. Specific examples will be described below.
- an execution instance (# 1) is executed by each of the query execution unit 424 and the acceleration unit 428.
- the query execution unit 424 and the acceleration unit 428 issue to the database buffer management unit 432 a request for reading a database page used in the execution instance (# 1). If the database page requested to be read does not exist in the database buffer 551, the database buffer management unit 432 reads the database page from the database, stores the read database page in the database buffer 551, and issues the read request to the database page. Return to original.
- the acceleration unit 428 stores the execution instance (# 1) in the executing instance table 1101 during execution by executing the execution instance (# 1), and executes an execution instance (# that is a child execution instance of the execution instance (# 1)) 2), (# 8), (# 16), (# 22),... Are generated and stored in the queue (in-queue execution instance table 1102).
- the query execution unit 424 executes the execution instance (# 2).
- the query execution unit 424 issues a database page read request necessary for executing the database operation corresponding to the execution instance (# 2) to the database buffer management unit 432 before or after the acceleration unit 428.
- the acceleration unit 428 determines that 10 execution instances after the execution instance (# 2) being executed by the query execution unit 424, that is, the execution instances (# 2) to (# 11) have an acceleration effect. Therefore, the processes of the execution instances (# 2) and (# 8) stored in the queue are executed in parallel. Execution of execution instances (# 16), (# 22),... Is suspended.
- the acceleration unit 428 executes the execution instance (# 2)
- the acceleration unit 428 generates an execution instance (# 3) that is a child execution instance, stores the execution instance (# 3), and executes the execution instance (# 8).
- an execution instance (# 9) which is a child execution instance is generated and stored in the queue.
- the query execution unit 424 executes the execution instance (# 3.
- the query execution unit 424 executes the database page necessary for executing the database operation corresponding to the execution instance (# 3).
- the read request is issued before or after the acceleration unit 428 to the database buffer management unit 432.
- the acceleration unit 428 includes 10 execution instances (# 3) and subsequent executions executed by the query execution unit 424. Since the execution instances, that is, the execution instances (# 3) to (# 12) are determined to have the acceleration effect, the execution instances (# 3) and (# 9) stored in the queue are executed in parallel.
- the unit 428 executes the execution instance (# 3), thereby executing the execution instance (# ), (# 6) are generated, stored in the queue, and the execution instance (# 9) is executed, thereby generating execution instances (# 10), (# 12), (# 14) which are child execution instances And store it in the queue.
- the query execution unit 424 executes the execution instance (# 4).
- the query execution unit 424 issues a data read request required for executing the database operation corresponding to the execution instance (# 4) to the database buffer management unit 432 before or after the acceleration unit 428.
- the acceleration unit 428 determines that 10 execution instances after the execution instance (# 4) being executed by the query execution unit 424, that is, the execution instances (# 4) to (# 13) have an acceleration effect. Therefore, the processes of the execution instances (# 4), (# 6), (# 10), and (# 12) stored in the queue are executed in parallel.
- the acceleration unit 428 executes the execution instances (# 4), (# 6), (# 10), and (# 12), thereby executing the execution instances (# 5), (# 7), which are child execution instances. (# 11) and (# 13) are generated and stored in the queue.
- the query execution unit 424 executes the execution instance (# 5). Since the query execution unit 424 does not require access to the database 451 for execution of the execution instance (# 5), the process ends early.
- the acceleration unit 428 determines that 10 execution instances after the execution instance (# 5) being executed by the query execution unit 424, that is, the execution instances (# 5) to (# 14) have an acceleration effect. Therefore, the processes of execution instances (# 5), (# 7), (# 11), (# 13), and (# 14) stored in the queue are executed in parallel. Since execution of the execution instances (# 5), (# 7), (# 11), and (# 13) does not require access to the database 451, the processing ends early. Further, the acceleration unit 428 generates an execution instance (# 15) that is a child execution instance by executing the execution instance (# 14), and stores it in the queue.
- the query execution unit 424 executes the execution instance (# 6).
- the query execution unit 424 issues a database page read request necessary for execution of the database operation corresponding to the execution instance (# 6) to the database buffer management unit 432, but the read request for the database page has already been accelerated.
- the database page is stored in the database buffer 551 because it is issued by the section 428.
- the database buffer management unit 432 provides the database page to the query execution unit 424 without issuing a request to read the database page to the database 451, and the query execution unit 424 uses the database page.
- the database operation corresponding to the execution instance (# 6 can be executed. Therefore, the query execution unit 424 can end the execution instance (# 6) early.
- the acceleration unit 428 executes the execution instance (# 16) after the execution instance (# 6) ends in the query execution unit 424.
- the acceleration unit 428 executes the execution instance (# 15) after the execution instance (# 14) ends.
- the query execution unit 424 After the execution instance (# 6) is terminated, the query execution unit 424 similarly executes the execution instances (# 7) to (# 16) sequentially after the immediately preceding execution instance is terminated. At this time, since the database pages used in the execution instances (# 7) to (# 16) to be executed are already stored in the database buffer 551 by the read request from the acceleration unit 428, the database buffer management unit 432 Each database page is provided to the query execution unit 424 without issuing a read request for each database page to the database 451.
- the query execution unit 424 can receive each database page from the database buffer management unit 432 and execute each of the execution instances (# 7) to (# 16) using each database page. Therefore, the query execution unit 424 can quickly end these execution instances.
- the database page that the query execution unit 424 requested to read to the database buffer management unit 432 has already been requested to be read from the acceleration unit 428 by the database buffer management unit 432 and read from the database 451. May already be stored. For this reason, compared with the case where the query execution part 424 performs a query process independently, the time required for execution of one query can be shortened.
- Example 2 will be described. At that time, differences from the first embodiment will be mainly described, and description of common points with the first embodiment will be omitted or simplified.
- the database buffer management unit 432 determines a database page to be evicted from the database pages (data) in the database buffer 551 based on the database buffer management information 550. This determination may be performed at an arbitrary timing, for example, when the database buffer management unit 432 detects that the free space of the database buffer 551 is less than a predetermined capacity.
- FIG. 20 shows a configuration of the database buffer management information 550 according to the second embodiment.
- the database buffer management information 550 has a database buffer management table 2001.
- the database buffer management table 2001 has a record for each database page stored in the database buffer 551.
- the attributes include a database page ID 2011, an access frequency 2012, an acceleration unit storage flag 2013, and a query execution unit provision flag 2014. .
- Database page ID 2011 is the ID of the database page.
- the access frequency 2012 represents the access frequency (reading frequency) to the database page.
- the acceleration unit storage flag 2013 indicates whether the database page is a database page stored by the acceleration unit 428.
- the query execution unit provision flag 2014 indicates whether or not the database page is provided from the database buffer 551 by a read request from the query execution unit 424.
- the database buffer management unit 432 Based on the database buffer management table 2001 in the database buffer management information 550, the database buffer management unit 432 has already stored the database page requested to be read from the query execution unit 424 in the database buffer 551 by the read request from the acceleration unit 428. You can know if you are.
- the database page is a database page in which the acceleration unit storage flag 2013 is “1” and the query execution unit provision flag 2014 is “0”.
- the database buffer management unit 432 updates the query execution unit provision flag 2014 corresponding to the database page from “0” to “1”.
- the database buffer management unit 432 can determine a database page to be evicted from the database pages in the database buffer 551 based on the database buffer management table 2001 in the database buffer management information 550.
- the database buffer management unit 432 may determine a database page whose query execution unit storage flag 2014 is “1”, that is, a database page that has already been provided to the query execution unit 424, as an eviction target. it can. In other words, the database buffer management unit 432 does not set a database page in which the acceleration unit storage flag 2013 is “1” but the query execution unit storage flag 2014 is “0” to be purged.
- the database buffer management unit 432 may determine an eviction target among a plurality of database pages based on a plurality of access frequencies 2022 respectively corresponding to a plurality of database pages in the database buffer 551. it can. In other words, the database buffer management unit 432 can narrow down the database pages that are subject to eviction because the query execution unit provision flag 2014 is “1” based on the access frequency 2022. For example, the database buffer management unit 432 may set only database pages with a relatively low access frequency 2022 to be purged among database pages with the query execution unit provision flag 2014 being “1”. As a result, since the database page having a relatively high access frequency 2022 remains in the database buffer 551, the access frequency to the database 451 is expected to be reduced. Therefore, the time required for executing one query is expected to be further shortened. Is done.
- Example 3 will be described. At that time, the differences from the first and second embodiments will be mainly described, and the description of the common points with the first and second embodiments will be omitted or simplified.
- FIG. 21 shows a configuration of statistical information 427 according to the third embodiment.
- the statistical information 427 may include a query specific statistical information table 2101 in addition to the general statistical information table 901.
- the query-specific statistical information table 2101 includes information on the table 462 or the index 461 included in the database in the execution of the specific query for the database. For example, the value of each column regarding the record that satisfies the selection condition in the execution of the specific query Includes maximum value, average value, minimum value, value distribution for each column, etc.
- the query-specific statistical information table 2101 has a record for each statistical item, and has, for example, a table 2111, a column 2112, and a statistical value 2113 as attributes.
- a table 2111 represents a table to which statistical items are related.
- a column 2112 represents a column to which the statistical item is related. However, if it is not related to a specific column, it will be “-”.
- the statistical value 2113 represents a specific value of the statistical type.
- the cooperative control information generation unit 430 may further generate the cooperative control information 431 with reference to the query specific statistical information table 2101 included in the statistical information 427.
- the database operation OP2 acquires a record based on the record reference.
- the execution instance corresponding to the database operation OP1 is 1. This is the execution instance (predicted execution instance) to be executed first. Seven execution instances (execution of database operation OP2) are generated from this execution instance. That is, the execution instance corresponding to the database operation OP2 is 7. One execution instance (execution of database operation OP3) is generated from each execution instance. That is, the execution instance corresponding to the database operation OP3 is 7. Three execution instances (execution of database operation OP4) are generated from each execution instance. That is, there are 21 execution instances corresponding to the database operation OP4. One execution instance (execution of database operation OP5) is generated from each execution instance. That is, 21 execution instances corresponding to the database operation OP5 are generated.
- Such a prediction execution instance tree is stored in the memory 416 in the structure shown in FIG. On the prediction execution instance tree, starting from the start prediction execution instance and tracing the prediction execution instance based on the query execution procedure in the query execution unit 424, the prediction order number in each prediction execution instance is calculated. be able to.
- the statistical information 427 includes the statistical information table 2101 unique to the query, and the prediction order number in the prediction execution instance is calculated based on the table 2101.
- Example 4 will be described. At that time, differences from the first to third embodiments will be mainly described, and description of common points with the first to third embodiments will be omitted or simplified.
- FIG. 22 shows a configuration of a computer system according to the fourth embodiment.
- the application server 3102 is connected to the database server 401 via the communication network 3112 so as to be communicable, and the external storage apparatus 402 is connected via the communication network 403 so as to be communicable.
- a client terminal 3101 is communicably connected to the application server 3102 via a communication network 3111.
- an acceleration server 404 is connected to the database server 401 via a communication network 405 so as to be communicable.
- the database server 401 executes a database management system that manages a database.
- the database management system of the database server 401 may be, for example, one that excludes the acceleration unit 428, the acceleration unit validity determination unit 426, and the cooperative control information generation unit 430 in the database management system 412 of the first embodiment.
- the acceleration server 404 is a server that includes, for example, the acceleration unit 428, the acceleration unit validity determination unit 426, and the cooperative control information generation unit 430 according to the first embodiment.
- the external storage device 402 stores a database 415.
- the application server 3102 executes an application that issues a query to the database management system executed by the database server 401.
- the client terminal 3101 issues a request to the application executed on the application server 3102.
- a plurality of client terminals 3101 or application servers 3102 may exist.
- Application server management terminal 3103, database server 401 management terminal 3104, and storage management terminal 3105 are connected to application server 3102, database server 401, and external storage apparatus 402 via communication networks 3114, 3115, and 3116, respectively.
- the application server management terminal 3103 is a terminal that manages the application server 3102
- the database server 401 management terminal 3104 is a terminal that manages the database server 401
- the storage management terminal 3105 is a terminal that manages the external storage apparatus 402. is there.
- At least two of the management terminals 3103 to 3105 may be common (integrated).
- At least two of the communication networks 3111 to 3116 may be common (integrated).
- the application server 3102 receives a request (hereinafter referred to as client request) from the client terminal 3101.
- the application server 3102 generates a query according to the client request received in S2201, and issues the generated query to the database server 401.
- the database server 401 receives a query from the application server 3102 and creates a query execution plan. Based on the query execution plan, the query execution unit 424 of the database server 401 and the acceleration unit 428 of the acceleration server 404 perform the above-described processing.
- the database server 401 transmits the query execution result to the application server 3102.
- the application server 3102 receives the execution result of the query, and transmits to the client terminal 3101 an answer to the client request received in S2201, according to the execution result.
- the time required to execute one query in the database server 401 can be shortened by having the acceleration server 404 separately from the database server 401 having the existing database management system.
- the present invention can be applied to data input / output other than input / output (for example, data reading) to / from a database by a database management system, for example, a file system performing input / output to / from a file.
- a computer system such as a file system, for example, executes a processing request by executing a processing request receiving unit that receives a processing request from a processing request issuer, and an operation based on the processing request.
- a first processing request execution unit that returns the execution result of the processing request to the processing request issuer, a second processing request execution unit that executes a processing request by executing an operation based on the processing request, and first and second When a data read request is received from one of the processing request execution units, if the requested data is not stored in the buffer, the requested data is read from the storage and stored in the buffer. Of the first and second processing request execution units, the received data is provided to the processing request execution unit that issued the read request. It may have a ⁇ management unit.
- the buffer management unit The data requested to be read is read from the buffer and provided to the first processing request execution unit.
- the computer system expected to be applied to fields other than the database can be realized by replacing the database operation with the operation and the query with the processing request in the above description.
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Operations Research (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
Description
・データベースオペレーションOP1に対応する実行インスタンスは1である。これが、最初に実行する実行インスタンス(予測実行インスタンス)とされる。
・この実行インスタンスから20の実行インスタンス(データベースオペレーションOP2を実行)が生成される。即ち、データベースオペレーションOP2に対応する実行インスタンスは20である。
・この各々の実行インスタンスから1の実行インスタンス(データベースオペレーションOP3を実行)が生成される。即ち、データベースオペレーションOP3に対応する実行インスタンスは20である。
・この各々の実行インスタンスから6の実行インスタンス(データベースオペレーションOP4を実行)が生成される。即ち、データベースオペレーションOP4に対応する実行インスタンスは120である。
・この各々の実行インスタンスから1の実行インスタンス(データベースオペレーションOP5を実行)が生成される。即ち、データベースオペレーションOP5に対応する実行インスタンスは120が生成される。
(01)クエリ実行部424は、索引条件c1=130に基づきPart索引を検索するためのデータベースオペレーションOP1の実行を開始する。
(02)クエリ実行部424は、データベースオペレーションOP1の実行によって、索引条件c1=130を満たす最初のPart表のレコード|130|id131|への参照を得る。
(03)クエリ実行部424は、Part表のレコード|130|id131|への参照に基づきPart表からレコードを取得するためのデータベースオペレーションOP2の実行を開始する。
(04)クエリ実行部424は、データベースオペレーションOP2の実行によって、Part表からレコード|130|id131|を取得する。
(05)クエリ実行部424は、Part表から取得したレコードに基づき索引条件c3=id131に基づきLineitem索引を検索するためのデータベースオペレーションOP3の実行を開始する。
(06)クエリ実行部424は、データベースオペレーションOP3の実行によって、索引条件c3=id131を満たす最初のLineitem表のレコード|id131|D|への参照を得る。
(07)クエリ実行部424は、Lineitem表のレコード|id131|D|への参照に基づきLineitem表からレコードを取得するためのデータベースオペレーションOP4の実行を開始する。
(08)クエリ実行部424は、データベースオペレーションOP4の実行によって、Lineitem表からレコード|id131|D|を取得する。
(09)クエリ実行部424は、結果レコードを生成するためのデータベースオペレーションOP5の実行を開始する。
(10)クエリ実行部424は、データベースオペレーションOP5の実行によって、結果レコード|130|D|を出力する。
(11)クエリ実行部424は、データベースオペレーションOP3の実行によって、索引条件c3=id131を満たす2番目のLineitem表のレコード|id131|E|への参照を得る。
(12)クエリ実行部424は、Lineitem表のレコード|id131|E|への参照に基づきLineitem表からレコードを取得するためのデータベースオペレーションOP4の実行を開始する。
(13)クエリ実行部424は、データベースオペレーションOP4の実行によって、Lineitem表からレコード|id131|E|を取得する。
(14)クエリ実行部424は、結果レコードを生成するためのデータベースオペレーションOP5の実行を開始する。
(15)クエリ実行部424は、データベースオペレーションOP5の実行によって、結果レコード|130|D|を出力する。
クエリ実行部424は、この後、同様にクエリの実行を進める。上記において、(01)(02)の手順は図7に示す実行インスタンス(#1)に、(03)(04)の手順は実行インスタンス(#2)に、(05)(06)の手順は実行インスタンス(#3)に、(07)(08)の手順は実行インスタンス(#4)に、(09)(10)の手順は実行インスタンス(#5)に、(11)の手順は実行インスタンス(#6)に、(12)(13)の手順は実行インスタンス(#7)に、(14)(15)の手順は実行インスタンス(#8)に対応している。
・データベースオペレーションOP1に対応する実行インスタンスは1である。これを最初に実行する実行インスタンス(予測実行インスタンス)とする。
・この実行インスタンスから7の実行インスタンス(データベースオペレーションOP2を実行)が生成される。即ち、データベースオペレーションOP2に対応する実行インスタンスは7である。
・この各々の実行インスタンスから1の実行インスタンス(データベースオペレーションOP3を実行)が生成される。即ち、データベースオペレーションOP3に対応する実行インスタンスは7である。
・この各々の実行インスタンスから3の実行インスタンス(データベースオペレーションOP4を実行)が生成される。即ち、データベースオペレーションOP4に対応する実行インスタンスは21である。
・この各々の実行インスタンスから1の実行インスタンス(データベースオペレーションOP5を実行)が生成される。即ち、データベースオペレーションOP5に対応する実行インスタンスは21が生成される。
(S2201)アプリケーションサーバ3102が、クライアント端末3101から要求(以下、クライアント要求)を受信する。
(S2202)アプリケーションサーバ3102が、S2201で受信したクライアント要求に従いクエリを生成し、生成したクエリをデータベースサーバ401に発行する。
(S2203)データベースサーバ401が、アプリケーションサーバ3102からのクエリを受け付け、クエリ実行プランを作成する。そのクエリ実行プランを基に、データベースサーバ401のクエリ実行部424等や、加速サーバ404の加速部428等が、前述した処理を行う。この処理において、データベースサーバ401が必要とするデータベースページが加速サーバ404の読込み要求によりデータベースバッファ551に既に格納されていることがあるので、データベースサーバ401が外部ストレージ装置402にアクセスする頻度が減り、故に、1つのクエリの実行に要する時間を短縮することが期待される。
(S2204)データベースサーバ401が、クエリの実行結果をアプリケーションサーバ3102に送信する。
(S2205)アプリケーションサーバ3102が、クエリの実行結果を受信し、その実行結果に従う、S2201で受信したクライアント要求に対する回答を、クライアント端末3101に送信する。
Claims (19)
- データベースを管理するデータベース管理システムであって、
前記データベースへのクエリをクエリ発行元から受け付けるクエリ受付部と、
前記受け付けたクエリに基づいて前記受け付けたクエリを実行するために必要な1以上のデータベースオペレーションと前記1以上のデータベースオペレーションの実行手順とを表す情報を含んだクエリ実行プランを生成するクエリ実行プラン生成部と、
前記生成したクエリ実行プランに基づいてデータベースオペレーションを実行することにより前記クエリを実行し前記クエリの実行結果を前記クエリ発行元に返す第1のクエリ実行部と、
前記生成したクエリ実行プランに基づいてデータベースオペレーションを実行することにより前記クエリを実行する第2のクエリ実行部と、
前記第1及び第2のクエリ実行部のいずれかからデータの読込み要求を受け付けた際、読込み要求されたデータがバッファに格納されていなければ、前記読込み要求されたデータを前記データベースから読み込んで前記バッファに格納し、前記読込み要求されたデータを、前記第1及び第2のクエリ実行部のうち、前記読込み要求の発行元のクエリ実行部に提供するバッファ管理部と
を有し、
前記読込み要求の発行元が前記第1のクエリ実行部であり、前記読込み要求されたデータが前記第2のクエリ実行部から既に読込み要求されたことにより前記バッファに格納されていれば、前記バッファ管理部は、前記読込み要求されたデータを前記バッファから読み込み前記第1のクエリ実行部に提供する、
データベース管理システム。 - 前記第2のクエリ実行部は、前記クエリの実行において、
(a)データベースオペレーションを実行するための実行インスタンスを生成すること、
(b)生成された実行インスタンスを実行することで、前記実行インスタンスに対応したデータベースオペレーションの実行に必要なデータを前記バッファ管理部へ読込み要求すること、
(c)(b)で実行された前記実行インスタンスに対応した前記データベースオペレーションの実行結果に基づき、別のデータベースオペレーションを実行する必要がある場合には、前記実行結果に基づき前記別のデータベースオペレーションをそれぞれ実行する1以上の実行インスタンスを新たに生成すること、及び、
(d)前記新たに生成した1以上の実行インスタンスのそれぞれについて(b)及び(c)を行うこと、
を行い、
少なくとも2以上の実行インスタンスを並行して実行する、
請求項1に記載のデータベース管理システム。 - 前記第2のクエリ実行部は、前記第1のクエリ実行部によるクエリ実行の状況に基づいて、前記並行して実行する少なくとも2以上の実行インスタンスのうち、実行を延期する実行インスタンスを決定する、
請求項2に記載のデータベース管理システム。 - 前記第2のクエリ実行部は、前記第1のクエリ実行部によるクエリ実行の状況に基づいて、前記並行して実行する少なくとも2以上の実行インスタンスのうち、実行を破棄する実行インスタンスを決定する、
請求項3に記載のデータベース管理システム。 - 更に、前記生成したクエリ実行プランに基づいて制御情報を生成する制御情報生成部を有し、
前記第1のクエリ実行部によるクエリ実行の状況は、前記制御情報に基づいて得られる、前記第1のクエリ実行部が実行しているデータベースオペレーションの第1予測順序番号であり、
前記第2のクエリ実行部は、前記並行して実行する少なくとも2以上の実行インスタンスについて前記制御情報を基にそれぞれ得られる第2予測順序番号と、前記並行して実行する少なくとも2以上の実行インスタンスにそれぞれ対応したデータベースオペレーションの前記第1予測順序番号とに基づいて、前記並行して実行する少なくとも2以上の実行インスタンスのうち、実行を延期する実行インスタンスを決定する、
請求項3に記載のデータベース管理システム。 - 前記第2のクエリ実行部は、更に前記バッファの利用可能な容量に基づいて、前記並行して実行する少なくとも2以上の実行インスタンスのうち、実行を延期する実行インスタンスを決定する、
請求項5に記載のデータベース管理システム。 - 前記制御情報生成部は、前記第1のクエリ実行部によるデータベースオペレーションの実行および前記第2のクエリ実行部によるデータベースオペレーションの実行の少なくとも一方の情報に基づき、前記制御情報を更新する、
請求項5に記載のデータベース管理システム。 - 前記制御情報生成部は、前記クエリ実行プランもしくは前記データベースから取得した統計情報に基づき前記制御情報を生成する、
請求項5に記載のデータベース管理システム。 - 更に、前記制御情報生成部は、前記第1のクエリ実行部におけるクエリ実行の記録および前記第2のクエリ実行部におけるクエリ実行の記録の少なくとも一方の情報であるクエリ固有統計情報に基づき前記制御情報を生成する、
請求項8に記載のデータベース管理システム。 - 前記第1のクエリ実行部による前記クエリの実行が完了すると、前記第2のクエリ実行部は前記クエリの実行を停止する、
請求項1に記載のデータベース管理システム。 - 所定の条件が満たされていれば、前記第2のクエリ実行部は、前記クエリを実行し、前記所定の条件が満たされていなければ、前記第2のクエリ実行部は、前記クエリを実行しない、
請求項1に記載のデータベース管理システム。 - 前記所定の条件は、前記クエリ実行プランについての所定の条件である、
請求項11に記載のデータベース管理システム。 - 前記所定の条件は、クエリの実行に使用可能な資源の量についての所定の条件である、
請求項11に記載のデータベース管理システム。 - 前記所定の条件は、データベース管理に関する所定の設定情報についての所定の条件である、
請求項11に記載のデータベース管理システム。 - 前記所定の条件は、前記クエリが含む指示についての所定の条件である、
請求項11に記載のデータベース管理システム。 - 前記バッファ管理部は、前記バッファに格納されたそれぞれのデータについて、そのデータは前記第2のクエリ実行部からの読込み要求に応答して前記バッファに格納されてその後に前記第1のクエリ実行部には未だ提供されていないデータであるか否かを識別するためのバッファ管理情報を管理しており、
前記バッファ管理部は、前記バッファ管理情報に基づき前記バッファから追い出しの対象となるデータを決定する、
請求項1に記載のデータベース管理システム。 - データベースを管理する計算機システムであって、
プロセッサと
バッファと
を有し、
前記プロセッサが、
前記データベースへのクエリをクエリ発行元から受け付け、
前記受け付けたクエリに基づいて前記受け付けたクエリを実行するために必要な1以上のデータベースオペレーションと前記1以上のデータベースオペレーションの実行手順とを表す情報を含んだクエリ実行プランを生成し、
前記生成したクエリ実行プランに基づいてデータベースオペレーションを実行することにより前記クエリを実行する第1のクエリ実行手続きを行い、
前記生成したクエリ実行プランに基づいてデータベースオペレーションを実行することにより前記クエリを実行する第2のクエリ実行手続きを行い、
前記第1及び第2のクエリ実行のいずれかにおいて必要なデータが前記バッファに格納されていなければ、前記必要なデータを前記データベースから読み込んで前記バッファに格納し、前記必要なデータを、前記第1及び第2のクエリ実行のうち前記必要なデータを必要とするクエリ実行手続きにおいて使用し、
前記必要なデータを必要とするクエリ実行手続きが前記第1のクエリ実行手続きであり、前記必要なデータが前記第2のクエリ実行手続きにおいて既に必要とされたことにより前記バッファに格納されていれば、前記バッファから前記必要なデータを読込み前記第1のクエリ実行手続きにおいて使用し、
前記第1及び第2のクエリ実行のうちの前記第1のクエリ実行手続きによるクエリ実行結果を前記クエリ発行元に返す、
計算機システム。 - データベースを管理するデータベース管理方法であって、
前記データベースへのクエリをクエリ発行元から受け付け、
前記受け付けたクエリに基づいて前記受け付けたクエリを実行するために必要な1以上のデータベースオペレーションと前記1以上のデータベースオペレーションの実行手順とを表す情報を含んだクエリ実行プランを生成し、
前記生成したクエリ実行プランに基づいてデータベースオペレーションを実行することにより前記クエリを実行する第1のクエリ実行手続きを行い、
前記生成したクエリ実行プランに基づいてデータベースオペレーションを実行することにより前記クエリを実行する第2のクエリ実行手続きを行い、
前記第1及び第2のクエリ実行のいずれかにおいて必要なデータがバッファに格納されていなければ、前記必要なデータを前記データベースから読み込んで前記バッファに格納し、前記必要なデータを、前記第1及び第2のクエリ実行のうち前記必要なデータを必要とするクエリ実行手続きにおいて使用し、
前記必要なデータを必要とするクエリ実行手続きが前記第1のクエリ実行手続きであり、前記必要なデータが前記第2のクエリ実行手続きにおいて既に必要とされたことにより前記バッファに格納されていれば、前記バッファから前記必要なデータを読込み前記第1のクエリ実行手続きにおいて使用し、
前記第1及び第2のクエリ実行のうちの前記第1のクエリ実行手続きによるクエリ実行結果を前記クエリ発行元に返す、
データベース管理方法。 - データベースへのクエリをクエリ発行元から受け付けるクエリ受付部と、前記受け付けたクエリに基づいて前記受け付けたクエリを実行するために必要な1以上のデータベースオペレーションと前記1以上のデータベースオペレーションの実行手順とを表す情報を含んだクエリ実行プランを生成するクエリ実行プラン生成部と、前記生成したクエリ実行プランに基づいてデータベースオペレーションを実行することにより前記クエリを実行する第1のクエリ実行手続きを行い前記第1のクエリ実行手続きによるクエリ実行結果を前記クエリ発行元に返す第1のクエリ実行部と、データの読込み要求を受け付けた際、読込み要求されたデータがバッファに格納されていなければ、前記読込み要求されたデータを、前記データベースから読み込んで前記バッファに格納し、前記読込み要求の発行元に提供し、読込み要求されたデータが既にバッファに格納されていれば、前記読込み要求されたデータを前記バッファから読み込み前記読込み要求の発行元に提供するバッファ管理部とを、計算機に実行されることにより前記計算機に構成するデータベース管理システム、を支援するためのコンピュータプログラムであって、
前記生成したクエリ実行プランに基づいてデータベースオペレーションを実行することにより前記クエリを実行する第2のクエリ実行手続きを行い、
前記第2のクエリ実行手続きにおいて、必要なデータの読込み要求を前記バッファ管理部に発行する、
ことを前記計算機に実行させるコンピュータプログラム。
Priority Applications (4)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2015533866A JP5999574B2 (ja) | 2013-08-29 | 2013-08-29 | データベース管理システム及び計算機システム |
| EP13892093.9A EP3040865B1 (en) | 2013-08-29 | 2013-08-29 | Database management system and computer system |
| US14/900,686 US10885030B2 (en) | 2013-08-29 | 2013-08-29 | Database management system and computer system having first and second query execution parts which execute database operations in parallel |
| PCT/JP2013/073181 WO2015029187A1 (ja) | 2013-08-29 | 2013-08-29 | データベース管理システム及び計算機システム |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| PCT/JP2013/073181 WO2015029187A1 (ja) | 2013-08-29 | 2013-08-29 | データベース管理システム及び計算機システム |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| WO2015029187A1 true WO2015029187A1 (ja) | 2015-03-05 |
Family
ID=52585803
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| PCT/JP2013/073181 Ceased WO2015029187A1 (ja) | 2013-08-29 | 2013-08-29 | データベース管理システム及び計算機システム |
Country Status (4)
| Country | Link |
|---|---|
| US (1) | US10885030B2 (ja) |
| EP (1) | EP3040865B1 (ja) |
| JP (1) | JP5999574B2 (ja) |
| WO (1) | WO2015029187A1 (ja) |
Families Citing this family (15)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US10303567B2 (en) * | 2013-08-15 | 2019-05-28 | Entit Software Llc | Managing database nodes |
| US9959245B2 (en) * | 2015-06-30 | 2018-05-01 | International Business Machines Corporation | Access frequency approximation for remote direct memory access |
| JP6690829B2 (ja) * | 2015-08-28 | 2020-04-28 | 国立大学法人 東京大学 | 計算機システム、省電力化方法及び計算機 |
| US10678792B2 (en) | 2015-10-23 | 2020-06-09 | Oracle International Corporation | Parallel execution of queries with a recursive clause |
| US10452655B2 (en) | 2015-10-23 | 2019-10-22 | Oracle International Corporation | In-memory cursor duration temp tables |
| US10642831B2 (en) | 2015-10-23 | 2020-05-05 | Oracle International Corporation | Static data caching for queries with a clause that requires multiple iterations to execute |
| US10783142B2 (en) * | 2015-10-23 | 2020-09-22 | Oracle International Corporation | Efficient data retrieval in staged use of in-memory cursor duration temporary tables |
| US10409701B2 (en) | 2016-08-11 | 2019-09-10 | Salesforce.Com, Inc. | Per-statement monitoring in a database environment |
| US11281770B2 (en) * | 2016-08-11 | 2022-03-22 | Salesforce.Com, Inc. | Detection of structured query language (SQL) injection events using simple statistical analysis |
| JP2018067174A (ja) * | 2016-10-20 | 2018-04-26 | 富士通株式会社 | 情報処理装置、関連性分析方法、及びプログラム |
| US10037157B1 (en) * | 2016-12-22 | 2018-07-31 | EMC IP Holding Company LLC | Techniques for migrating to a thinly-provisioned logical disk without writing zero blocks |
| US11222078B2 (en) | 2019-02-01 | 2022-01-11 | Hewlett Packard Enterprise Development Lp | Database operation classification |
| US11816110B2 (en) | 2021-06-22 | 2023-11-14 | International Business Machines Corporation | Processing large query results in a database accelerator environment |
| US12554717B2 (en) * | 2022-07-01 | 2026-02-17 | Microsoft Technology Licensing, Llc | Dynamically substituting a modified query based on performance analysis |
| US12554718B1 (en) * | 2025-01-08 | 2026-02-17 | AtomBeam Technologies Inc. | Codeword-native database management platform extension |
Citations (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2004192292A (ja) * | 2002-12-11 | 2004-07-08 | Hitachi Ltd | プリフェッチアプライアンスサーバ |
| JP2007034414A (ja) * | 2005-07-22 | 2007-02-08 | Masaru Kiregawa | データベース管理システム及び方法 |
| JP2012014739A (ja) * | 2011-10-12 | 2012-01-19 | Hitachi Ltd | 計算機システム及びデータベース管理システムプログラム |
Family Cites Families (10)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US7117500B2 (en) * | 2001-12-20 | 2006-10-03 | Cadence Design Systems, Inc. | Mechanism for managing execution of interdependent aggregated processes |
| US20100082599A1 (en) * | 2008-09-30 | 2010-04-01 | Goetz Graefe | Characterizing Queries To Predict Execution In A Database |
| JP4659888B2 (ja) * | 2009-02-13 | 2011-03-30 | 株式会社日立製作所 | データベース処理システム、計算機及びデータベース処理方法 |
| JP4837759B2 (ja) | 2009-05-13 | 2011-12-14 | 株式会社日立製作所 | データベース処理方法、データベース処理システム及びデータベースサーバ |
| US10838957B2 (en) * | 2010-06-17 | 2020-11-17 | Microsoft Technology Licensing, Llc | Slicing relational queries using spool operators |
| US9235446B2 (en) * | 2012-06-22 | 2016-01-12 | Microsoft Technology Licensing, Llc | Parallel computing execution plan optimization |
| US9460154B2 (en) * | 2012-12-04 | 2016-10-04 | Oracle International Corporation | Dynamic parallel aggregation with hybrid batch flushing |
| US8996499B2 (en) * | 2012-12-19 | 2015-03-31 | International Business Machines Corporation | Using temporary performance objects for enhanced query performance |
| US9251210B2 (en) * | 2013-04-19 | 2016-02-02 | Oracle International Corporation | Caching external data sources for SQL processing |
| US9329899B2 (en) * | 2013-06-24 | 2016-05-03 | Sap Se | Parallel execution of parsed query based on a concurrency level corresponding to an average number of available worker threads |
-
2013
- 2013-08-29 US US14/900,686 patent/US10885030B2/en active Active
- 2013-08-29 EP EP13892093.9A patent/EP3040865B1/en active Active
- 2013-08-29 JP JP2015533866A patent/JP5999574B2/ja active Active
- 2013-08-29 WO PCT/JP2013/073181 patent/WO2015029187A1/ja not_active Ceased
Patent Citations (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2004192292A (ja) * | 2002-12-11 | 2004-07-08 | Hitachi Ltd | プリフェッチアプライアンスサーバ |
| JP2007034414A (ja) * | 2005-07-22 | 2007-02-08 | Masaru Kiregawa | データベース管理システム及び方法 |
| JP4611830B2 (ja) | 2005-07-22 | 2011-01-12 | 優 喜連川 | データベース管理システム及び方法 |
| JP2012014739A (ja) * | 2011-10-12 | 2012-01-19 | Hitachi Ltd | 計算機システム及びデータベース管理システムプログラム |
Non-Patent Citations (1)
| Title |
|---|
| See also references of EP3040865A4 |
Also Published As
| Publication number | Publication date |
|---|---|
| US10885030B2 (en) | 2021-01-05 |
| JPWO2015029187A1 (ja) | 2017-03-02 |
| EP3040865A1 (en) | 2016-07-06 |
| JP5999574B2 (ja) | 2016-09-28 |
| EP3040865A4 (en) | 2017-03-08 |
| EP3040865B1 (en) | 2020-11-18 |
| US20160232206A1 (en) | 2016-08-11 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JP5999574B2 (ja) | データベース管理システム及び計算機システム | |
| US12079244B2 (en) | Query plans for analytic SQL constructs | |
| JP6210501B2 (ja) | データベース管理システム、計算機、データベース管理方法 | |
| JP5818264B2 (ja) | 計算機システム及びジョブネット実行方法 |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| 121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 13892093 Country of ref document: EP Kind code of ref document: A1 |
|
| ENP | Entry into the national phase |
Ref document number: 2015533866 Country of ref document: JP Kind code of ref document: A |
|
| REEP | Request for entry into the european phase |
Ref document number: 2013892093 Country of ref document: EP |
|
| WWE | Wipo information: entry into national phase |
Ref document number: 2013892093 Country of ref document: EP |
|
| WWE | Wipo information: entry into national phase |
Ref document number: 14900686 Country of ref document: US |
|
| NENP | Non-entry into the national phase |
Ref country code: DE |