CN111221856A - 面向硬件数据库的多用户请求批处理方法及装置 - Google Patents
面向硬件数据库的多用户请求批处理方法及装置 Download PDFInfo
- Publication number
- CN111221856A CN111221856A CN202010030642.1A CN202010030642A CN111221856A CN 111221856 A CN111221856 A CN 111221856A CN 202010030642 A CN202010030642 A CN 202010030642A CN 111221856 A CN111221856 A CN 111221856A
- Authority
- CN
- China
- Prior art keywords
- user
- user requests
- hardware database
- resources
- hardware
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2453—Query optimisation
- G06F16/24532—Query optimisation of parallel queries
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/242—Query formulation
- G06F16/2433—Query languages
- G06F16/2445—Data retrieval commands; View definitions
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供了一种面向硬件数据库的多用户请求批处理方法及装置,其中,该方法包括:接收多个用户请求,并记录所述多个用户请求;其中,每个用户请求的记录内容包括SQL语句和执行状态;根据用户请求的记录内容选择执行状态为待执行、SQL语句所需占用硬件数据库资源不同、且SQL语句所需占用硬件数据库总资源与硬件数据库可用资源匹配的多个用户请求;利用同一连接发送选择的多个用户请求,以利用硬件数据库并行执行选择的多个用户请求的SQL语句。通过上述方案能够在高效利用硬件资源的情况下有效解决多用户请求访问数据库的问题。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种面向硬件数据库的多用户请求批处理方法及装置。
背景技术
在信息时代,随着数据的不断增多,数据库的访问需求也越来越多。常常会出现的一种情况是,多个用户同时访问一个数据库。当有多个用户连接数据库时,同一时间内很有可能也会多个用户访问应用程序。由于系统的资源有限,当用户数量很多时,系统的性能往往会出现问题。
常见的数据库连接解决方法有以下三种:
第一种,为每一个用户连接请求建立一个新的数据库连接。该方法最为简单,在任何时候都可以处理数据库的多用户并发请求。
第二种,在应用系统初始化时建立一个连接,所有对数据库的访问都通过该连接进行。该方法可以免除每次请求时初始化和释放数据库连接的开销,而且不会有系统并发处理的问题。
第三种,为数据库连接创建一个连接池,在连接池中管理限定数目的数据库连接。数据库连接池是在应用程序启动时就建立足够的数据库连接,并将这些连接组成一个连接缓冲区,由应用程序动态的对缓冲区中的连接进行申请,使用和释放;对于超过连接池并发连接数限制的请求,将其放在请求队列中排队等待数据库服务。
然而,上述数据库连接方法均难以兼顾有效解决多用户请求访问数据库的问题和高效利用硬件资源的问题。
发明内容
本发明实施例提供了一种面向硬件数据库的多用户请求批处理方法及装置,以在高效利用硬件资源的情况下有效解决多用户请求访问数据库的问题。
为了达到上述目的,本发明采用以下方案实现:
根据本发明实施例的一个方面,提供了一种面向硬件数据库的多用户请求批处理方法,包括:
接收多个用户请求,并记录所述多个用户请求;其中,每个用户请求的记录内容包括SQL语句和执行状态;
根据用户请求的记录内容选择执行状态为待执行、SQL语句所需占用硬件数据库资源不同、且SQL语句所需占用硬件数据库总资源与硬件数据库可用资源匹配的多个用户请求;
利用同一连接发送选择的多个用户请求,以利用硬件数据库并行执行选择的多个用户请求的SQL语句。
在一些实施例中,接收多个用户请求,包括:通过多线程方式收集多个用户请求的SQL语句,并将收集的用户请求的执行状态标记为待执行。
在一些实施例中,记录所述多个用户请求,包括:根据接收时间顺序记录所述多个用户请求;其中,每个用户请求的记录内容还包括时间戳。
在一些实施例中,所述的面向硬件数据库的多用户请求批处理方法,还包括:利用同一连接依据时间戳依次发送SQL语句所需占用硬件数据库资源相同且执行状态为待执行的多个用户请求,以利用硬件数据库按接收时间顺序执行用户请求的SQL语句。
在一些实施例中,根据接收时间顺序记录所述多个用户请求,包括:根据接收时间顺序将所述多个用户请求记录在用户状态表中。
在一些实施例中,根据接收时间顺序将所述多个用户请求记录在用户状态表中,包括:根据接收时间顺序将所述多个用户请求分别记录在相应用户的用户状态表中;其中,每个用户请求的记录内容还包括用户ID。
在一些实施例中,每个用户请求的记录内容还包括用户ID,不同用户请求对应的用户ID相同或不同。
在一些实施例中,接收多个用户请求,包括:接收包含多条SQL语句的原始请求;将所述包含多条SQL语句的原始请求拆分为多个用户请求,其中,拆分得到的所述多个用户请求对应相同的用户ID,每个用户请求包含一条SQL语句。
在一些实施例中,记录所述多个用户请求,包括:将由不同原始请求拆分得到的用户请求记录在不同的用户状态表中,并为各用户状态表设置用于从中获取用户请求的记录内容的地址索引。
在一些实施例中,利用同一连接发送选择的多个用户请求之前,所述方法还包括:建立一次与硬件数据库的连接。利用同一连接发送选择的多个用户请求,包括:利用建立的该次与硬件数据库的连接发送选择的多个用户请求。
在一些实施例中,根据用户请求的记录内容选择执行状态为待执行、SQL语句所需占用硬件数据库资源不同、且SQL语句所需占用硬件数据库总资源与硬件数据库可用资源匹配的多个用户请求,包括:根据用户请求的记录内容中执行状态选择执行状态为待执行的用户请求;根据用户请求的记录内容中SQL语句的操作符从执行状态为待执行的用户请求中选择SQL语句所需占用硬件数据库资源不同的用户请求;根据用户请求的记录内容中SQL语句估算SQL语句所需占用硬件数据库资源不同的用户请求的SQL语句所需占用硬件数据资源的大小;根据估算的所需占用硬件数据资源的大小从SQL语句所需占用硬件数据库资源不同的用户请求中选择SQL语句所需占用硬件数据库总资源与硬件数据库可用资源匹配的多个用户请求。
在一些实施例中,所需占用硬件数据库资源不同的SQL语句的操作符包括select、join、compare或数学运算符中的至少一种。
根据本发明实施例的另一个方面,还提供了一种一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述任一实施例所述方法的步骤。
根据本发明实施例的又一个方面,还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述任一实施例所述方法的步骤。
本发明实施例的面向硬件数据库的多用户请求批处理方法、电子设备及计算机可读存储介质,通过使选择的多个用户请求的SQL语句所需占用硬件数据库资源不同,使得可以对多个用户请求的SQL语句进行批处理,通过使选择的多个用户请求的SQL语句所需占用硬件数据库总资源与硬件数据库可用资源匹配,使得可以最大化利用硬件数据库的运算资源,通过利用同一连接发送选择的多个用户请求,能够减少连接的建立和释放所消耗的资源。因此,本发明能够在高效利用硬件资源的情况下有效解决多用户请求访问数据库的问题。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:
图1是本发明一实施例的面向硬件数据库的多用户请求批处理方法的流程示意图;
图2是本发明一实施例中用户和硬件数据库的连接示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚明白,下面结合附图对本发明实施例做进一步详细说明。在此,本发明的示意性实施例及其说明用于解释本发明,但并不作为对本发明的限定。
为每一个用户的连接请求建立一个新的数据库连接的缺点是,系统可以处理的并发请求的数量受大型数据库系统设置和JSP(JavaServer Pages)Web应用服务器配置的限制。其次,系统能处理的并发请求的数量受系统资源的限制,如系统内存资源不足以支持这些连接的话会导致数据库系统瘫痪;CPU资源不足的话会导致系统相应的速度很慢。
在应用系统初始化时建立一个连接,所有对数据库的通信都通过此连接进行。由于只使用一个物理数据库连接,所有通过这个连接的请求只能串行执行,系统在处理完前一个用户请求之前无法处理下一个用户的请求,这样必然影响数据库的效率。当有多个并发的请求到达服务器时,不能被处理的请求只能由较低层次的套接字和网络协议封锁,通常采用缓存机制,而当系统的缓冲不足时也有系统崩溃的危险。
为数据库连接创建一个连接池,在连接池中管理者限定数目的数据库连接,虽然可以很好的解决多用户的问题,但在批处理时,硬件利用率较低,做不到对最大化的利用硬件资源。
对此,本发明实施例提供了一种面向硬件数据库的多用户请求批处理方法,可通过建立一次数据库连接,将多用户请求的SQL(Structured Query Language,结构化查询语言)语句进行批处理。
图1是本发明一实施例的面向硬件数据库的多用户请求批处理方法的流程示意图。如图1所示,一些实施例的面向硬件数据库的多用户请求批处理方法,可包括以下步骤S110至步骤S130。
下面将对步骤S110至步骤S130的具体实施方式进行详细说明。
步骤S110:接收多个用户请求,并记录所述多个用户请求;其中,每个用户请求的记录内容包括SQL语句和执行状态。
不同用户请求可以来自相同用户或不同用户。用户请求主要包括SQL语句,还可包括用户ID(用户身份信息)等信息。每个用户请求的记录内容,除了包括SQL语句和执行状态,还可包括用户ID,不同用户请求对应的用户ID可以相同或不同。例如,一个用户请求包含一条SQL语句,对于来自同一用户的用户请求,用户ID相同,对于来自不同用户的用户请求,用户ID不同。另外,由一个请求拆分得到的多个用户请求,用户ID相同。其中,用户ID可以便于区分不同用户的数据库访问请求,可以用于将数据库访问请求的处理结果返回给相应用户。另外,从用户端发来的SQL语句可以通过解析得到SQL语句字符串。
在一些实施例中,从用户接收到的原始请求包含多条SQL语句,为了便于后续处理,可以将该原始请求拆分为多个用户请求,以使每个用户请求对应一条SQL语句。
示例性地,该步骤S110中,接收多个用户请求,具体地可包括:接收包含多条SQL语句的原始请求;将所述包含多条SQL语句的原始请求拆分为多个用户请求,其中,拆分得到的所述多个用户请求对应相同的用户ID,每个用户请求包含一条SQL语句。
该示例中,不同的原始请求(若均包含多条SQL语句)可以分别进行拆分,从而分别得到相应的多个用户请求。例如,只有一个原始请求需要拆分成多个用户请求时,可以考虑与其他用户请求记录在一个用户状态表中。若来自不同用户的原始请求都包含多个SQL语句,需要拆分成多个用户请求,则可考虑将每个原始请求拆分得到的用户请求放在不同用户状态表中。
示例性地,该步骤S110中,记录所述多个用户请求,具体地,可包括步骤:将由不同原始请求拆分得到的用户请求记录在不同的用户状态表中,并为各用户状态表设置用于从中获取用户请求的记录内容的地址索引。
该示例中,每个用户对应的用户状态表的地址索引可包括用户ID(如用户名)和地址。地址索引是可以根据需求定制,比如给每个表设置一个地址,然后需要处理哪个用户的请求就查找地址索引表(包括用户名和地址)。通过该地址索引可以找到对应的用户状态表,从而可以对表中的用户请求进行读取、处理等操作。如此一来,通过为不同表设置地址索引,可以利用一个连接处理不同用户状态表中的用户请求。
硬件数据库可以对应多个用户,从而获取到多个用户请求。示例性地,该步骤S110中,接收多个用户请求,具体地,可包括步骤:S1111,通过多线程方式收集多个用户请求的SQL语句,并将收集的用户请求的执行状态标记为待执行。硬件数据库可以是FPGA(FieldProgrammable Gate Array,现场可编程门阵列)、ASIC(Application SpecificIntegrated Circuit,专用集成电路)等硬件能够从CPU端数据库获取数据对用户访问数据库的请求进行处理。
该示例中,通过多线程方式可以并行获取用户请求。刚获取到用户请求后,由于用户请求尚未开始处理,则可将用户请求的执行状态标记为待执行。另外,若一个用户请求的SQL语句已开始执行且尚未执行完毕,则可以将该用户请求的执行状态标记为正在执行;若一用户请求的SQL语句已执行完毕,则可将该用户请求的执行状态标记为执行完毕。
此外,本发明实施例不限定执行状态的具体标记形式,可以是数字,例如,用“0”表示待执行,用“1”表示正在执行,用“2”表示执行完毕,或者可以用文字表示,例如,“待执行”、“正在执行”、“执行完毕”。
另外,接收到的用户请求可以表的形式进行记录,例如,记录到用户状态表中。对于同一用户发来的不同用户请求,均可以记录在同一个用户状态表里,也就是说,用户状态表中所存放记录的用户信息可以重复记录多次。在其他实施例中,可以将每个用户的用户请求存在各自的用户状态表中,不同的用户状态表可以通过地址索引,从而利用一个连接实现可能批处理的多个用户请求的SQL语句进行处理。其中,SQL语句可以以字符串的形式进行存储,如存放在表中。
在一些实施例中,可以按照用户请求的接收顺序来记录多个用户请求。示例性地,该步骤S110中,记录所述多个用户请求,具体地,可包括步骤:S1121,根据接收时间顺序记录所述多个用户请求;其中,每个用户请求的记录内容还包括时间戳。
该步骤S1121中,当接收到用户请求后,可以根据接收时间给该用户请求增加时间戳,可以精确到秒,且可规定统一的格式,例如,yyyy/mm/dd/hh/mm/ss。在记录用户请求时,除了记录SQL语句、执行状态等信息,还可记录时间戳。记录的时间戳可用于使硬件数据库区分不同用户请求的时间顺序。如此一来,可以便于尽可能按时间顺序处理不同的用户请求。例如,并行处理的用户请求可以尽可能根据时间顺序选择,不能并行处理的用户请求可以按时间顺序处理。
进一步地,可以将用户请求按时间顺序放入用户状态表中。示例性地,上述步骤S1121中,根据接收时间顺序记录所述多个用户请求,更具体地,可包括步骤:S11211,根据接收时间顺序将所述多个用户请求记录在用户状态表中。
进一步地,一个用户可能发送多次用户请求,可以为用户建立各自的用户状态表,不同用户的用户请求可以存在不同的用户状态表中。示例性地,上述步骤S11211,即,根据接收时间顺序将所述多个用户请求记录在用户状态表中,更具体地,可包括步骤:根据接收时间顺序将所述多个用户请求分别记录在相应用户的用户状态表中;其中,每个用户请求的记录内容还包括用户ID。
该示例中,例如,一个用户请求包含一条SQL语句,不同用户请求可能来自同一个用户,则可以为一个用户建立一个用户状态表,同一用户的用户请求可以放在一个用户表中。具体可以根据用户请求中的用户ID判断属于哪个用户,则可以根据用户索引找到相应的用户状态表,然后将用户请求存放在相应的用户状态表中。
步骤S120:根据用户请求的记录内容选择执行状态为待执行、SQL语句所需占用硬件数据库资源不同、且SQL语句所需占用硬件数据库总资源与硬件数据库可用资源匹配的多个用户请求。
该步骤S120中,换言之,选出的多个用户请求,其具备需要具备三个条件:一是,各用户请求的执行状态为待执行;二是,不同用户请求的SQL语句所需占用硬件数据库资源不同(不存在资源冲突),三是,选出的所有用户请求的所有SQL语句所需占用硬件数据库资源的总资源与硬件数据库可用资源匹配,即小于可用资源,最好能使得资源利用率最大。
所需占用硬件数据库资源不同的SQL语句的操作符可包括select、join、compare或数学运算符中的至少一种。换言之,select、join、compare或数学运算符中的任多种运算符可以并行使用。例如,一个用户请求的SQL语句的包含操作符select,另一个用户请求的SQL语句的包含操作符join,则这两个SQL语句可以并行执行(批处理)。另外,若同一请求中的不同SQL语句分别包含select、join、compare或数学运算符中的至少一种操作符,则这些不同SQL语句也可以并行执行。另外,上述操作符可以作进一步细分,例如,compare可分为<=、>等,再例如,数学运算符可分为+、-等。
记录了多个用户请求后,可以找出待执行的用户请求,并从这些待执行的用户请求中选择能够并行执行的用户请求。其中,是否可以并行执行可以根据不同用户请求的SQL语句所需占用硬件数据库资源是否相同来确定,若不同,则资源利用不冲突,则可以并行执行。另外,对于可以并行执行的用户请求的SQL语句,可以进一步判断它们并行执行所占用的总资源是否与硬件数据库可用资源匹配,越匹配,资源利用率越高。可以从可以并行执行的用户请求的SQL语句中选择总资源最接近硬件数据库可用资源且未超过硬件数据库可用资源的组合进行并行执行。
在一些实施例中,上述步骤S120,即,根据用户请求的记录内容选择执行状态为待执行、SQL语句所需占用硬件数据库资源不同、且SQL语句所需占用硬件数据库总资源与硬件数据库可用资源匹配的多个用户请求,具体地,可包括步骤:S121,根据用户请求的记录内容中执行状态选择执行状态为待执行的用户请求;S122,根据用户请求的记录内容中SQL语句的操作符从执行状态为待执行的用户请求中选择SQL语句所需占用硬件数据库资源不同的用户请求;S123,根据用户请求的记录内容中SQL语句估算SQL语句所需占用硬件数据库资源不同的用户请求的SQL语句所需占用硬件数据资源的大小;S124,根据估算的所需占用硬件数据资源的大小从SQL语句所需占用硬件数据库资源不同的用户请求中选择SQL语句所需占用硬件数据库总资源与硬件数据库可用资源匹配的多个用户请求。
通过该步骤S121可找到待执行的用户请求;通过该步骤S122可从待执行的用户请求中找到可并行执行的用户请求的组合;通过该步骤S123可以估算找到的用户请求组合需要占用的硬件资源;通过该步骤S124可以找到所需总资源和可用硬件资源最匹配的用户请求的组合。
其中,该步骤S122中,例如,当SQL语句的操作符可以为。该步骤S123中,可以按时间顺序依次选择前两个所需占用硬件数据库资源不同的待执行用户请求,估算这两个用户请求所需占用硬件数据库资源的总资源,再选择前三个所需占用硬件数据库资源不同的待执行用户请求,估算这三个用户请求所需占用硬件数据库资源的总资源,依此规律进行估算,可以估算各可能数目的用户请求的总资源;或者,可以将所有所需占用硬件数据库资源不同的待执行用户请求以各种数目进行组合,来估算各组合的总资源。另外,该步骤S124中可以是从所需总资源未超过硬件数据库可用资源匹配且所需总资源最大的用户请求组合来并行处理。
该实施例中,仅给出了一种选择用户请求组合的顺序示例。在其他实施例中,可以以其他顺序来选择用户请求进行并行处理,例如,先找依据硬件数据库可用资源寻找达到一定匹配程度的用户需求组合。
步骤S130:利用同一连接发送选择的多个用户请求,以利用硬件数据库并行执行选择的多个用户请求的SQL语句。
可以在系统初始化是建立一个访问数据库的连接,选择的用户请求可以通过该连接发送给硬件数据库进行批处理。该连接可指为了使用户访问硬件数据库的连接,可以包括应用程序与硬件数据库之间的连接,用户可以发送访问请求给硬件数据库;或者,可以包括硬件数据库与CPU端的连接以及应用程序与CPU端的连接,用户可将请求发至CPU端,再经由CPU端发送至硬件数据库。
在该步骤S130之前,可以建立该连接。示例性地,利用同一连接发送选择的多个用户请求之前,图1所示的方法,还可包括步骤:S150,建立一次与硬件数据库的连接。该示例中,可以仅建立一次连接,该连接可以用于使硬件数据库对所有用户请求进行处理。该示例主要是说明可并行处理的用户请求通过一个连接发送给硬件数据库进行处理,但并不排除还可以建立用其他与硬件数据库的连接,用来处理其他用户请求。
进一步地,上述步骤S130中,利用同一连接发送选择的多个用户请求,具体地,可包括步骤:利用建立的该次与硬件数据库的连接发送选择的多个用户请求。该实施例,主要说明可以利用上述步骤S150建立的连接发送用户请求的SQL语句等给硬件数据库进行处理。
该步骤S130中,在用户请求包括多条SQL语句的情况下,若不同用户请求的SQL语句均不存在资源冲突,则选择出的用户请求的所有SQL语句均可以并行执行。
在用户请求的记录内容中包括时间戳的情况下,尤其对于无法并行执行的用户请求的SQL而言,可以依据时间顺序处理不同用户请求。
示例性地,图1所示的方法,还可包括步骤:S140,利用同一连接依据时间戳依次发送SQL语句所需占用硬件数据库资源相同且执行状态为待执行的多个用户请求,以利用硬件数据库按接收时间顺序执行用户请求的SQL语句。
该示例中,对于SQL语句占用硬件数据库资源相同的不同用户请求,可以按接收的先后顺序发送给硬件数据库执行。对于这样的两个用户请求,一个用户请求可以与其他一组可能的用户请求并行执行,另一个用户请求可以与其他另一组可能的用户请求并行执行;或者,这两个用户请求均可以单独执行。另外,该连接与上述步骤S130中的连接可为同一连接,可以为各用户与硬件数据库的连接。
每个用户请求可以包含一条SQL语句,从而可以并行处理SQL语句即是并行用户请求。每个用户请求可以包含多条SQL语句,可以在不同用户请求的所有SQL语句均可以并行处理的情况下才并行处理该不同用户;或者,对于包含多条SQL语句的用户请求而言,可以将同一用户请求的不同条SQL语句可以按时间顺序单独记录,从而可使每条记录包含一条SQL语句。
基于与图1所示的面向硬件数据库的多用户请求批处理方法相同的发明构思,本发明实施例还提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述任一实施例所述的面向硬件数据库的多用户请求批处理方法的步骤。其中,该电子设备可以是计算机、服务器、硬件等,进一步硬件可以是FPGA、ASIC等。
另外,本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述任一实施例所述的面向硬件数据库的多用户请求批处理方法的步骤。
为使本领域技术人员更好地了解本发明,下面将以具体实施例说明本发明的实施方式。
当多个用户同时申请访问数据库时,如为每个用户建立一次数据库连接,会受到数据库和网络服务器的限制,同时由于系统处理的并发数有限,会导致数据库处理速度变慢,甚至崩溃。为此,在该实施例中,选择只建立一次数据库连接,将多用户的SQL语句进行批处理。下面将对该实施例的面向硬件数据库的多用户请求批处理方法进行具体说明。
首先,设计一个用户状态表,用来存放、记录多用户(用户请求)的SQL语句。可以通过多线程的方式收集到每个用户(用户请求)的SQL语句,然后根据时间先后写入用户状态表。同时,还可在用户状态表中记录对应SQL语句的时间戳及执行状态等。用户状态记录表的示例可如下表:
Client ID | SQL String | Time Stamp | Status |
用户1 | SQL1 | t1 | 执行完毕 |
用户2 | SQL2 | t2 | 正在执行 |
用户1 | SQL3 | t3 | 待执行 |
用户3 | SQL4 | t4 | 待执行 |
Client ID(用户ID):是每个发送SQL语句的用户的ID,如遇同一用户发送多条SQL语句,可以将该用户ID记录多次(每次记录包含一条SQL语句),或单独为每一用户建表,通过地址索引(例如包括用户名和地址)。
SQL String(SQL语句):记录一条SQL语句,以字符串形式存放。SQL1、SQL2、SQL3、SQL4为不同用户请求对应的SQL语句字符串。
Time Stamp(时间戳):记录用户发送该条SQL语句的时间,规定统一格式记录,如:yyyy/mm/dd/hh/mm/ss,可精确到秒。其中,t1<t2<t3<t4。
Status(执行状态):记录该条SQL语句执行状态,例如,“0”表示待执行,“1”表示正在执行,“2“表示执行完毕。
如图2所示,可以通过在多个用户与数据库系统(可包括硬件数据库和传统的软件数据库)中的硬件数据库之间建立一个连接,并基于该连接利用硬件数据库处理不同用的数据库访问请求。
可按照表格顺序逐行执行SQL语句,即可实现多用户通过一次连接执行请求。但由于硬件资源有限,常规批处理需串行执行,系统在处理完前一个用户请求之前无法处理下一个用户的请求,这样必然影响数据库的效率,可能存在硬件利用率较低的情况。所以本实施例的批处理时最优匹配的方法,可以通过建立一次连接,对不冲突的多个SQL语句进行批量处理,以实现硬件资源利用的最大化。
在用户状态记录表中,因为等待执行的SQL语句都已列出,可以很方便地根据硬件可用(计算和存储)资源,以及SQL语句的需求资源(cost),进行最优匹配。比如,待执行的几个SQL语句中,分别包含select、join、compare(诸如<=、>等)、数学计算(+、-)等运算,若按照正常顺序执行,每一条语句都需要一个完整的执行周期,这是非常占用时间的。但由于这几句分别占用不同的硬件资源,完全可以同步进行,即可充分利用硬件资源,同时大大缩短运行时间。
具体的最优匹配方法,可以看作是一个背包问题。有N个运算和一个资源为V的硬件系统。第i个运算的所需的硬件资源是w[i]。求解将哪些SQL语句同时运行,可使这些语句中运算占用的总资源不超过硬件可使用总资源,且硬件利用率最高、运行的SQL语句总数最多。这样即可使得硬件的使用率最高、SQL语句的执行效率最大。
因为多用户的请求都储存在一个用户状态表中,所以只需建立一次数据库连接,不会占用过多的网络资源和系统资源,避免网络拥堵和系统瘫痪。用户状态表的设计,可以很方便地存储和查询SQL语句,以及查看执行进度。本发明的批处理方法,可以将多条SQL语句并发执行,进行最优匹配,实现硬件资源利用的最大化。
综上所述,本发明实施例的面向硬件数据库的多用户请求批处理方法、电子设备及计算机可读存储介质,通过使选择的多个用户请求的SQL语句所需占用硬件数据库资源不同,使得可以对多个用户请求的SQL语句进行批处理,通过使选择的多个用户请求的SQL语句所需占用硬件数据库总资源与硬件数据库可用资源匹配,使得可以最大化利用硬件数据库的运算资源,通过利用同一连接发送选择的多个用户请求,能够减少连接的建立和释放所消耗的资源。因此,本发明能够在高效利用硬件资源的情况下有效解决多用户请求访问数据库的问题。
在本说明书的描述中,参考术语“一个实施例”、“一个具体实施例”、“一些实施例”、“例如”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。各实施例中涉及的步骤顺序用于示意性说明本发明的实施,其中的步骤顺序不作限定,可根据需要作适当调整。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (14)
1.一种面向硬件数据库的多用户请求批处理方法,其特征在于,包括:
接收多个用户请求,并记录所述多个用户请求;其中,每个用户请求的记录内容包括SQL语句和执行状态;
根据用户请求的记录内容选择执行状态为待执行、SQL语句所需占用硬件数据库资源不同、且SQL语句所需占用硬件数据库总资源与硬件数据库可用资源匹配的多个用户请求;
利用同一连接发送选择的多个用户请求,以利用硬件数据库并行执行选择的多个用户请求的SQL语句。
2.如权利要求1所述的面向硬件数据库的多用户请求批处理方法,其特征在于,接收多个用户请求,包括:
通过多线程方式收集多个用户请求的SQL语句,并将收集的用户请求的执行状态标记为待执行。
3.如权利要求1所述的面向硬件数据库的多用户请求批处理方法,其特征在于,记录所述多个用户请求,包括:
根据接收时间顺序记录所述多个用户请求;其中,每个用户请求的记录内容还包括时间戳。
4.如权利要求3所述的面向硬件数据库的多用户请求批处理方法,其特征在于,还包括:
利用同一连接依据时间戳依次发送SQL语句所需占用硬件数据库资源相同且执行状态为待执行的多个用户请求,以利用硬件数据库按接收时间顺序执行用户请求的SQL语句。
5.如权利要求3所述的面向硬件数据库的多用户请求批处理方法,其特征在于,根据接收时间顺序记录所述多个用户请求,包括:
根据接收时间顺序将所述多个用户请求记录在用户状态表中。
6.如权利要求5所述的面向硬件数据库的多用户请求批处理方法,其特征在于,根据接收时间顺序将所述多个用户请求记录在用户状态表中,包括:
根据接收时间顺序将所述多个用户请求分别记录在相应用户的用户状态表中;其中,每个用户请求的记录内容还包括用户ID。
7.如权利要求1所述的面向硬件数据库的多用户请求批处理方法,其特征在于,每个用户请求的记录内容还包括用户ID,不同用户请求对应的用户ID相同或不同。
8.如权利要求1所述的面向硬件数据库的多用户请求批处理方法,其特征在于,接收多个用户请求,包括:
接收包含多条SQL语句的原始请求;
将所述包含多条SQL语句的原始请求拆分为多个用户请求,其中,拆分得到的所述多个用户请求对应相同的用户ID,每个用户请求包含一条SQL语句。
9.如权利要求8所述的面向硬件数据库的多用户请求批处理方法,其特征在于,记录所述多个用户请求,包括:
将由不同原始请求拆分得到的用户请求记录在不同的用户状态表中,并为各用户状态表设置用于从中获取用户请求的记录内容的地址索引。
10.如权利要求1至9任一项所述的面向硬件数据库的多用户请求批处理方法,其特征在于,
利用同一连接发送选择的多个用户请求之前,还包括:
建立一次与硬件数据库的连接;
利用同一连接发送选择的多个用户请求,包括:
利用建立的该次与硬件数据库的连接发送选择的多个用户请求。
11.如权利要求1至9任一项所述的面向硬件数据库的多用户请求批处理方法,其特征在于,根据用户请求的记录内容选择执行状态为待执行、SQL语句所需占用硬件数据库资源不同、且SQL语句所需占用硬件数据库总资源与硬件数据库可用资源匹配的多个用户请求,包括:
根据用户请求的记录内容中执行状态选择执行状态为待执行的用户请求;
根据用户请求的记录内容中SQL语句的操作符从执行状态为待执行的用户请求中选择SQL语句所需占用硬件数据库资源不同的用户请求;
根据用户请求的记录内容中SQL语句估算SQL语句所需占用硬件数据库资源不同的用户请求的SQL语句所需占用硬件数据资源的大小;
根据估算的所需占用硬件数据资源的大小从SQL语句所需占用硬件数据库资源不同的用户请求中选择SQL语句所需占用硬件数据库总资源与硬件数据库可用资源匹配的多个用户请求。
12.如权利要求11所述的面向硬件数据库的多用户请求批处理方法,其特征在于,所需占用硬件数据库资源不同的SQL语句的操作符包括select、join、compare或数学运算符中的至少一种。
13.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1至12任一项所述方法的步骤。
14.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1至12任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010030642.1A CN111221856B (zh) | 2020-01-13 | 2020-01-13 | 面向硬件数据库的多用户请求批处理方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010030642.1A CN111221856B (zh) | 2020-01-13 | 2020-01-13 | 面向硬件数据库的多用户请求批处理方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111221856A true CN111221856A (zh) | 2020-06-02 |
CN111221856B CN111221856B (zh) | 2021-05-25 |
Family
ID=70829412
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010030642.1A Active CN111221856B (zh) | 2020-01-13 | 2020-01-13 | 面向硬件数据库的多用户请求批处理方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111221856B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4876643A (en) * | 1987-06-24 | 1989-10-24 | Kabushiki Kaisha Toshiba | Parallel searching system having a master processor for controlling plural slave processors for independently processing respective search requests |
CN103218455A (zh) * | 2013-05-07 | 2013-07-24 | 中国人民解放军国防科学技术大学 | Key-Value数据库用户请求的高速并发处理方法 |
CN103729373A (zh) * | 2012-10-15 | 2014-04-16 | 北京新媒传信科技有限公司 | 一种数据库代理方法和装置 |
-
2020
- 2020-01-13 CN CN202010030642.1A patent/CN111221856B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4876643A (en) * | 1987-06-24 | 1989-10-24 | Kabushiki Kaisha Toshiba | Parallel searching system having a master processor for controlling plural slave processors for independently processing respective search requests |
CN103729373A (zh) * | 2012-10-15 | 2014-04-16 | 北京新媒传信科技有限公司 | 一种数据库代理方法和装置 |
CN103218455A (zh) * | 2013-05-07 | 2013-07-24 | 中国人民解放军国防科学技术大学 | Key-Value数据库用户请求的高速并发处理方法 |
Also Published As
Publication number | Publication date |
---|---|
CN111221856B (zh) | 2021-05-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10831562B2 (en) | Method and system for operating a data center by reducing an amount of data to be processed | |
US11120022B2 (en) | Processing a database query using a shared metadata store | |
CN107590001B (zh) | 负载均衡方法及装置、存储介质、电子设备 | |
US20150199404A1 (en) | System and method for batch query processing | |
WO2019223596A1 (zh) | 事件处理方法、装置、设备及存储介质 | |
US20190253489A1 (en) | Command process load balancing system | |
US10225132B2 (en) | Serving channelized interactive data collection requests from cache | |
CN110941598A (zh) | 一种数据去重方法、装置、终端及存储介质 | |
US9535743B2 (en) | Data processing control method, computer-readable recording medium, and data processing control device for performing a Mapreduce process | |
US9356949B2 (en) | Network service interface analysis | |
CN112087520B (zh) | 数据处理方法、装置、设备及计算机可读存储介质 | |
JP2020102838A5 (zh) | ||
CN110968478B (zh) | 日志采集方法、服务器及计算机存储介质 | |
JP5844895B2 (ja) | データの分散検索システム、データの分散検索方法及び管理計算機 | |
CN107070645B (zh) | 比较数据表的数据的方法和系统 | |
US20170185503A1 (en) | Method and system for recommending application parameter setting and system specification setting in distributed computation | |
CN111221856B (zh) | 面向硬件数据库的多用户请求批处理方法及装置 | |
US9659041B2 (en) | Model for capturing audit trail data with reduced probability of loss of critical data | |
CN111339170A (zh) | 数据处理方法、装置、计算机设备及存储介质 | |
CN112527900B (zh) | 一种数据库读多副本一致性的方法、装置、设备及介质 | |
CN110851437A (zh) | 一种存储方法、装置及设备 | |
CN112764897B (zh) | 任务请求的处理方法、装置、系统及计算机可读存储介质 | |
CN114546610A (zh) | 一种海量数据分布式脱敏装置 | |
CN109510774B (zh) | 一种在数据同步过程中实现流量控制的方法 | |
CN111797158A (zh) | 数据同步系统、方法和计算机可读存储介质 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |