CN112256409A - Task execution method and device based on multiple database accelerators - Google Patents

Task execution method and device based on multiple database accelerators Download PDF

Info

Publication number
CN112256409A
CN112256409A CN202010969557.1A CN202010969557A CN112256409A CN 112256409 A CN112256409 A CN 112256409A CN 202010969557 A CN202010969557 A CN 202010969557A CN 112256409 A CN112256409 A CN 112256409A
Authority
CN
China
Prior art keywords
task
execution
executed
queue
tasks
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.)
Granted
Application number
CN202010969557.1A
Other languages
Chinese (zh)
Other versions
CN112256409B (en
Inventor
鄢贵海
龚施俊
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Yusur Technology Co ltd
Original Assignee
Yusur Technology Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Yusur Technology Co ltd filed Critical Yusur Technology Co ltd
Priority to CN202010969557.1A priority Critical patent/CN112256409B/en
Publication of CN112256409A publication Critical patent/CN112256409A/en
Application granted granted Critical
Publication of CN112256409B publication Critical patent/CN112256409B/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/21Design, administration or maintenance of databases
    • G06F16/217Database tuning

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

The invention provides a task execution method and a task execution device based on a plurality of database accelerators, wherein the method comprises the following steps: acquiring relevant information of a first task to be executed, and acquiring relevant information of each task which is not executed before; judging whether a second task related to the first task exists in the tasks which are not executed before according to the table identifier of the first task and the operation type and the table identifier of the tasks which are not executed before; if the second task exists, delaying to set the blocking duration and then sending the first task to a database accelerator with an idle pipeline so as to execute the first task under the condition that the second task is executed; if not, the first task is sent to the database accelerator with an idle pipeline in time so as to execute the first task in time; an execution result of the first task is received. By the scheme, the parallel execution of tasks by the plurality of acceleration platforms can be realized, and the utilization rate of the acceleration platforms can be improved.

Description

Task execution method and device based on multiple database accelerators
Technical Field
The invention relates to the technical field of computer systems, in particular to a task execution method and device based on a plurality of database accelerators.
Background
In the 21 st century with high speed change, data is more and more, the requirement of query speed is higher and more, and the acceleration of the database is always a very important research direction. At present, the important direction is to increase the processing capacity and the number of processors from a software level to a hardware level from optimizing query statements, increasing the flash memory speed, increasing the number of CPUs, and accelerating by using a GPU and an FPGA acceleration platform, and many companies have introduced their own database acceleration solutions and corresponding acceleration platforms. The acceleration platforms are expensive and the performance of a single acceleration platform is acceptable, but for better acceleration performance, it is also necessary to utilize multiple acceleration platforms.
Disclosure of Invention
The invention provides a task execution method and a task execution device based on a plurality of database accelerators, which are used for realizing the task execution by a plurality of acceleration platforms and improving the utilization rate of the acceleration platforms.
In order to achieve the purpose, the invention is realized by adopting the following scheme:
according to an aspect of the embodiments of the present invention, there is provided a task execution method based on a plurality of database accelerators, including:
acquiring relevant information of a first task to be executed and relevant information of tasks of which the execution sequence is before the first task and is not completely executed;
judging whether a second task related to the first task exists in each task of which the execution sequence is positioned before the first task and is not completely executed or not according to the table identifier in the related information of the first task and the operation type and the table identifier in the related information of the task of which the execution sequence is positioned before the first task and is not completely executed;
in the case of existence of a second task related to the first task, delaying the set blocking duration and then sending the first task to a first database accelerator with an idle first pipeline so as to execute the first task when the execution of the second task is completed;
under the condition that a second task related to the first task does not exist, instantly sending the first task to a first database accelerator with an idle first pipeline so as to instantly execute the first task;
and receiving the execution result of the first task returned by the first database accelerator.
In some embodiments, determining whether a second task related to the first task exists in tasks whose execution sequence is before the first task and whose execution sequence is not completed according to the table identifier in the related information of the first task and the operation type and the table identifier in the related information of the task whose execution sequence is before the first task and whose execution sequence is not completed includes: and judging whether a second task related to the first task exists in the tasks which are positioned before the first task and not completely executed according to the fact that whether the operation type in the relevant information of the tasks which are positioned before the first task in the execution sequence and not completely executed belongs to the updating type, and whether the table identification in the relevant information of the tasks which are positioned before the first task in the execution sequence and not completely executed is consistent with the table identification in the relevant information of the first task.
In some embodiments, obtaining information about a first task to be executed and obtaining information about tasks whose execution sequence is before the first task and has not been completed includes: reading related information of a first task to be executed from a task execution queue; searching each task with the execution sequence before the first task from the task execution queue to obtain each task with the execution sequence before the first task and without execution, and acquiring related information of the corresponding task; the task execution queue is used for storing relevant information of each task to be executed and being executed.
In some embodiments, searching for tasks whose execution sequence is before the first task from the task execution queue, obtaining tasks whose execution sequence is before the first task and has not been completely executed, and obtaining related information of the corresponding tasks, includes: and searching each task with the execution sequence before the first task from the task execution queue to obtain each task with the execution sequence before the first task and without execution, and acquiring relevant information including task identification of the corresponding task from the task execution queue. According to the table identifier in the related information of the first task and the operation type and the table identifier in the related information of the task whose execution sequence is before the first task and has not been executed, judging whether a second task related to the first task exists in the tasks whose execution sequence is before the first task and has not been executed, including: whether a table record is searched from a table queue or not, and a table identifier and a corresponding task identifier in the searched table record are respectively a table identifier in the related information of the first task and a task identifier in the related information of a task of which the execution sequence is before the first task and has not been executed, and whether a second task related to the first task exists in each task of which the execution sequence is before the first task and has not been executed is judged; the table queue is used for storing the table identifier and the corresponding task identifier of the task of which the operation type belongs to the update type and is not completely executed.
In some embodiments, determining whether a second task related to a first task exists in tasks whose execution sequence is before a first task and whose execution sequence is not completed by determining whether a table record is found from a table queue, and a table identifier and a corresponding task identifier in the found table record are a table identifier in related information of the first task and a task identifier in related information of a task whose execution sequence is before the first task and whose execution sequence is not completed, respectively, includes: according to the task identifier in the relevant information of the task which is positioned before the first task and is not executed in the execution sequence, searching the corresponding table record from the table queue, and obtaining the table identifier in the searched table record; under the condition that the corresponding table record is searched from the table queue, judging whether a second task related to the first task exists in each task which is positioned before the first task and is not completely executed according to whether the table identifier in the related information of the first task is consistent with the table identifier in the searched table record or not; and under the condition that the corresponding table record is not found from the table queue, confirming that a second task related to the first task does not exist in the tasks which are positioned before the first task and are not executed in the execution sequence.
In some embodiments, the method further includes, before obtaining information related to a first task to be executed and obtaining information related to tasks whose execution sequence is before the first task and has not been completed, the method further including: and in the case that the operation type in the relevant information of the tasks whose execution sequence is before the first task and which have not been completely executed is an update type, adding a table record in the table queue to record the table identifier and the corresponding task identifier in the relevant information of the tasks whose execution sequence is before the first task and which have not been completely executed. Alternatively, the method further comprises: and putting relevant information including task identification, operation type and table identification of the task received before the first task is received into the task execution queue, and adding a table record in the table queue to record the table identification and the corresponding task identification in the relevant information of the task received before the first task when the operation type in the relevant information of the task received before the first task is received is an update type.
In some embodiments, searching for tasks whose execution sequence is before the first task from the task execution queue, obtaining tasks whose execution sequence is before the first task and has not been completely executed, and obtaining related information of the corresponding tasks, includes: and searching each task with the execution sequence before the first task from the task execution queue to obtain each task with the execution sequence before the first task and without being executed, and acquiring relevant information including the operation type and the table identifier of the corresponding task from the task execution queue. According to the table identifier in the related information of the first task and the operation type and the table identifier in the related information of the task whose execution sequence is before the first task and has not been executed, judging whether a second task related to the first task exists in the tasks whose execution sequence is before the first task and has not been executed, including: when the operation type in the related information of the tasks of which the execution sequence is before the first task and which are not completely executed belongs to the update type, judging whether a second task related to the first task exists in the tasks of which the execution sequence is before the first task and which are not completely executed by judging whether the corresponding table identifier is consistent with the table identifier in the related information of the first task or not; and when the operation types in the related information of the tasks of which the execution sequence is before the first task and which are not completely executed do not belong to the update type, confirming that a second task related to the first task does not exist in the tasks of which the execution sequence is before the first task and which are not completely executed.
In some embodiments, searching for tasks whose execution sequence is before the first task from the task execution queue, obtaining tasks whose execution sequence is before the first task and has not been completely executed, and obtaining related information of the corresponding tasks, includes: and searching each task with the execution sequence before the first task from the task execution queue to obtain each task with the execution sequence before the first task and without execution, and acquiring relevant information including task identification of the corresponding task from the task execution queue. According to the table identifier in the related information of the first task and the operation type and the table identifier in the related information of the task whose execution sequence is before the first task and has not been executed, judging whether a second task related to the first task exists in the tasks whose execution sequence is before the first task and has not been executed, including: searching a corresponding instruction record in a task instruction queue according to a task identifier in related information of a task which is located before the first task in the execution sequence and is not completely executed; under the condition that the task instruction in the corresponding instruction record searched from the task instruction queue belongs to an update type, searching a corresponding table record in a table queue according to a task identifier in the related information of the task which is positioned before the first task and is not completely executed in the execution sequence, and judging whether a second task related to the first task exists in the tasks which are positioned before the first task and are not completely executed according to whether the corresponding table record is searched from the table queue or not; under the condition that the task instruction in the corresponding instruction record searched from the task instruction queue does not belong to the updating type, confirming that a second task related to the first task does not exist in tasks of which the execution sequence is before the first task and is not completely executed; the task instruction queue is used for storing task instructions and corresponding task identifiers of the tasks, and the table queue is used for storing table identifiers and corresponding task identifiers of the tasks.
In some embodiments, searching for tasks whose execution sequence is before the first task from the task execution queue, obtaining tasks whose execution sequence is before the first task and has not been completely executed, and obtaining related information of the corresponding tasks, includes: and searching each task with the execution sequence before the first task from the task execution queue to obtain each task with the execution sequence before the first task and without execution, and acquiring relevant information including task identification and operation type of the corresponding task from the task execution queue. According to the table identifier in the related information of the first task and the operation type and the table identifier in the related information of the task whose execution sequence is before the first task and has not been executed, judging whether a second task related to the first task exists in the tasks whose execution sequence is before the first task and has not been executed, including: under the condition that the operation type in the related information of the tasks of which the execution sequence is before the first task and is not completely executed belongs to the update type, judging whether a second task related to the first task exists in each task of which the execution sequence is before the first task and is not completely executed according to whether the task identifier of the corresponding task acquired from the task execution queue and the table identifier in the related information of the first task are respectively consistent with the task identifier recorded in one table in the table queue and the corresponding table identifier; when the operation types in the related information of the tasks of which the execution sequence is before the first task and which are not completely executed do not belong to the update type, confirming that a second task related to the first task does not exist in the tasks of which the execution sequence is before the first task and which are not completely executed; the table queue is used for storing the table identifier of each task and the corresponding task identifier.
In some embodiments, in the presence of a second task associated with the first task, delaying sending the first task to a first database accelerator having a first pipeline idle after a set blocking duration to execute the first task in the presence of completion of execution of the second task, comprises: under the condition that a second task related to the first task exists, determining the number of blocking cycles corresponding to the first task according to a task execution state table so as to execute the first task under the condition that the second task is executed; determining a set blocking duration according to the determined number of the blocking periods and the set blocking periods, and sending the first task to a first database accelerator with an idle first pipeline after delaying the set blocking duration; the task execution state table is used for recording the execution state of each execution process of each task.
In some embodiments, in a case where there is a second task related to the first task, determining, according to a task execution state table, a number of blocking cycles corresponding to the first task, so that the first task is executed when execution of the second task is completed, includes: and under the condition that a second task related to the first task exists, searching the number of the executing processes of the first task which are not executed completely from the task executing state table, and determining the number of the blocking cycles corresponding to the first task according to the number of the executing processes of the first task which are not executed completely so as to execute the first task under the condition that the second task is executed completely.
In some embodiments, the number of blocking cycles corresponding to the first task is equal to the number of execution processes of the first task that have not been executed.
In some embodiments, searching for tasks whose execution sequence is before the first task from the task execution queue, obtaining tasks whose execution sequence is before the first task and has not been completely executed, and obtaining related information of the corresponding tasks, includes: searching each task with the execution sequence before the first task from the task execution queue, and acquiring a task identifier of the corresponding task from the task execution queue; searching a task execution state table according to task identifiers of corresponding tasks acquired from the task execution queue, and acquiring execution states of execution processes of the tasks with execution sequences before the first task, wherein the corresponding tasks serve as the tasks with the execution sequences before the first task and without execution under the condition that the execution states of the execution processes of the corresponding tasks are not completely executed; and acquiring relevant information including operation types and/or table identifications of corresponding tasks from the task execution queue according to the task identifications of tasks which are obtained to be executed before the first task in the execution sequence and are not executed.
In some embodiments, obtaining information about a first task to be performed includes: receiving related information of a first task, wherein the related information comprises a task identifier, an operation type and a table identifier, and putting the related information of the first task into a task execution queue; the task execution queue is used for storing relevant information of each task to be executed and being executed. The method further comprises the following steps: under the condition that the operation type in the related information of the first task belongs to the update type, putting the table identifier in the related information of the first task into a table queue; the table queue is used for storing the table identifier and the corresponding task identifier of the task of which the operation type belongs to the update type and is not completely executed. According to the table identifier in the related information of the first task and the operation type and the table identifier in the related information of the task whose execution sequence is before the first task and has not been completed, judging whether the execution sequence is before the first task and after a second task related to the first task exists in the tasks whose execution sequence is before the first task and has not been completed, wherein the method further comprises the following steps: in a task execution state table, marking a task relevance detection process in an execution state of the first task as executed; the task execution state table is used for recording the execution state of each execution process of each task, and each execution process comprises a task correlation detection process, an instruction execution process and a result reading process. After sending the first task to the first database accelerator in which there is an idle first pipeline, the method further includes: and marking the instruction execution process in the execution state of the first task as executed in the task execution state table. After receiving the execution result of the first task returned by the first database accelerator, the method further includes: and marking a result reading process in the execution state of the first task as executed in the task execution state table. Before sending the first task to the first database accelerator in which the idle first pipeline exists, the method further includes: obtaining a first database accelerator of a first pipeline with a marked idle state by searching an accelerator state table; the accelerator state table is used for recording the state of the pipeline of each database accelerator. After sending the first task to the first database accelerator in which there is an idle first pipeline, the method further includes: marking a status of the first pipeline of the first database accelerator as busy in the accelerator status table. The method further comprises the following steps: in the task execution state table, after the states of the execution processes of the first task are all executed, the first task in the task execution queue and the table identifier and the corresponding task identifier of the first task in the table queue are deleted.
In some embodiments, the data structures of the task execution queue, the table queue, the task execution state table, and the accelerator state table are concurrent data structures built in memory based on locks.
In some embodiments, a task corresponds to an SQL statement; the types of operations that belong to the Update type include Insert, Delete, Update, Create, and Alter.
According to another aspect of the embodiments of the present invention, there is provided an electronic device, including a memory, a processor, and a computer program stored on the memory and executable on the processor, wherein the processor implements the steps of the method according to any of the above embodiments when executing the program.
According to a further aspect of embodiments of the present invention, there is provided a computer-readable storage medium, on which a computer program is stored, which when executed by a processor, performs the steps of the method of any of the above embodiments.
The task execution method based on the multiple database accelerators, the electronic device and the computer readable storage medium provided by the embodiment of the invention can realize the parallel execution of tasks by multiple acceleration platforms as much as possible and improve the utilization rate of the acceleration platforms.
Drawings
In order to more clearly illustrate the embodiments of the present invention or the technical solutions in the prior art, the drawings used in the description of the embodiments or the prior art will be briefly described below, it is obvious that the drawings in the following description are only some embodiments of the present invention, and for those skilled in the art, other drawings can be obtained according to the drawings without creative efforts. In the drawings:
FIG. 1 is a flow chart of a task execution method based on multiple database accelerators according to an embodiment of the invention;
FIG. 2 is a flow chart illustrating the execution of a multi-platform database accelerator according to an embodiment of the invention;
FIG. 3 is a timing diagram of a simple pipeline;
FIG. 4 is a schematic pipeline timing diagram of a multi-platform database accelerator based on a scoreboard algorithm according to an embodiment of the present invention.
Detailed Description
In order to make the objects, technical solutions and advantages of the embodiments of the present invention more apparent, the embodiments of the present invention are further described in detail below with reference to the accompanying drawings. The exemplary embodiments and descriptions of the present invention are provided to explain the present invention, but not to limit the present invention.
The traditional scheduling mode of the single acceleration platform can be algorithms such as FCFS (First Come First Service), SJF (shortest job First), priority scheduling and the like, all of which execute the whole task and are executed in series essentially; however, the multi-acceleration platform generally uses a global scheduling algorithm and a local scheduling algorithm, or executes the whole task as a unit, and if the scheduling mode is directly used, the performance of the multiple acceleration platforms cannot be exerted to the maximum.
The inventors have discovered that a pipeline can divide a task into multiple stages for parallel execution at a finer granularity. Some tasks have data correlation, cause waiting, enable the computing unit to be in an idle state, and cannot fully utilize the computing unit, but the correlation between the tasks can be detected, and the tasks can be allowed to execute as long as the data of the tasks are ready. Therefore, the out-of-order execution of the task instructions can be realized, and the pause period caused by RAW (read after write) is reduced, so that the instructions are executed more quickly, and the utilization rate of an acceleration platform is improved.
Based on the above, the embodiment of the invention provides a task execution method based on a plurality of database accelerators. Fig. 1 is a flowchart illustrating a task execution method based on multiple database accelerators according to an embodiment of the present invention, and as shown in fig. 1, the task execution method based on multiple database accelerators according to the embodiment includes the following steps S110 to S150.
Specific embodiments of steps S110 to S150 will be described in detail below.
Step S110: the method comprises the steps of obtaining relevant information of a first task to be executed and obtaining relevant information of tasks which are located before the first task in execution sequence and are not executed.
Step S120: and judging whether a second task related to the first task exists in the tasks of which the execution sequence is positioned before the first task and is not completely executed or not according to the table identifier in the related information of the first task and the operation type and the table identifier in the related information of the tasks of which the execution sequence is positioned before the first task and is not completely executed.
In step S110, the "first task" refers to any task to be executed. The task is a task that the database system needs to execute, and is, for example, an SQL statement. The SQL statement may include information such as operation type and table identifier, and may further include identification information thereof, and may further include operation parameters. The task whose execution order is before the first task may refer to a task that arrives first, or a task that needs to be executed first according to a priority rule, and the like. If the first task has not started to execute (is to be executed), the task whose execution sequence is before the first task may be a task that has arrived but is to be executed earlier than the first task, and may be a task to be executed, being executed, or being executed. A task that has not yet been executed may refer to a task that has not been executed at all or that has been partially executed. In addition, the task whose execution sequence is before the first task and has not been executed yet may be one or more, and in some cases may not be.
In the above step S120, if the first task is related to the previous task, it means that the previous task needs to be executed if the subsequent first task is to be executed, because the previous task may involve updating (e.g. adding, modifying, deleting, etc.) the database table data, and the subsequent first task should perform an operation (e.g. querying, modifying, etc.) on the latest table data, it is necessary to wait for the previous task to be executed and then execute the first task, otherwise, confusion is easy to occur. Of course, the first task and the previous task may not be related, meaning that the execution result of the subsequent first task is not affected whether the previous task is to be executed and the first task is executed again.
The inventors have studied to find out that the main factors influencing whether two tasks are related or not are the operation type of the previous task, and the table identification of the two tasks. Through the above step S120, the operation type and the table identification can be used to find the previous task related to the first task, thereby facilitating the subsequent fine-grained task execution control. Of course, other factors can be considered simultaneously to determine whether two tasks are related.
In step S120, it may be determined whether the first task is related to a previous task by combining the operation type of the task and the table corresponding to the table identifier. In a specific implementation, the step S120 may specifically include the steps of: and judging whether a second task related to the first task exists in the tasks which are positioned before the first task and not completely executed according to the fact that whether the operation type in the relevant information of the tasks which are positioned before the first task in the execution sequence and not completely executed belongs to the updating type, and whether the table identification in the relevant information of the tasks which are positioned before the first task in the execution sequence and not completely executed is consistent with the table identification in the relevant information of the first task.
Wherein, one task may involve one or more tables, so that for two tasks, some or all of the tables are the same, i.e. there is at least some table identifications identical, then it can be considered that the two table identifications are identical, and the two tasks are identical, so the two tasks are related.
In addition, one task in each embodiment of the present invention may correspond to one SQL statement. When a whole task includes a plurality of SQL statements, the whole task may be divided into one SQL statement, so that one SQL statement corresponds to one task of the embodiment of the present invention. The types of operations that are of the Update type may include Insert, Delete, Update, Create, and Alter. Conversely, operation types that do not belong to an update type (or are referred to as query types) may include Select, and the like.
In the step S110, a queue (e.g., referred to as a "task execution queue", or, specifically, an SQL execution queue) may be used to continuously store the related information of the task to be executed, and then the related information of the task may be obtained from the task execution queue. The task execution queue may be a producer or consumer queue, and each task to be executed may be pushed into the task execution queue to be executed. The task in the task execution queue may be stored with a task identifier (e.g., an ID of SQL), an operation type (e.g., Select, Join, Union, Insert, Delete, Update, Commit, Create, enter, etc.), a table identifier (which may include an operation object corresponding to the operation type instruction), an operation parameter (e.g., WHERE col > -1 ═ and 1), and the like.
Therefore, the task execution queue is used for storing the tasks and the related information thereof, the execution sequence of the tasks can be conveniently managed, and the executed tasks can be conveniently moved out of the queue. The task execution queue may be a first-in-first-out queue, and may have a length. Of course, it is not excluded that other ways of storing tasks and their related information may be utilized.
In specific implementation, if a task to be executed is already pushed into the task execution queue, at least part of the related information may be obtained from the task execution queue.
For example, the step S110 may specifically include the steps of: s111, reading related information of a first task to be executed from a task execution queue; searching each task with the execution sequence before the first task from the task execution queue to obtain each task with the execution sequence before the first task and without execution, and acquiring related information of the corresponding task; the task execution queue is used for storing relevant information of each task to be executed and being executed.
In this example, the related information stored in the task execution queue may include a task identifier, an operation type, and a table identifier, for a first task to be executed, the related information of the first task that may be obtained from the task execution queue may include the task identifier, the operation type, and the table identifier, and for a task before the first task, one or more of the task identifier, the operation type, and the table identifier may be obtained from the task execution queue, which is different according to a designed implementation manner.
In step S111, the order of the tasks in the queue may be consistent with the execution order, so that the tasks before the first task may be found according to the order of the tasks in the task execution queue, and then the tasks that have not been executed may be found from the found tasks.
For example, in step S111, the steps of searching the task execution queue for tasks whose execution sequence is before the first task, obtaining tasks whose execution sequence is before the first task and has not been executed yet, and obtaining related information of the corresponding tasks may specifically include the steps of: s11111, searching each task with the execution sequence before the first task from the task execution queue, and acquiring the task identifier of the corresponding task from the task execution queue; s11112, according to the task identification of the corresponding task obtained from the task execution queue, searching a task execution state table to obtain the execution state of each execution process of each task with the execution sequence before the first task, and taking the corresponding task as the execution sequence before the first task and the task which is not completely executed under the condition that the execution state of each execution process of the corresponding task has not been completely executed; s11113, obtaining the relevant information including the operation type and/or the table identifier of the corresponding task from the task execution queue according to the task identifier of the task whose execution sequence is before the first task and has not been completely executed yet.
In this example, in step S11111, tasks before the first task can be found from the task execution queue, and when the task execution queue is used to store only tasks that have not yet been executed, the found tasks before the first task can be tasks that have not yet been executed and are in the order of execution before the first task. When the task execution queue is used to store tasks that have not been executed yet and tasks in other states, such as executed tasks (not dequeued), it may further determine which of the tasks before the found first task are tasks that have not been executed yet in step S11112, so as to obtain the tasks whose execution sequence is before the first task and which have not been executed yet, and further obtain the relevant information corresponding to these tasks. The related information of the task of the above step S11113 may be searched again from the task execution queue alone according to the task identifier, or the related information of all the previous tasks may be extracted from the queue in the above step S11111, and the related information of the required tasks is found from the extracted related information of the tasks in step S11113. In addition, in step S11113, the specific content of the acquired relevant information of the task may vary according to different embodiments.
Further, in step S111, different information in the related information of the task may be obtained from different ways, specifically, various related information of the task may be partially or completely obtained from the task execution queue, and if information of other tasks needs to be obtained, the related information may be obtained from a way (such as a table queue) other than the task execution queue. In this way, in the step S120, each piece of related information of the first task may be obtained from the task execution queue, and the related information of the other tasks required to determine the relevance to the first task is not limited to be obtained directly from the task execution queue, and of course, the related information of the tasks obtained from the other ways may be obtained indirectly from the task execution queue.
In some embodiments, the task identification of the task prior to the first task may be obtained primarily from the task execution queue. The table queue may be used to store the table identifier of the task whose operation type belongs to the update type and has not been executed, where the table queue may facilitate management of the table identifier of the task and removal of the record corresponding to the table identifier of the executed task. The table queue may be a first-in-first-out queue. One task can have one or more tables, and when a plurality of tables exist, the plurality of tables can be distinguished from the tables of other tasks through task identification. In this way, as long as the table identifier of the task preceding the first task is present in the table queue, it can be stated that the operation type of the task belongs to the update type. Further, it may be determined whether the table id of the task is consistent with the table id of the first task. It is thus possible to determine whether a task preceding the first task is related to the first task.
For example, in the step S111, each task whose execution sequence is before the first task is searched from the task execution queue, each task whose execution sequence is before the first task and has not been executed is obtained, and relevant information of the corresponding task is obtained, which specifically includes the steps of: s1112, searching the task execution queue for each task whose execution sequence is before the first task, obtaining each task whose execution sequence is before the first task and has not been executed yet, and obtaining related information including a task identifier of the corresponding task from the task execution queue. In step S1112, the information about the task that is not executed before the first task and is obtained from the task execution queue may mainly be the task identifier.
In this case, the step S120 may specifically include the steps of: s1201, judging whether a second task related to the first task exists in each task of which the execution sequence is before the first task and which is not completely executed by judging whether a table record is searched from a table queue or not, wherein the table identifier and the corresponding task identifier in the searched table record are the table identifier in the related information of the first task and the task identifier in the related information of the task of which the execution sequence is before the first task and which is not completely executed respectively; the table queue is used for storing the table identifier and the corresponding task identifier of the task of which the operation type belongs to the update type and is not completely executed. In step S1201, using the task identifier obtained in step S1112, a table queue is searched, and if a table record is found, where the task identifier is the same as the task identifier obtained in step S1112, and the table identifier is the same as the table identifier of the first task, it indicates that the task corresponding to the table record is the same as the table of the first task, and the table queue is used for storing table information of the update type task, so that the task corresponding to the table record is related to the first task.
In a specific implementation, the step S1201 may specifically include the steps of: according to the task identifier in the relevant information of the task which is positioned before the first task and is not executed in the execution sequence, searching the corresponding table record from the table queue, and obtaining the table identifier in the searched table record; under the condition that the corresponding table record is searched from the table queue, judging whether a second task related to the first task exists in each task which is positioned before the first task and is not completely executed according to whether the table identifier in the related information of the first task is consistent with the table identifier in the searched table record or not; and under the condition that the corresponding table record is not found from the table queue, confirming that a second task related to the first task does not exist in the tasks which are positioned before the first task and are not executed in the execution sequence. In this example, the table identifier of the task may be first found from the table queue, and then the found table identifier may be compared with the table identifier of the first task to determine whether the found table identifier is consistent with the table identifier of the first task. In other embodiments, the task identifier of the task that has not been executed before the first task and the table identifier of the first task may be directly compared with the corresponding match between the task identifier and the table identifier in the table record in the table queue.
In order to obtain information such as a table id of a task before the first task using the table queue, a step of recording information such as a table id of a task before the first task in the table queue may be further included before step S110.
For example, before the step S110, the method may further include the steps of: s161, reading relevant information including a task identifier, an operation type, and a table identifier of a task whose execution sequence is before the first task and has not been completely executed from the task execution queue, and adding a table record in the table queue to record the table identifier and a corresponding task identifier in the relevant information of the task whose execution sequence is before the first task and has not been completely executed when the operation type in the relevant information of the task whose execution sequence is before the first task and has not been completely executed is an update type.
In this embodiment, the execution may be performed when a task whose execution order is before the first task and has not been completely executed needs to be fetched from the task execution queue for execution, or may be performed separately as a step.
For another example, before the step S110, the method may further include the steps of: s162, putting the relevant information including the task identifier, the operation type, and the table identifier of the task received before receiving the first task into the task execution queue, and adding a table record in the table queue to record the table identifier and the corresponding task identifier in the relevant information of the task received before receiving the first task when the operation type in the relevant information of the task received before receiving the first task is the update type.
In this embodiment, when a task is placed in the task execution queue, it may be determined whether an operation type of the task is an update type, and if the operation type is the update type, the table identifier of the task may be recorded in the table queue.
In other embodiments, the operation type and table identification of each task prior to the first task may be obtained from a task execution queue and may be used to determine the relevance of each task to the first task.
For example, in the step S111, each task whose execution sequence is before the first task is searched from the task execution queue, each task whose execution sequence is before the first task and has not been executed is obtained, and relevant information of the corresponding task is obtained, which specifically includes the steps of: s1121, searching each task whose execution sequence is before the first task from the task execution queue, obtaining each task whose execution sequence is before the first task and is not yet executed, and obtaining relevant information including an operation type and a table identifier of the corresponding task from the task execution queue. In this embodiment, information of the task, such as the table identifier, may not be saved, such as into the table queue.
In this case, the step S120, namely, determining whether a second task related to the first task exists in the tasks whose execution sequence is before the first task and whose execution sequence is not completed according to the table identifier in the related information of the first task and the operation type and the table identifier in the related information of the task whose execution sequence is before the first task and whose execution sequence is not completed yet, may specifically include the steps of: s1202, when an operation type in the related information of the tasks whose execution sequence is before the first task and has not been executed yet belongs to an update type, determining whether a second task related to the first task exists in each task whose execution sequence is before the first task and has not been executed yet by determining whether a corresponding table identifier of the operation type is consistent with a table identifier in the related information of the first task; and when the operation types in the related information of the tasks of which the execution sequence is before the first task and which are not completely executed do not belong to the update type, confirming that a second task related to the first task does not exist in the tasks of which the execution sequence is before the first task and which are not completely executed.
In still other embodiments, the task identification of the task prior to the first task may be obtained primarily from the task execution queue. The table queue may be utilized to store table identifications of tasks of various operation types that have not yet been executed, and the task instruction queue may be utilized to store task instructions (e.g., operation instructions, more specifically, Select, Join, Union, Insert, Delete, Update, Commit, Create, Alter, etc.) of tasks of various operation types that have not yet been executed. Therefore, the table identifier of the task before the first task can be obtained from the table queue, and the operation type of the task before the first task can be obtained from the task execution queue for judging whether the task before the first task is related to the first task or not.
For example, in the step S111, each task whose execution sequence is before the first task is searched from the task execution queue, each task whose execution sequence is before the first task and has not been executed is obtained, and relevant information of the corresponding task is obtained, which specifically includes the steps of: s1131, searching the task execution queue for each task whose execution sequence is before the first task, obtaining each task whose execution sequence is before the first task and has not been executed yet, and obtaining relevant information including task identifiers of the corresponding tasks from the task execution queue.
In this case, the step S120, namely, determining whether a second task related to the first task exists in the tasks whose execution sequence is before the first task and whose execution sequence is not completed according to the table identifier in the related information of the first task and the operation type and the table identifier in the related information of the task whose execution sequence is before the first task and whose execution sequence is not completed yet, may specifically include the steps of: s1203, searching a corresponding instruction record in a task instruction queue according to a task identifier in related information of a task which is located before the first task in the execution sequence and is not completely executed; under the condition that the task instruction in the corresponding instruction record searched from the task instruction queue belongs to an update type, searching a corresponding table record in a table queue according to a task identifier in the related information of the task which is positioned before the first task and is not completely executed in the execution sequence, and judging whether a second task related to the first task exists in the tasks which are positioned before the first task and are not completely executed according to whether the corresponding table record is searched from the table queue or not; under the condition that the task instruction in the corresponding instruction record searched from the task instruction queue does not belong to the updating type, confirming that a second task related to the first task does not exist in tasks of which the execution sequence is before the first task and is not completely executed; the task instruction queue is used for storing task instructions and corresponding task identifiers of the tasks, and the table queue is used for storing table identifiers and corresponding task identifiers of the tasks.
In this embodiment, the task instruction queue is used not only to store the instructions of the tasks of the update type, but also to store the instructions of the tasks of the non-update type, and the table queue is used not only to store the table identifiers of the tasks of the update type, but also to store the table identifiers of the tasks of the non-update type. The operation type before the first task may be searched from the task instruction queue to determine whether the operation type is the update type, and the table identifier of the task before the first task may be searched from the table queue to determine whether the table identifier is consistent with the table identifier of the first task.
In still other embodiments, a task identification and an operation type of a task prior to the first task may be obtained from a task execution queue. When the table queue is used for storing information such as table identifiers of tasks of various operation types, the operation type may be used to determine whether a task before the first task belongs to an update type, and the task identifier may be used to obtain the table identifier of the task from the table queue, so as to compare the table identifier of the task with the table identifier of the first task, and further learn the correlation between the first task and the task before the first task.
For example, in the step S111, each task whose execution sequence is before the first task is searched from the task execution queue, each task whose execution sequence is before the first task and has not been executed is obtained, and relevant information of the corresponding task is obtained, which specifically includes the steps of: s1141, searching each task with the execution sequence before the first task from the task execution queue to obtain each task with the execution sequence before the first task and without execution, and acquiring relevant information including task identification and operation type of the corresponding task from the task execution queue.
In this case, the step S120, namely, determining whether a second task related to the first task exists in the tasks whose execution sequence is before the first task and whose execution sequence is not completed according to the table identifier in the related information of the first task and the operation type and the table identifier in the related information of the task whose execution sequence is before the first task and whose execution sequence is not completed yet, may specifically include the steps of: s1204, when the execution sequence is located before the first task and the operation type in the related information of the tasks that have not been executed yet belongs to the update type, determining whether a second task related to the first task exists in each task that has not been executed yet and is located before the first task according to whether the task identifier of the corresponding task obtained from the task execution queue and the table identifier in the related information of the first task are consistent with the task identifier recorded in one table in the table queue and the corresponding table identifier, respectively; when the operation types in the related information of the tasks of which the execution sequence is before the first task and which are not completely executed do not belong to the update type, confirming that a second task related to the first task does not exist in the tasks of which the execution sequence is before the first task and which are not completely executed; the table queue is used for storing the table identifier of each task and the corresponding task identifier.
In this embodiment, the table queue is used to store the table identifier of the task, and is not only used to store the table identifier of the task whose operation type belongs to the update type, but also used to store the table identifier of the task whose operation type is not the update type, and the operation type can be obtained from the task execution queue.
In each embodiment of the foregoing step S110 and step S120, the task execution queue stores the tasks and the related information of the tasks, so as to facilitate management of the execution sequence of the tasks, easily find the task before the first task, and also facilitate removal of the executed task. If the table identifier of the task is stored by using the table queue, the table identifier can be searched from the table queue without obtaining the table identifier from the task execution queue; moreover, if the table queue is used for storing the table identifier of the task of the updating type, whether the related task exists can be known by looking up whether the table identifier of a certain previous task is recorded in the table queue, and the searching is convenient; in addition, the table queue is used for storing the table identifiers, so that the table identifiers of the executed tasks can be removed conveniently, and the table identifier sequence can be managed conveniently. If the operation type and/or the table identifier are mainly obtained from the task execution queue for judgment, the data structure can be simplified.
The task execution queue, the table queue, the task instruction queue and the like can be concurrent data structures established in the memory based on the locks, so that data of one task can be conveniently accessed at one time, and data reading disorder is prevented. In addition, the queue may take other forms, such as a table, and the table may take other forms, such as a queue.
Step S130: and in the case that a second task related to the first task exists, delaying the set blocking duration and then sending the first task to a first database accelerator with an idle first pipeline so as to execute the first task when the second task is completely executed.
In step S130, the set blocking duration of the first task may be determined according to the execution process (or called task execution stage) in which the second task has not been executed and the experience execution time consumption length of each execution process. The execution process in which the second task has not been executed may be determined according to the execution state of each execution process recorded in the task execution state table.
Illustratively, the step S130 may specifically include the steps of: s131, under the condition that a second task related to the first task exists, determining the number of blocking cycles corresponding to the first task according to a task execution state table, so that the first task is executed under the condition that the second task is executed; determining a set blocking duration according to the determined number of the blocking periods and the set blocking periods, and sending the first task to a first database accelerator with an idle first pipeline after delaying the set blocking duration; the task execution state table is used for recording the execution state of each execution process of each task. The blocking period (or stall period) may be determined empirically.
More specifically, the step S131 may further include: s1311, when a second task related to the first task exists, looking up the number of the not-yet-executed execution processes of the first task from the task execution state table, and determining the number of blocking cycles corresponding to the first task according to the number of the not-yet-executed execution processes of the first task, so that the first task is executed when the second task is executed.
In step S1311, the number of blocking cycles may be determined according to the number of processes that have not been executed, for example, the number of blocking cycles corresponding to the first task is equal to the number of executed processes that have not been executed by the first task.
Specifically, for example, the execution process of the task may be divided into: if the correlation detection process of the second task is executed and the instruction execution process and the result reading process are not executed, two blocking periods (stall periods) can be added to the first task. In addition, if the table data in the database is not preloaded to the hardware platform of the accelerator, the execution process of the task may be divided into a correlation detection process, a table reading process, an instruction execution process, and a result reading process, and among these four processes, if only the correlation detection process is executed completely and other processes are not executed completely, three blocking cycles may be added to the first task.
Step S140: and under the condition that a second task related to the first task does not exist, immediately sending the first task to a first database accelerator with an idle first pipeline so as to immediately execute the first task.
Step S150: and receiving the execution result of the first task returned by the first database accelerator.
If there is a second task related to the first task that has not been executed before, the first task may be delayed for a certain time and then sent to the accelerator platform for execution in step S130. If the first task is not related to the previous task that has not been executed, or there is no previous task that has not been executed, there is no second task that has not been executed related to the first task, and the first task may be directly sent to the idle pipeline on the acceleration platform for execution through the step S140 without delay, pause, or block for a certain time.
In addition, a database accelerator or accelerator, which may also be referred to as an acceleration platform, a hardware platform, a special processor, a hardware database, etc., may bear part or most of the functions of a conventional database, thereby increasing the execution speed of the database, and may be implemented based on hardware such as an ASIC (application specific integrated circuit), an FPGA (field programmable gate array), etc. One database accelerator may correspond to one or more pipelines, and there may be multiple database accelerators, so that the pipelines can execute multiple tasks in parallel. Furthermore, a pipeline may include a dependency detection process, an instruction execution process, a result reading process, and may further include a table reading process, wherein the database accelerator may mainly execute the instruction execution process, or may also involve the table reading process (in which table data is obtained from a software database portion), and may also involve the result reading process (in which a result is returned), and further a conventional database (software database) portion (such as a CPU) interfacing with the database accelerator may involve the dependency detection process, the table reading process (transferring table data to the database accelerator), and the result reading process (receiving and outputting a result).
Through the method of the embodiments, it can be found whether each task being executed before the first task is related to the first task, if the related task is delayed for a certain time, the first task is sent to the database accelerator for execution, and if the related task is not related, the first task can be directly executed.
Further, information required may be recorded for the first task so that tasks subsequent to the first task are executed in a manner similar to the execution of the first task. In other words, the first task may be processed similarly to the case of its previous task.
Information of the first task transmitted from the outside can be received in a similar manner. For example, in the step S110, the obtaining of the relevant information of the first task to be executed may specifically include the steps of: receiving related information of a first task, wherein the related information comprises a task identifier, an operation type and a table identifier, and putting the related information of the first task into a task execution queue; the task execution queue is used for storing relevant information of each task to be executed and being executed. When the task execution queue is used to store the relevant information of the task, the relevant information of the first task may be received and placed in the task execution queue.
When the related information of the first task is received and placed into the task execution queue, whether the related information belongs to the update type can be judged according to the information of the operation type of the first task, if so, the table identifier can be placed into the table queue, and therefore the rule that the table identifier of the task of the update type is stored by the table queue can be followed, so that whether the subsequent task is related to the first task or not can be judged.
In the following, a possible embodiment of the recording of information for a first task will be explained in detail, and tasks that come before or after the first task can also be implemented with a similar embodiment.
For example, the method shown in FIG. 1 may further include the steps of: under the condition that the operation type in the related information of the first task belongs to the update type, putting the table identifier in the related information of the first task into a table queue; the table queue is used for storing the table identifier and the corresponding task identifier of the task of which the operation type belongs to the update type and is not completely executed.
Simultaneously with or after detecting the dependency of the first task with its preceding tasks, the execution state of the task execution phase in which the dependency was detected may be recorded. For example, after step S120, that is, after determining whether a second task related to the first task exists in the tasks whose execution sequence is before the first task and whose execution sequence is not completed according to the table identifier in the related information of the first task and the operation type and the table identifier in the related information of the tasks whose execution sequence is before the first task and whose execution sequence is not completed, the method shown in fig. 1 may further include the steps of: in a task execution state table, marking a task relevance detection process in an execution state of the first task as executed; the task execution state table is used for recording the execution state of each execution process of each task, and each execution process comprises a task correlation detection process, an instruction execution process and a result reading process. Similarly, other tasks may actually record the status of the correlation detection process at a similar location, and from this status record, it is known whether the correlation detection process of the task has been performed.
The state of the instruction execution stage may be recorded while or after sending the task to the pipeline of the acceleration platform for execution. For example, after the first task is sent to the first database accelerator with an idle first pipeline in step S130 or step S140, the method shown in fig. 1 may further include the steps of: and marking the instruction execution process in the execution state of the first task as executed in the task execution state table. Similarly, other tasks may update the execution state of the recorded instruction execution process (stage) at similar times.
The status of the stage of reading the results may be recorded when the results of the execution of the task (e.g., result data or execution status) are received or after the results are read. For example, after the step S150, that is, after receiving the execution result of the first task returned by the first database accelerator, the method shown in fig. 1 may further include the steps of: and marking a result reading process in the execution state of the first task as executed in the task execution state table. Other tasks may record the state of the result reading process in a similar manner at similar times. In the case of the result read procedure bit the last execution phase of the task, the task may be considered complete when the procedure is executed.
And acquiring busy and idle information of hardware at each time before sending the task to the pipeline of the acceleration platform for execution so as to obtain an idle pipeline. For example, before step S130 or step S140, that is, before the first task is sent to the first database accelerator with an idle first pipeline, the method shown in fig. 1 may further include the steps of: obtaining a first database accelerator of a first pipeline with a marked idle state by searching an accelerator state table; the accelerator state table is used for recording the state of the pipeline of each database accelerator. Idle pipelines may be found in a similar manner and the state of the pipeline may be updated in preparation for performing other tasks. Of course, at the beginning, the state of each pipeline of each acceleration platform may be initialized to an idle state.
The state of the pipeline may be updated to idle at various times before sending the task to the pipeline of the acceleration platform for execution, such as after receiving the results of the execution of the task. For example, after step S130 or step S140, that is, after the first task is sent to the first database accelerator with an idle first pipeline, the method shown in fig. 1 may further include the steps of: marking a status of the first pipeline of the first database accelerator as busy in the accelerator status table.
In addition, after the task is executed, the task can be removed from the task execution queue, and the table record of the task can also be removed from the table queue. For example, the method shown in FIG. 1 may further include the steps of: in the task execution state table, after the states of the execution processes of the first task are all executed, the first task in the task execution queue and the table identifier and the corresponding task identifier of the first task in the table queue are deleted.
In a further embodiment, the data structure of one or more of the task execution queue, the table queue, the task execution state table, and the accelerator state table may be a concurrent data structure constructed in memory based on locks. Therefore, the data of one task can be read at a time, and the data reading disorder is prevented.
In addition, based on the same inventive concept as the method shown in fig. 1, an embodiment of the present invention further provides an electronic device, which includes a memory, a processor, and a computer program stored in the memory and executable on the processor, and when the processor executes the computer program, the steps of the method according to any of the above embodiments are implemented. The electronic device may be a computer, a server, or the like, and may further include a database accelerator (e.g., FPGA, ASIC, or the like).
Furthermore, an embodiment of the present invention further provides a computer-readable storage medium, on which a computer program is stored, and the computer program, when executed by a processor, implements the steps of the method according to any of the above embodiments.
In order that those skilled in the art will better understand the present invention, embodiments of the present invention will be described below with reference to specific examples.
In order to better exert the performance of multiple database acceleration platforms and improve the utilization rate of the database acceleration platforms to improve the efficiency of the database accelerator, the embodiment provides an implementation method for the execution of the multi-platform database accelerator, and the time delay caused by SQL correlation is reduced through a pipeline mode based on a scoreboard algorithm. The core of the scoreboard algorithm is that a 'scoreboard' exists in the system, the scoreboard records the data correlation of the arithmetic unit and the register, namely if the register data required by the arithmetic unit is ready, the scoreboard can be executed, and after the execution is finished, the register is released. In this case, out-of-order execution of instructions can be realized, reducing stall cycles caused by RAW (read after write), and thereby executing instructions faster. Due to the involvement of the database acceleration platform, interactive communication with upper-level applications is required.
In a specific embodiment, the task execution method based on a plurality of database accelerators can comprise the following steps:
s1, under the condition that a first task is to be executed in a task execution queue, acquiring relevant information of the first task from the task list; the task execution queue is used for storing relevant information of a task to be executed;
s2, detecting a second task being executed related to the first task in the task execution state table when there is a task being executed in the task execution state table; if the table identification information in the related information of the first task exists in a table queue, determining that a second task which is related to the first task and is being executed exists in the task execution state table; the task execution state table is used for storing the execution state of each execution process of the executing task, and the table queue is used for storing the identification information of the table contained in the executing task;
s3, determining the number of blocking cycles according to the instruction execution sequence position difference of the second task earlier than the first task and the number of execution processes in the task execution state table;
s4, recording task identification information in the relevant information of the first task in the task execution state table, identifying the relevance detection process of the first task as executed, identifying the table reading process, the task execution process and the result reading process of the first task as unexecuted, and inserting a blocking period between the relevance detection process and the table reading process of the first task according to the determined number of the blocking periods;
s5, under the condition that an idle accelerator exists in an accelerator state table, reading the correlation table of the first task, and sending the correlation table of the first task and the instruction of the first task to the idle accelerator, so that the idle accelerator executes the first task according to the execution process of the first task in the task execution state table; the accelerator state table is used for storing the occupation state of each accelerator in the database;
and S6, updating the occupation state of the idle accelerator from idle to busy, and updating the state of each execution process of the first task in the task execution state table according to the execution condition of each execution process of the first task.
The method of the above embodiment may further include the step of:
s7, if there is an executing task in the task execution state table, if the table identification information in the information related to the first task does not exist in the table queue, determining that there is no executing second task related to the first task in the task execution state table;
s8, recording task identification information in the related information of the first task in the task execution state table, identifying the correlation detection process of the first task as executed, and identifying the table reading process, the task execution process and the result reading process of the first task as not executed;
s9, under the condition that an idle accelerator exists in an accelerator state table, reading the correlation table of the first task, and sending the correlation table of the first task and the instruction of the first task to the idle accelerator, so that the idle accelerator executes the first task according to the execution process of the first task in the task execution state table;
and S10, updating the occupation state of the idle accelerator from idle to busy, and updating the state of each execution process of the first task in the task execution state table according to the execution condition of each execution process of the first task.
The task execution queue, the table queue, the task execution state table and the accelerator state table can be concurrent data structures based on locks established in a memory and used for storing corresponding data information, so that concurrent access is facilitated.
Specifically, first, an SQL execution queue (task execution queue), a TABLE queue (TABLE queue), an SQL statement execution state TABLE (task execution state TABLE), and an acceleration platform state TABLE (accelerator state TABLE) need to be designed. The SQL execution queue may be a producer-consumer queue, and may contain information related to the SQL statements, such as operation types, parameters, table names, and the like. The operation types can be mainly Select, Join, Union, Insert, Delete, Update, Commit, Create, or Alter, and the parameters are mainly those values that contain comparisons, such as WHERE col > -1-the comparator "> -" and "1"; the TABLE queue contains the TABLE IDs contained by all SQL statements being executed; the SQL statement execution state table and the acceleration platform state table are explained in the following section.
FIG. 2 is a flow chart illustrating the execution of a multi-platform database accelerator according to an embodiment of the invention. Referring to fig. 2, first, a system (e.g., a system on the CPU side) reads hardware information; then judging whether the SQL task execution queue is empty: if the state is empty, judging whether to quit or not; otherwise, judging whether the current SQL statement is related to the currently executed SQL statement, wherein the specific operation is to search whether the related table is in an execution queue: if so, inserting a stall period (blocking period); and reading the related table, then delivering the current SQL statement to an idle acceleration platform for execution, updating hardware information, and finally reading result information.
FIG. 4 is a schematic pipeline timing diagram of a multi-platform database accelerator based on a scoreboard algorithm according to an embodiment of the present invention. In fig. 4, "1", "2", "3", and "4" respectively denote SQL statements "SELECT FROM table _ 1", "INSERT FROM table _1 xxx", "SELECT xx FROM table _1, table _2WHERE col > is 1", and "SELECT FROM table _ 3". Referring to fig. 4, the plurality of acceleration platforms correspond to a plurality of pipelines, each pipeline including four pipeline components: the correlation (correlation detection process), the read table (table read process), the execution SQL (instruction execution process), and the read result (result read process) are detected from the table name in the SQL statement. Because of being a plurality of acceleration platforms, a plurality of SQL sentences can be executed simultaneously, but correlation possibly exists among the SQL sentences, the correlation can be detected through a scoreboard algorithm, the related SQL sentences are inserted into three stall cycles first, and the later flow is executed after the previous SQL sentences are executed; and the subsequent SQL statements without correlation can be directly executed, so that the execution efficiency of the SQL statements is improved.
Table 1 is an instruction state table, which is a table for recording the execution state of SQL statements, where SQL _ ID represents the statements being executed, and each statement has four execution processes: detecting correlation, reading table, executing SQL and reading result. In table 1, 1 may be used to indicate that the process has been performed, and 0 may be used to indicate that the process has not been performed.
Detecting correlation Reading table Executing SQL Reading the result
SQL_ID
1 or 0 1 or 0 1 or 0 1 or 0
TABLE 1
Table 2 is an accelerated platform status table, which is a table for recording the status of an accelerated platform, and includes a busy status (busy status), where 1 may indicate that the platform is busy, and 0 may indicate that the platform is idle.
Busy
Acceleration platform ID 1 or 0
TABLE 2
The method of this example may include the steps of: 1) establishing a lock-based concurrent data structure in the memory for storing data information so as to facilitate subsequent concurrent access; 2) automatically constructing a plurality of pipelines according to the hardware resource information, wherein each pipeline comprises four components: detecting correlation, reading table, executing SQL and reading result, and the flow line is realized based on thread.
FIG. 3 is a timing diagram of a simple pipeline. Similarly to fig. 4, in fig. 3, "1", "2", "3", "4" respectively denote SQL statements "SELECT × FROM table _ 1", "INSERT table _1 xxx", "SELECT xx FROM table _1, table _2WHERE col > is 1", and "SELECT × FROM table _ 3". Referring to fig. 3, if the database accelerator adopts simple pipeline processing, in the execution flow of the multi-platform database accelerator, when data correlation exists between 2 and 3, 3 needs to wait for 2 to be executed, and needs to wait after 3, and when there are many SQL statements, these waiting times are unacceptable; moreover, this method is not suitable for a case of multiple acceleration stages, and cannot maximize the performance of the acceleration stages.
After the scoreboard algorithm is used, referring to fig. 4, in the process of executing a pipeline based on the scoreboard algorithm, if data correlation occurs in a certain SQL statement, the subsequent SQL statement without data correlation can be directly executed, so that the data correlation between the SQL statements is effectively solved, the performance of the method depends on the number of the SQL statements with data correlation in the SQL task execution queue and the number of acceleration platforms, and the greater the number of the acceleration platforms, the better the acceleration performance is.
In the embodiment, the high concurrency of the system can be realized by designing the concurrent map data structure and designing the assembly line of the multi-platform database accelerator based on the scoreboard concept. The method and the device realize the decoupling of the detection correlation, the reading table, the execution SQL and the reading result of the database accelerator, solve the problem of data correlation, effectively reduce the waiting time of the database accelerator in the process of processing the SQL sentences through a flow line technology based on a scoreboard algorithm, improve the utilization rate of an acceleration platform and improve the acceleration performance of the database accelerator.
In summary, according to the task execution method based on multiple database accelerators, the electronic device and the computer-readable storage medium of the embodiments of the present invention, by detecting the correlation between the task and the previous task, and blocking the idle pipeline execution of the relevant task for a certain time before sending to the accelerator, the idle pipeline execution of the irrelevant task immediately sending to the accelerator is performed, so that the task can be executed after the relevant task is executed, and the task and the irrelevant task can be executed in parallel. Therefore, parallel execution of tasks by multiple acceleration platforms can be realized as much as possible, and the utilization rate of the acceleration platforms is improved.
In the description herein, reference to the description of the terms "one embodiment," "a particular embodiment," "some embodiments," "for example," "an example," "a particular example," or "some examples," etc., means that a particular feature, structure, material, or characteristic described in connection with the embodiment or example is included in at least one embodiment or example of the invention. In this specification, the schematic representations of the terms used above do not necessarily refer to the same embodiment or example. Furthermore, the particular features, structures, materials, or characteristics described may be combined in any suitable manner in any one or more embodiments or examples. The sequence of steps involved in the various embodiments is provided to schematically illustrate the practice of the invention, and the sequence of steps is not limited and can be suitably adjusted as desired.
As will be appreciated by one skilled in the art, embodiments of the present invention may be provided as a method, system, or computer program product. Accordingly, the present invention may take the form of an entirely hardware embodiment, an entirely software embodiment or an embodiment combining software and hardware aspects. Furthermore, the present invention may take the form of a computer program product embodied on one or more computer-usable storage media (including, but not limited to, disk storage, CD-ROM, optical storage, and the like) having computer-usable program code embodied therein.
The present invention is described with reference to flowchart illustrations and/or block diagrams of methods, apparatus (systems), and computer program products according to embodiments of the invention. It will be understood that each flow and/or block of the flow diagrams and/or block diagrams, and combinations of flows and/or blocks in the flow diagrams and/or block diagrams, can be implemented by computer program instructions. These computer program instructions may be provided to a processor of a general purpose computer, special purpose computer, embedded processor, or other programmable data processing apparatus to produce a machine, such that the instructions, which execute via the processor of the computer or other programmable data processing apparatus, create means for implementing the functions specified in the flowchart flow or flows and/or block diagram block or blocks.
These computer program instructions may also be stored in a computer-readable memory that can direct a computer or other programmable data processing apparatus to function in a particular manner, such that the instructions stored in the computer-readable memory produce an article of manufacture including instruction means which implement the function specified in the flowchart flow or flows and/or block diagram block or blocks.
These computer program instructions may also be loaded onto a computer or other programmable data processing apparatus to cause a series of operational steps to be performed on the computer or other programmable apparatus to produce a computer implemented process such that the instructions which execute on the computer or other programmable apparatus provide steps for implementing the functions specified in the flowchart flow or flows and/or block diagram block or blocks.
The above-mentioned embodiments are intended to illustrate the objects, technical solutions and advantages of the present invention in further detail, and it should be understood that the above-mentioned embodiments are only exemplary embodiments of the present invention, and are not intended to limit the scope of the present invention, and any modifications, equivalent substitutions, improvements and the like made within the spirit and principle of the present invention should be included in the scope of the present invention.

Claims (18)

1. A method for task execution based on multiple database accelerators, comprising:
acquiring relevant information of a first task to be executed and relevant information of tasks of which the execution sequence is before the first task and is not completely executed;
judging whether a second task related to the first task exists in each task of which the execution sequence is positioned before the first task and is not completely executed or not according to the table identifier in the related information of the first task and the operation type and the table identifier in the related information of the task of which the execution sequence is positioned before the first task and is not completely executed;
in the case of existence of a second task related to the first task, delaying the set blocking duration and then sending the first task to a first database accelerator with an idle first pipeline so as to execute the first task when the execution of the second task is completed;
under the condition that a second task related to the first task does not exist, instantly sending the first task to a first database accelerator with an idle first pipeline so as to instantly execute the first task;
and receiving the execution result of the first task returned by the first database accelerator.
2. The method for task execution based on multiple database accelerators according to claim 1, wherein the step of determining whether a second task related to the first task exists in the tasks whose execution sequence is before the first task and whose execution sequence is not completed according to the table identifier in the information related to the first task and the operation type and the table identifier in the information related to the tasks whose execution sequence is before the first task and whose execution sequence is not completed comprises the steps of:
and judging whether a second task related to the first task exists in each task which is located before the first task and is not executed completely or not according to whether the operation type in the relevant information of the task which is located before the first task in the execution sequence and is not executed completely belongs to the update type or not, and whether the table identifier in the relevant information of the task which is located before the first task in the execution sequence and is not executed completely is consistent with the table identifier in the relevant information of the first task or not.
3. The method for task execution based on multiple database accelerators according to claim 1, wherein the step of obtaining information about a first task to be executed and information about tasks whose execution sequence is before the first task and whose execution sequence has not been completed comprises the steps of:
reading related information of a first task to be executed from a task execution queue; searching each task with the execution sequence before the first task from the task execution queue to obtain each task with the execution sequence before the first task and without execution, and acquiring related information of the corresponding task; the task execution queue is used for storing relevant information of each task to be executed and being executed.
4. The method of task execution based on a plurality of database accelerators of claim 3,
searching each task with the execution sequence before the first task from the task execution queue to obtain each task with the execution sequence before the first task and without execution, and obtaining relevant information of the corresponding task, including:
searching each task with an execution sequence before the first task from the task execution queue to obtain each task with the execution sequence before the first task and without being executed, and acquiring related information including task identifiers of the corresponding tasks from the task execution queue;
according to the table identifier in the related information of the first task and the operation type and the table identifier in the related information of the task whose execution sequence is before the first task and has not been executed, judging whether a second task related to the first task exists in the tasks whose execution sequence is before the first task and has not been executed, including:
whether a table record is searched from a table queue or not, and a table identifier and a corresponding task identifier in the searched table record are respectively a table identifier in the related information of the first task and a task identifier in the related information of a task of which the execution sequence is before the first task and has not been executed, and whether a second task related to the first task exists in each task of which the execution sequence is before the first task and has not been executed is judged; the table queue is used for storing the table identifier and the corresponding task identifier of the task of which the operation type belongs to the update type and is not completely executed.
5. The method as claimed in claim 4, wherein the determining whether there is a second task related to the first task in the tasks whose execution sequence is before the first task and which have not been executed by determining whether a table record is found from a table queue, and the table identifier and the corresponding task identifier in the found table record are the table identifier in the related information of the first task and the task identifier in the related information of the tasks whose execution sequence is before the first task and which have not been executed, respectively, comprises:
according to the task identifier in the relevant information of the task which is positioned before the first task and is not executed in the execution sequence, searching the corresponding table record from the table queue, and obtaining the table identifier in the searched table record; under the condition that the corresponding table record is searched from the table queue, judging whether a second task related to the first task exists in each task which is positioned before the first task and is not completely executed according to whether the table identifier in the related information of the first task is consistent with the table identifier in the searched table record or not; and under the condition that the corresponding table record is not found from the table queue, confirming that a second task related to the first task does not exist in the tasks which are positioned before the first task and are not executed in the execution sequence.
6. The method for task execution based on multiple database accelerators as recited in claim 4, wherein the step of obtaining information related to a first task to be executed and obtaining information related to tasks whose execution sequence is before the first task and whose execution sequence is not yet completed further comprises the steps of:
reading relevant information including task identifications, operation types and table identifications of tasks which are positioned before the first task in execution sequence and are not completely executed from the task execution queue, and adding a table record in the table queue to record the table identifications and the corresponding task identifications in the relevant information of the tasks which are positioned before the first task in execution sequence and are not completely executed under the condition that the operation types in the relevant information of the tasks which are positioned before the first task in execution sequence and are not completely executed are update types;
alternatively, the first and second electrodes may be,
and putting relevant information including task identification, operation type and table identification of the task received before the first task is received into the task execution queue, and adding a table record in the table queue to record the table identification and the corresponding task identification in the relevant information of the task received before the first task when the operation type in the relevant information of the task received before the first task is received is an update type.
7. The method of task execution based on a plurality of database accelerators of claim 3,
searching each task with the execution sequence before the first task from the task execution queue to obtain each task with the execution sequence before the first task and without execution, and obtaining relevant information of the corresponding task, including:
searching each task with an execution sequence before the first task from the task execution queue to obtain each task with the execution sequence before the first task and without being executed, and acquiring relevant information including an operation type and a table identifier of the corresponding task from the task execution queue;
according to the table identifier in the related information of the first task and the operation type and the table identifier in the related information of the task whose execution sequence is before the first task and has not been executed, judging whether a second task related to the first task exists in the tasks whose execution sequence is before the first task and has not been executed, including:
when the operation type in the related information of the tasks of which the execution sequence is before the first task and which are not completely executed belongs to the update type, judging whether a second task related to the first task exists in the tasks of which the execution sequence is before the first task and which are not completely executed by judging whether the corresponding table identifier is consistent with the table identifier in the related information of the first task or not; and when the operation types in the related information of the tasks of which the execution sequence is before the first task and which are not completely executed do not belong to the update type, confirming that a second task related to the first task does not exist in the tasks of which the execution sequence is before the first task and which are not completely executed.
8. The method of task execution based on a plurality of database accelerators of claim 3,
searching each task with the execution sequence before the first task from the task execution queue to obtain each task with the execution sequence before the first task and without execution, and obtaining relevant information of the corresponding task, including:
searching each task with an execution sequence before the first task from the task execution queue to obtain each task with the execution sequence before the first task and without being executed, and acquiring related information including task identifiers of the corresponding tasks from the task execution queue;
according to the table identifier in the related information of the first task and the operation type and the table identifier in the related information of the task whose execution sequence is before the first task and has not been executed, judging whether a second task related to the first task exists in the tasks whose execution sequence is before the first task and has not been executed, including:
searching a corresponding instruction record in a task instruction queue according to a task identifier in related information of a task which is located before the first task in the execution sequence and is not completely executed; under the condition that the task instruction in the corresponding instruction record searched from the task instruction queue belongs to an update type, searching a corresponding table record in a table queue according to a task identifier in the related information of the task which is positioned before the first task and is not completely executed in the execution sequence, and judging whether a second task related to the first task exists in the tasks which are positioned before the first task and are not completely executed according to whether the corresponding table record is searched from the table queue or not; under the condition that the task instruction in the corresponding instruction record searched from the task instruction queue does not belong to the updating type, confirming that a second task related to the first task does not exist in tasks of which the execution sequence is before the first task and is not completely executed; the task instruction queue is used for storing task instructions and corresponding task identifiers of the tasks, and the table queue is used for storing table identifiers and corresponding task identifiers of the tasks.
9. The method of task execution based on a plurality of database accelerators of claim 3,
searching each task with the execution sequence before the first task from the task execution queue to obtain each task with the execution sequence before the first task and without execution, and obtaining relevant information of the corresponding task, including:
searching each task with an execution sequence before the first task from the task execution queue to obtain each task with the execution sequence before the first task and without being executed, and acquiring relevant information including task identification and operation type of the corresponding task from the task execution queue;
according to the table identifier in the related information of the first task and the operation type and the table identifier in the related information of the task whose execution sequence is before the first task and has not been executed, judging whether a second task related to the first task exists in the tasks whose execution sequence is before the first task and has not been executed, including:
under the condition that the operation type in the related information of the tasks of which the execution sequence is before the first task and is not completely executed belongs to the update type, judging whether a second task related to the first task exists in each task of which the execution sequence is before the first task and is not completely executed according to whether the task identifier of the corresponding task acquired from the task execution queue and the table identifier in the related information of the first task are respectively consistent with the task identifier recorded in one table in the table queue and the corresponding table identifier; when the operation types in the related information of the tasks of which the execution sequence is before the first task and which are not completely executed do not belong to the update type, confirming that a second task related to the first task does not exist in the tasks of which the execution sequence is before the first task and which are not completely executed; the table queue is used for storing the table identifier of each task and the corresponding task identifier.
10. The method of claim 1, wherein in the presence of a second task associated with the first task, delaying sending the first task to a first database accelerator having a first pipeline idle after a set blocking period to execute the first task in the presence of completion of execution of the second task, comprises:
under the condition that a second task related to the first task exists, determining the number of blocking cycles corresponding to the first task according to a task execution state table so as to execute the first task under the condition that the second task is executed; determining a set blocking duration according to the determined number of the blocking periods and the set blocking periods, and sending the first task to a first database accelerator with an idle first pipeline after delaying the set blocking duration; the task execution state table is used for recording the execution state of each execution process of each task.
11. The method for task execution based on multiple database accelerators according to claim 10, wherein in case of existence of a second task related to the first task, determining a number of blocking cycles corresponding to the first task according to a task execution state table, so that the first task is executed in case of completion of execution of the second task, comprises:
and under the condition that a second task related to the first task exists, searching the number of the executing processes of the first task which are not executed completely from the task executing state table, and determining the number of the blocking cycles corresponding to the first task according to the number of the executing processes of the first task which are not executed completely so as to execute the first task under the condition that the second task is executed completely.
12. The method of claim 11, wherein the number of blocking cycles for the first task is equal to the number of unexecuted executions of the first task.
13. The method for task execution based on multiple database accelerators according to claim 3, wherein the step of searching the task execution queue for tasks whose execution sequence is before the first task, obtaining tasks whose execution sequence is before the first task and has not been completed, and obtaining the related information of the corresponding tasks comprises:
searching each task with the execution sequence before the first task from the task execution queue, and acquiring a task identifier of the corresponding task from the task execution queue;
searching a task execution state table according to task identifiers of corresponding tasks acquired from the task execution queue, and acquiring execution states of execution processes of the tasks with execution sequences before the first task, wherein the corresponding tasks serve as the tasks with the execution sequences before the first task and without execution under the condition that the execution states of the execution processes of the corresponding tasks are not completely executed;
and acquiring relevant information including operation types and/or table identifications of corresponding tasks from the task execution queue according to the task identifications of tasks which are obtained to be executed before the first task in the execution sequence and are not executed.
14. The method of task execution based on a plurality of database accelerators of claim 1,
acquiring relevant information of a first task to be executed, wherein the relevant information comprises the following steps:
receiving related information of a first task, wherein the related information comprises a task identifier, an operation type and a table identifier, and putting the related information of the first task into a task execution queue; the task execution queue is used for storing relevant information of each task to be executed and being executed;
the method further comprises the following steps:
under the condition that the operation type in the related information of the first task belongs to the update type, putting the table identifier in the related information of the first task into a table queue; the table queue is used for storing the table identifier and the corresponding task identifier of the task of which the operation type belongs to the update type and is not completely executed;
according to the table identifier in the related information of the first task and the operation type and the table identifier in the related information of the task whose execution sequence is before the first task and has not been completed, judging whether the execution sequence is before the first task and after a second task related to the first task exists in the tasks whose execution sequence is before the first task and has not been completed, wherein the method further comprises the following steps:
in a task execution state table, marking a task relevance detection process in an execution state of the first task as executed; the task execution state table is used for recording the execution state of each execution process of each task, and each execution process comprises a task correlation detection process, an instruction execution process and a result reading process;
after sending the first task to the first database accelerator in which there is an idle first pipeline, the method further includes:
marking an instruction execution process in the execution state of the first task as executed in the task execution state table;
after receiving the execution result of the first task returned by the first database accelerator, the method further includes:
in the task execution state table, marking a result reading process in the execution state of the first task as executed;
before sending the first task to the first database accelerator in which the idle first pipeline exists, the method further includes:
obtaining a first database accelerator of a first pipeline with a marked idle state by searching an accelerator state table; the accelerator state table is used for recording the state of a production line of each database accelerator;
after sending the first task to the first database accelerator in which there is an idle first pipeline, the method further includes:
marking, in the accelerator status table, a status of the first pipeline of the first database accelerator as busy;
the method further comprises the following steps:
in the task execution state table, after the states of the execution processes of the first task are all executed, the first task in the task execution queue and the table identifier and the corresponding task identifier of the first task in the table queue are deleted.
15. A method for task execution based on multiple database accelerators as recited in claim 14, wherein the data structures of the task execution queue, the table queue, the task execution state table, and the accelerator state table are concurrent data structures built in memory based on locks.
16. The method of claim 2, wherein a task corresponds to a SQL statement; the types of operations that belong to the Update type include Insert, Delete, Update, Create, and Alter.
17. An electronic device comprising a memory, a processor and a computer program stored on the memory and executable on the processor, wherein the processor implements the steps of the method according to any one of claims 1 to 16 when executing the program.
18. A computer-readable storage medium, on which a computer program is stored which, when being executed by a processor, carries out the steps of the method according to any one of claims 1 to 16.
CN202010969557.1A 2020-09-15 2020-09-15 Task execution method and device based on multiple database accelerators Active CN112256409B (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010969557.1A CN112256409B (en) 2020-09-15 2020-09-15 Task execution method and device based on multiple database accelerators

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010969557.1A CN112256409B (en) 2020-09-15 2020-09-15 Task execution method and device based on multiple database accelerators

Publications (2)

Publication Number Publication Date
CN112256409A true CN112256409A (en) 2021-01-22
CN112256409B CN112256409B (en) 2022-03-04

Family

ID=74232425

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010969557.1A Active CN112256409B (en) 2020-09-15 2020-09-15 Task execution method and device based on multiple database accelerators

Country Status (1)

Country Link
CN (1) CN112256409B (en)

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6134710A (en) * 1998-06-26 2000-10-17 International Business Machines Corp. Adaptive method and system to minimize the effect of long cache misses
CN1577278A (en) * 2003-07-22 2005-02-09 株式会社东芝 Method and system for scheduling real-time periodic tasks
CN104699541A (en) * 2015-03-30 2015-06-10 北京奇虎科技有限公司 Method, device, data transmission assembly and system for synchronizing data
CN105589874A (en) * 2014-10-22 2016-05-18 阿里巴巴集团控股有限公司 ETL task dependence relationship detecting method and device and ETL tool
CN111149166A (en) * 2017-07-30 2020-05-12 纽罗布拉德有限公司 Memory-based distributed processor architecture
CN111176907A (en) * 2020-01-06 2020-05-19 中科驭数(北京)科技有限公司 Hardware database rollback method, software database rollback method and device
CN111198872A (en) * 2020-01-06 2020-05-26 中科驭数(北京)科技有限公司 Method and device for processing transactions by database

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6134710A (en) * 1998-06-26 2000-10-17 International Business Machines Corp. Adaptive method and system to minimize the effect of long cache misses
CN1577278A (en) * 2003-07-22 2005-02-09 株式会社东芝 Method and system for scheduling real-time periodic tasks
CN105589874A (en) * 2014-10-22 2016-05-18 阿里巴巴集团控股有限公司 ETL task dependence relationship detecting method and device and ETL tool
CN104699541A (en) * 2015-03-30 2015-06-10 北京奇虎科技有限公司 Method, device, data transmission assembly and system for synchronizing data
CN111149166A (en) * 2017-07-30 2020-05-12 纽罗布拉德有限公司 Memory-based distributed processor architecture
CN111176907A (en) * 2020-01-06 2020-05-19 中科驭数(北京)科技有限公司 Hardware database rollback method, software database rollback method and device
CN111198872A (en) * 2020-01-06 2020-05-26 中科驭数(北京)科技有限公司 Method and device for processing transactions by database

Also Published As

Publication number Publication date
CN112256409B (en) 2022-03-04

Similar Documents

Publication Publication Date Title
EP3391214B1 (en) Processing data using dynamic partitioning
US7899799B2 (en) Transaction processing system of database using multi-operation processing providing concurrency control of transactions
US9177027B2 (en) Database management system and method
US8756192B2 (en) Dispatching conflicting data changes
CN111198872B (en) Method and device for processing transactions by database
US11132383B2 (en) Techniques for processing database tables using indexes
CN108280150B (en) Distributed asynchronous service distribution method and system
CN110597630B (en) Method and system for processing content resources in distributed system
EP2751667A1 (en) Parallel operation on b+ trees
CN110704199A (en) Data compression method and device, computer equipment and storage medium
EP3267329A1 (en) Data processing method having structure of cache index specified to transaction in mobile environment dbms
US10599472B2 (en) Information processing apparatus, stage-out processing method and recording medium recording job management program
CN114328470A (en) Data migration method and device for single source table
US9542236B2 (en) Efficiency sequencer for multiple concurrently-executing threads of execution
CN112256409B (en) Task execution method and device based on multiple database accelerators
EP1850250A1 (en) Method and system for renewing an index
CN106970998B (en) News data updating method and device
CN115586953A (en) Hive-based task concurrent execution method and related device
CN112612800B (en) Method and terminal for improving data writing efficiency
CN114356999A (en) Data processing method, system and computer readable storage medium
CN109710698B (en) Data aggregation method and device, electronic equipment and medium
EP4303728A1 (en) Multi-consumer queue
US11734282B1 (en) Methods and systems for performing a vectorized delete in a distributed database system
US20160253287A1 (en) Information processing device, information processing method, and recording medium
CN115185929A (en) Data association migration method and device

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
CB02 Change of applicant information

Address after: 100089 room 801, 8 / F, building 3, yard 1, 81 Beiqing Road, Haidian District, Beijing

Applicant after: YUSUR TECHNOLOGY Co.,Ltd.

Address before: 100190 scientific research complex building, Institute of computing technology, Chinese Academy of Sciences, no.6, Academy of Sciences South Road, Haidian District, Beijing

Applicant before: YUSUR TECHNOLOGY Co.,Ltd.

CB02 Change of applicant information
GR01 Patent grant
GR01 Patent grant