一种减小rac节点间gc请求的方法及装置的制造方法

文档序号:10612808阅读:208来源:国知局
一种减小rac节点间gc请求的方法及装置的制造方法
【专利摘要】本发明公开了一种减小RAC节点间GC请求的方法,包括:接收客户端发送的业务操作请求,业务操作请求包含SQL语句。根据SQL语句解析SQL语句对应的表名称,判断SQL语句对应的表名称是否存在于表信息内存区的业务表中。如果是,根据业务表的访问规则接通SQL语句对应的子连接池和与子连接池对应的访问路径;如果否,则为SQL语句分配访问路径,然后接通SQL语句对应的子连接池和与子连接池对应的访问路径。由此可见,该方法减少了由于在不同节点访问相同表而造成的大量GC同步请求,减少了RAC私网间传输的数据量,提高了SQL语句的执行效率。此外,本发明还公开一种减小RAC节点间GC请求的装置。
【专利说明】
一种减小RAC节点间GC请求的方法及装置
技术领域
[0001]本发明涉及计算机技术领域,特别是涉及一种减小RAC节点间GC请求的方法及装置。
【背景技术】
[0002]通过配置连接RAC(Real Applicat1n Cluster)数据库的客户端TNS连接串,可以实现客户端连接RAC的负载均衡。当客户端有新的会话请求时,RAC通过算法将新的连接会话分配到负载较低的主机上,各会话在不同RAC节点上可能会运行相同SQL (StructuredQuery Language)语句,相同SQL语句访问数据库中相同的表,这就会增加RAC节点间GC(Globle Cush1n全局缓冲)请求,进而增加私网间传输的数据量。由于网络传输效率较低,较多的GC请求通过私网传输会降低SQL语句执行效率。
[0003]由此可见,如何提高SQL语句的执行效率是本领域技术人员亟待解决的问题。

【发明内容】

[0004]本发明的目的是提供一种减小RAC节点间GC请求的方法及装置,用于提高SQL语句的执行效率。
[0005]为解决上述技术问题,本发明提供一种减小RAC节点间GC请求的方法,包括:
[0006]接收客户端发送的业务操作请求,所述业务操作请求包含SQL语句;
[0007]根据所述SQL语句解析所述SQL语句对应的表名称,判断所述SQL语句对应的表名称是否存在于表信息内存区的业务表中;
[0008]如果是,则根据所述业务表的访问规则接通所述SQL语句对应的子连接池和与所述子连接池对应的访问路径;
[0009]如果否,则为所述SQL语句分配访问路径,然后接通所述SQL语句对应的子连接池和与所述子连接池对应的访问路径;
[0010]其中,多个所述子连接池与所述RAC中的多个节点——对应,每个业务表中包含有子连接池与节点的对应关系,多个业务表存储于表信息内存区。
[0011]优选地,还包括:
[0012]周期性地查询数据库中表的GC同步信息;
[0013]判断所述GC同步信息是否超出预设同步量,如果是,则修改超出所述预设同步量的业务表中的访问路径;
[0014]更新所述表信息内存区。
[0015]优选地,还包括:
[0016]周期性地检测所述节点的运行状态;
[0017]根据所述运行状态判断所述节点是否出现故障,如果是,则修改出现故障的节点的业务表中的访问路径;
[0018]更新所述表信息内存区。
[0019]优选地,还包括:
[0020]当所述出现故障的节点的运行状态恢复正常后,则初始化所述出现故障的节点的业务表中的访问路径。
[0021 ]优选地,所述业务表的数据结构包括:表名称、用户名、表的节点、表的GC同步量、表的子连接池。
[0022]一种减小RAC节点间GC请求的装置,包括:
[0023]接收单元,用于接收客户端发送的业务操作请求,所述业务操作请求包含SQL语句;
[0024]连接池服务进程单元,用于根据所述SQL语句解析所述SQL语句对应的表名称,判断所述SQL语句对应的表名称是否存在于表信息内存区的业务表中;
[0025]如果是,则根据所述业务表的访问规则接通所述SQL语句对应的子连接池和与所述子连接池对应的访问路径;
[0026]如果否,则为所述SQL语句分配访问路径,然后接通所述SQL语句对应的子连接池和与所述子连接池对应的访问路径;
[0027]其中,多个所述子连接池与所述RAC中的多个节点——对应,每个业务表中包含有子连接池与节点的对应关系,多个业务表存储于表信息内存区。
[0028]优选地,还包括:连接池进程维护单元,所述连接池进程维护单元具体包括:
[0029]查询子单元,用于周期性地查询数据库中表的GC同步信息;
[0030]第一判断子单元,用于判断所述GC同步信息是否超出预设同步量,如果是,则修改超出所述预设同步量的业务表中的访问路径;
[0031 ]更新子单元,用于更新所述表信息内存区。
[0032]优选地,所述连接池进程维护单元还包括:
[0033]检测子单元,用于周期性地检测所述节点的运行状态;
[0034]第二判断子单元,用于根据所述运行状态判断所述节点是否出现故障,如果是,则修改出现故障的节点的业务表中的访问路径;
[0035]更新子单元,用于更新所述表信息内存区。
[0036]优选地,所述连接池进程维护单元还包括:
[0037]初始化子单元,用于当所述出现故障的节点的运行状态恢复正常后,则初始化所述出现故障的节点的业务表中的访问路径。
[0038]优选地,所述业务表的数据结构包括:表名称、用户名、表的节点、表的GC同步量、表的子连接池。
[0039 ]本发明所提供的减小RAC节点间GC请求的方法,通过在表信息内存区中预先存储好不同的SQL语句对应的子连接池和节点之间的访问规则,当接收到客户端发送的业务操作请求时,如果业务操作请求中的SQL语句对应的表名称在业务表中存在,那么直接接通该SQL语句对应的子连接池和节点即可,如果业务操作请求中的SQL语句对应的表名称不在业务表中存在,那么直接为该SQL语句分配一条访问路径,然后接通该SQL语句对应的子连接池和节点即可。由此可见,该方法减少了由于在不同节点访问相同表而造成的大量GC同步请求,减少了 RAC私网间传输的数据量,提高了 SQL语句的执行效率。
【附图说明】
[0040]为了更清楚地说明本发明实施例,下面将对实施例中所需要使用的附图做简单的介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0041 ]图1为本发明提供的一种减小RAC节点间GC请求的方法的流程图;
[0042]图2为本发明提供的一种减小RAC节点间GC请求的装置的结构图;
[0043]图3为本发明提供的另一种减小RAC节点间GC请求的装置的结构图。
【具体实施方式】
[0044]下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下,所获得的所有其他实施例,都属于本发明保护范围。
[0045]本发明的核心是提供一种减小RAC节点间GC请求的方法及装置。
[0046]为了使本技术领域的人员更好地理解本发明方案,下面结合附图和【具体实施方式】对本发明作进一步的详细说明。
[0047]图1为本发明提供的一种减小RAC节点间GC请求的方法的流程图。如图1所示,减小RAC节点间GC请求的方法,包括:
[0048]S10:接收客户端发送的业务操作请求,业务操作请求包含SQL语句。
[0049]SI 1:根据SQL语句解析SQL语句对应的表名称,判断SQL语句对应的表名称是否存在于表信息内存区的业务表中。
[0050]如果是,则进入步骤S12,如果否,则进入步骤S13。
[0051 ] S12:根据业务表的访问规则接通SQL语句对应的子连接池和与子连接池对应的访问路径。
[0052]S13:为SQL语句分配访问路径,然后接通SQL语句对应的子连接池和与子连接池对应的访问路径。
[0053]其中,多个子连接池与RAC中的多个节点——对应,每个业务表中包含有子连接池与节点的对应关系,多个业务表存储于表信息内存区。
[0054]在具体实施中,客户端通过向数据库中发送业务操作请求以实现相应的数据调用等功能。本实施例中,通过子连接池将RAC中的节点连接,以此完成客户端向数据库的业务操作请求。具体是,一个子连接池与一个节点对应,当接收到客户端发送的业务操作请求时,根据业务操作请求中的SQL语句解析SQL语句对应的表名称,判断SQL语句对应的表名称是否存在于表信息内存区的业务表中。表信息内存区用于存储多个业务表,每个业务表中存储有子连接池与节点的对应关系。需要说明的是,业务表虽然有很多,但是并不代表存储了全部的SQL语句对应的表名称,因此,不同的客户端或者相同的客户端的SQL语句不同,那么有两种情况:
[0055]第一,表信息内存区存在与该表名称相同的业务表
[0056]通过SQL语句解析出表名称时,就可以在表信息内存区找到与该表名称相同的业务表,然后根据业务表中的访问规则接通SQL语句对应的子连接池和与子连接池对应的访问路径,以此实现客户端与数据库的业务操作。由于业务表中存储有子连接池与节点的对应关系,因此,在客户端进行业务操作请求时,能够快速的找到对应的节点。
[0057]第二,表信息内存区不存在与该表名称相同的业务表
[0058]通过SQL语句解析出表名称时,如果在表信息内存区没有找到与该表名称相同的业务表,那么需要新建立一条访问路径(建立一条子连接池与节点的对应关系),建立好访问路径后,就形成了一个新的业务表,根据新业务表中的访问规则接通SQL语句对应的子连接池和与子连接池对应的访问路径,以此实现客户端与数据库的业务操作。
[0059]在本发明中,RAC中的一个节点对应一个实例。表信息内存区需要预先存储好各个业务表。另外,子连接池的个数需要根据RAC中的节点(实例)的个数确定。由于业务表中存储有子连接池与节点的对应关系,因此,在客户端进行业务操作请求时,能够快速的找到对应的节点。
[0060]本实施例提供的减小RAC节点间GC请求的方法,通过在表信息内存区中预先存储好不同的SQL语句对应的子连接池和节点之间的访问规则,当接收到客户端发送的业务操作请求时,如果业务操作请求中的SQL语句对应的表名称在业务表中存在,那么直接接通该SQL语句对应的子连接池和节点即可,如果业务操作请求中的SQL语句对应的表名称不在业务表中存在,那么直接为该SQL语句分配一条访问路径,然后接通该SQL语句对应的子连接池和节点即可。由此可见,该方法减少了由于在不同节点访问相同表而造成的大量GC同步请求,减少了 RAC私网间传输的数据量,提高了 SQL语句的执行效率。
[0061 ]作为一种优选地实施方式,在上述实施例的基础上,还包括:
[0062]周期性地查询数据库中表的GC同步信息;
[0063]判断GC同步信息是否超出预设同步量,如果是,则修改超出预设同步量的业务表中的访问路径;
[0064]更新表信息内存区。
[0065]当客户端正常访问数据库时,数据库中表就存储了各节点的GC同步信息。本实施例中,通过周期性地查询数据库中表的GC同步信息就可以获取各个节点的GC同步量,如果判断出某个节点的GC同步量超出了预设同步量,说明对应的业务表的访问路径规划不够合理,因此需要修改超出预设同步量的业务表中的访问路径,然后将修改后业务表添加到表信息内存区,实现表信息内存区的更新。需要说明的是本实施例中的周期可以为任意的时间,优选地可以为5分钟。
[0066]作为一种优选地实施方式,在上述实施例的基础上,还包括:
[0067]周期性地检测节点的运行状态;
[0068]根据运行状态判断节点是否出现故障,如果是,则修改出现故障的节点的业务表中的访问路径;
[0069]更新表信息内存区。
[0070]当客户端正常访问数据库时,各节点有可能出现故障,如果节点出现故障而没有被发现时,则会造成访问混乱,甚至无法访问的问题。因此,本实施例中,通过查询周期性地检测各节点的运行状态,如果根据运行状态判断出某个节点的出现故障,说明当前的子连接池与该节点已经无法正常接通,需要修改出现故障的节点的业务表中的访问路径,然后将修改后业务表添加到表信息内存区,实现表信息内存区的更新。需要说明的是本实施例中的周期可以为任意的时间,优选地可以为1秒。
[0071 ]作为一种优选地实施方式,在上述实施例的基础上,还包括:
[0072]当出现故障的节点的运行状态恢复正常后,则初始化出现故障的节点的业务表中的访问路径。
[0073]在上一实施例中,如果某一个节点出现了故障,则改变了 SQL语句对应的业务表。但是在具体实施中,该节点的故障有可能会被解除,从而恢复正常的运行状态,因此,需要检查出现故障的节点的运行状态,当运行状态恢复正常后,就初始化该节点的业务表中的访问路径。这里的初始化就是将该节点当前的访问路径恢复至出现故障前的访问路径。例如,出现故障前为子连接池A与节点I接通,出现故障后,将子连接池A与节点3接通,当该节点恢复正常后,将子连接池A重新与节点I接通,断开与节点3。
[0074]作为一种优选地实施方式,在上述各实施例的基础上,业务表的数据结构包括:表名称、用户名、表的节点、表的GC同步量、表的子连接池。
[0075]需要说明的是本领实施例中业务表的数据结构如上,而至于每个具体的信息是否有真实的内容不做限定。例如,在客户端与数据库还没有真正开始访问时,表的GC同步量是没有真实内容的,可以是一个随机的初始化值,也可以为O。表名称是与SQL语句对应的,因此,我们可以通过解析SQL语句得到表名称。用户名是获取数据源中配置的数据库用户名。
[0076]图2为本发明提供的一种减小RAC节点间GC请求的装置的结构图。如图2所示,减小RAC节点间GC请求的装置,包括:
[0077]接收单元10,用于接收客户端发送的业务操作请求,业务操作请求包含SQL语句;
[0078]连接池服务进程单元11,用于根据SQL语句解析SQL语句对应的表名称,判断SQL语句对应的表名称是否存在于表信息内存区12的业务表中;
[0079]如果是,则根据业务表的访问规则接通SQL语句对应的子连接池和与子连接池对应的访问路径;
[0080]如果否,则为SQL语句分配访问路径,然后接通SQL语句对应的子连接池和与子连接池对应的访问路径;
[0081]其中,多个子连接池与RAC中的多个节点——对应,每个业务表中包含有子连接池与节点的对应关系,多个业务表存储于表信息内存区。
[0082]在具体实施中,客户端通过向数据库中发送业务操作请求以实现相应的数据调用等功能。本实施例中,通过子连接池将RAC中的节点连接,以此完成客户端向数据库的业务操作请求。具体是,一个子连接池与一个节点对应,当接收到客户端发送的业务操作请求时,根据业务操作请求中的SQL语句解析SQL语句对应的表名称,判断SQL语句对应的表名称是否存在于表信息内存区的业务表中。表信息内存区用于存储多个业务表,每个业务表中存储有子连接池与节点的对应关系。需要说明的是,业务表虽然有很多,但是并不代表存储了全部的SQL语句对应的表名称,因此,不同的客户端或者相同的客户端的SQL语句不同,那么有两种情况:
[0083]第一,表信息内存区存在与该表名称相同的业务表
[0084]通过SQL语句解析出表名称时,就可以在表信息内存区找到与该表名称相同的业务表,然后根据业务表中的访问规则接通SQL语句对应的子连接池和与子连接池对应的访问路径,以此实现客户端与数据库的业务操作。由于业务表中存储有子连接池与节点的对应关系,因此,在客户端进行业务操作请求时,能够快速的找到对应的节点。
[0085]第二,表信息内存区不存在与该表名称相同的业务表
[0086]通过SQL语句解析出表名称时,如果在表信息内存区没有找到与该表名称相同的业务表,那么需要新建立一条访问路径(建立一条子连接池与节点的对应关系),建立好访问路径后,就形成了一个新的业务表,根据新业务表中的访问规则接通SQL语句对应的子连接池和与子连接池对应的访问路径,以此实现客户端与数据库的业务操作。
[0087]在本发明中,RAC中的一个节点对应一个实例。表信息内存区需要预先存储好各个业务表。另外,子连接池的个数需要根据RAC中的节点(实例)的个数确定。由于业务表中存储有子连接池与节点的对应关系,因此,在客户端进行业务操作请求时,能够快速的找到对应的节点。
[0088]本实施例提供的减小RAC节点间GC请求的装置,通过在表信息内存区中预先存储好不同的SQL语句对应的子连接池和节点之间的访问规则,当接收到客户端发送的业务操作请求时,如果业务操作请求中的SQL语句对应的表名称在业务表中存在,那么直接接通该SQL语句对应的子连接池和节点即可,如果业务操作请求中的SQL语句对应的表名称不在业务表中存在,那么直接为该SQL语句分配一条访问路径,然后接通该SQL语句对应的子连接池和节点即可。由此可见,该装置减少了由于在不同节点访问相同表而造成的大量GC同步请求,减少了 RAC私网间传输的数据量,提高了 SQL语句的执行效率。
[0089]图3为本发明提供的另一种减小RAC节点间GC请求的装置的结构图。作为一种优选地实施方式,还包括:连接池进程维护单元13,连接池进程维护单元13具体包括:
[0090]查询子单元,用于周期性地查询数据库中表的GC同步信息;
[0091]第一判断子单元,用于判断GC同步信息是否超出预设同步量,如果是,则修改超出预设同步量的业务表中的访问路径;
[0092]更新子单元,用于更新表信息内存区。
[0093]作为一种优选地实施方式,连接池进程维护单元13还包括:
[0094]检测子单元,用于周期性地检测节点的运行状态;
[0095]第二判断子单元,用于根据运行状态判断节点是否出现故障,如果是,则修改出现故障的节点的业务表中的访冋路径;
[0096]更新子单元,用于更新表信息内存区。
[0097]作为一种优选地实施方式,连接池进程维护单元13还包括:
[0098]初始化子单元,用于当出现故障的节点的运行状态恢复正常后,则初始化出现故障的节点的业务表中的访问路径。
[0099]作为一种优选地实施方式,业务表的数据结构包括:表名称、用户名、表的节点、表的GC同步量、表的子连接池。
[0100]由于方法部分的实施例在上文中已经进行了详细的描述,因此装置部分的实施例请参见方法部分的实施例即可,这里暂不赘述。另外,图2和图3中,节点I和节点2,以及子连接池A和子连接池B都是一种具体的表现形式,并不代表只有2个节点和2个子连接池。
[0101]以上对本发明所提供的减小RAC节点间GC请求的方法及装置进行了详细介绍。说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。
[0102]专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
[0103]结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(R0M)、电可编程R0M、电可擦除可编程R0M、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
【主权项】
1.一种减小RAC节点间GC请求的方法,其特征在于,包括: 接收客户端发送的业务操作请求,所述业务操作请求包含SQL语句; 根据所述SQL语句解析所述SQL语句对应的表名称,判断所述SQL语句对应的表名称是否存在于表信息内存区的业务表中; 如果是,则根据所述业务表的访问规则接通所述SQL语句对应的子连接池和与所述子连接池对应的访问路径; 如果否,则为所述SQL语句分配访问路径,然后接通所述SQL语句对应的子连接池和与所述子连接池对应的访问路径; 其中,多个所述子连接池与所述RAC中的多个节点一一对应,每个业务表中包含有子连接池与节点的对应关系,多个业务表存储于表信息内存区。2.根据权利要求1所述的方法,其特征在于,还包括: 周期性地查询数据库中表的GC同步信息; 判断所述GC同步信息是否超出预设同步量,如果是,则修改超出所述预设同步量的业务表中的访问路径; 更新所述表信息内存区。3.根据权利要求1所述的方法,其特征在于,还包括: 周期性地检测所述节点的运行状态; 根据所述运行状态判断所述节点是否出现故障,如果是,则修改出现故障的节点的业务表中的访问路径; 更新所述表信息内存区。4.根据权利要求3所述的方法,其特征在于,还包括: 当所述出现故障的节点的运行状态恢复正常后,则初始化所述出现故障的节点的业务表中的访问路径。5.根据权利要求1至4任意一项所述的方法,其特征在于,所述业务表的数据结构包括:表名称、用户名、表的节点、表的GC同步量、表的子连接池。6.一种减小RAC节点间GC请求的装置,其特征在于,包括: 接收单元,用于接收客户端发送的业务操作请求,所述业务操作请求包含SQL语句;连接池服务进程单元,用于根据所述SQL语句解析所述SQL语句对应的表名称,判断所述SQL语句对应的表名称是否存在于表信息内存区的业务表中; 如果是,则根据所述业务表的访问规则接通所述SQL语句对应的子连接池和与所述子连接池对应的访问路径; 如果否,则为所述SQL语句分配访问路径,然后接通所述SQL语句对应的子连接池和与所述子连接池对应的访问路径; 其中,多个所述子连接池与所述RAC中的多个节点一一对应,每个业务表中包含有子连接池与节点的对应关系,多个业务表存储于表信息内存区。7.根据权利要求6所述的装置,其特征在于,还包括:连接池进程维护单元,所述连接池进程维护单元具体包括: 查询子单元,用于周期性地查询数据库中表的GC同步信息; 第一判断子单元,用于判断所述GC同步信息是否超出预设同步量,如果是,则修改超出所述预设同步量的业务表中的访问路径; 更新子单元,用于更新所述表信息内存区。8.根据权利要求6所述的装置,其特征在于,所述连接池进程维护单元还包括: 检测子单元,用于周期性地检测所述节点的运行状态; 第二判断子单元,用于根据所述运行状态判断所述节点是否出现故障,如果是,则修改出现故障的节点的业务表中的访问路径; 更新子单元,用于更新所述表信息内存区。9.根据权利要求8所述的装置,其特征在于,所述连接池进程维护单元还包括: 初始化子单元,用于当所述出现故障的节点的运行状态恢复正常后,则初始化所述出现故障的节点的业务表中的访问路径。10.根据权利要求6-9任意一项所述的装置,其特征在于,所述业务表的数据结构包括:表名称、用户名、表的节点、表的GC同步量、表的子连接池。
【文档编号】G06F11/20GK105975481SQ201610258541
【公开日】2016年9月28日
【申请日】2016年4月22日
【发明人】马国良, 陈良华, 杜彦魁
【申请人】浪潮(北京)电子信息产业有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1