CN105808556A - 一种数据库的操作方法及数据库引擎 - Google Patents
一种数据库的操作方法及数据库引擎 Download PDFInfo
- Publication number
- CN105808556A CN105808556A CN201410842559.9A CN201410842559A CN105808556A CN 105808556 A CN105808556 A CN 105808556A CN 201410842559 A CN201410842559 A CN 201410842559A CN 105808556 A CN105808556 A CN 105808556A
- Authority
- CN
- China
- Prior art keywords
- application server
- data base
- database engine
- lock
- database
- 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
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例公开了一种数据库的操作方法,用于缩短用于程序的响应时间,提升用户体验。本发明实施例方法包括:数据库引擎接收应用服务器对数据库的写入请求;所述数据库引擎根据所述写入请求对所述数据库设置共享锁,并向所述应用服务器发送第一响应消息,以使所述应服务器对设置有共享锁的所述数据库执行内存写入操作;所述数据库引擎接收所述应用服务器对设置有共享锁的所述数据库的读取请求,并向所述应用服务器发送第二响应消息,以使所述应用服务器对设置有共享锁的所述数据库执行读取操作。本发明实施例还公开了一种数据库引擎,用于缩短用于程序的响应时间,提升用户体验。
Description
技术领域
本发明涉及通信技术领域,尤其涉及一种数据库的操作方法及数据库引擎。
背景技术
移动终端的数据库,大都采取库级锁定,在对数据库进行读写操作时,为了保证不出现数据的并发问题,现有技术的做法是采用单队列串行方式来进行读写操作,也就是对数据库同时只能有一个读或者一个写操作,这样可以保证不会有数据库锁定的错误返回,因此不需要处理锁定逻辑,使得数据库的操作逻辑简单,降低了编码的复杂度。
然而,本领域技术人员发现,现有技术采用串行读写数据库,虽然降低了编码的复杂度,但由于同时只能有一个读或者一个写操作,对于数据库的操作效率很低,其它操作实际上需要排队等候,用户在使用应用程序时,响应缓慢,用户体验差。
发明内容
本发明实施例提供了一种数据库的操作方法及数据库引擎,用于缩短用于程序的响应时间,提升用户体验。
本发明实施例第一方面提供一种数据库的操作方法,包括:
数据库引擎接收应用服务器对数据库的写入请求;
所述数据库引擎根据所述写入请求对所述数据库设置共享锁,并向所述应用服务器发送第一响应消息,以使所述应服务器对设置有共享锁的所述数据库执行内存写入操作;
所述数据库引擎接收所述应用服务器对设置有共享锁的所述数据库的读取请求,并向所述应用服务器发送第二响应消息,以使所述应用服务器对设置有共享锁的所述数据库执行读取操作。
结合本发明实施例的第一方面,在本发明实施例第一方面的第一种实现方式中,在所述数据服务器向所述应用服务器发送第二响应消息之后,还包括:
当确定所述应用服务器执行完所述内存写入操作和所述读取操作时,所述数据库引擎将所述共享锁更新为排它锁,以限制所述应用服务器对设置有排它锁的所述数据库执行读取操作,并使所述应用服务器对设置有排它锁的所述数据库执行磁盘写入操作。
结合本发明实施例的第一方面的第一种实现方式,在本发明实施例第一方面的第二种实现方式中,在所述数据库引擎将所述共享锁更新为排它锁之后,还包括:
当确定满足预置条件时,所述数据库引擎终止所述磁盘写入操作并释放所述排它锁。
结合本发明实施例的第一方面的第二种实现方式,在本发明实施例第一方面的第三种实现方式中,所述数据库引擎确定满足预置条件包括:
所述数据库引擎记录所述应用服务器对设置有排它锁的所述数据库执行磁盘写入操作的时长;
所述数据库引擎确定所述时长大于预设时长。
结合本发明实施例的第一方面或第一方面的第一种实现方式或第一方面的第二种实现方式或第一方面的第三种实现方式,在本发明实施例第一方面的第四种实现方式中,在所述数据库引擎向所述应用服务器发送第二响应消息之前还包括:
所述数据库引擎创建数据库连接池,所述数据库连接池中保存有与所述数据库对应的数据库连接。
本发明实施例第二方面提供一种数据库引擎器,包括:
第一接收单元,用于接收应用服务器对数据库的写入请求;
第一设置单元,用于根据所述写入请求对所述数据库设置共享锁;
第一发送单元,用于向所述应用服务器发送第一响应消息,以使所述应服务器对设置有共享锁的所述数据库执行内存写操作;
第二接收单元,用于接收所述应用服务器对设置有共享锁的所述数据库的读取请求;
第二发送单元,用于向所述应用服务器发送第二响应消息,以使所述应用服务器对设置有共享锁的所述数据库执行读取操作。
结合本发明实施例第二方面,在本发明实施例第二方面的第一种实现方式中,还包括:
用于更新单元,用于当确定所述应用服务器执行完所述内存写入操作和所述读取操作时,将所述共享锁更新为排它锁,以限制所述应用服务器对设置有排它锁的所述数据库执行读取操作,并使所述应用服务器对设置有排它锁的所述数据库执行磁盘写入操作。
结合本发明实施例第二方面的第一种实现方式,在本发明实施例第二方面的第二种实现方式中,还包括:
确定单元,用于确定满足预置条件;
处理单元,用于当确定满足预置条件时,终止所述磁盘写入操作并释放所述排它锁。
结合本发明实施例第二方面的第二种实现方式,在本发明实施例第二方面的第三种实现方式中,所述确定单元包括:
记录模块,用于记录所述应用服务器对设置有排它锁的所述数据库执行磁盘写入操作的时长;
确定模块,用于确定所述时长大于预设时长。
结合本发明实施例第二方面或第二方面的第一种实现方式或第二方面的第二种实现方式或第二方面的第三种实现方式,在本发明实施例第二方面的第四种实现方式中,还包括:
创建单元,用于创建数据库连接池,所述数据库连接池中保存有与所述数据库对应的数据库连接。
应用本发明实施例的技术方案,具有如下有益效果:
在接收到应用服务器对数据库的写入请求时,数据库引擎对该数据库设置共享锁,使应用服务器可以对设置有共享锁的数据库进行读取操作,从而实现对数据库同时执行读取操作与写入操作,提升数据库的操作效率,缩短应用程序的响应时间,提升用户体验。
附图说明
图1为本发明实施例中一种数据库操作方法的一个实施例示意图;
图2为本发明实施例中一种数据库操作方法的另一个实施例示意图;
图3为本发明实施例中一种数据库操作方法的另一个实施例示意图;
图4为本发明实施例中一种数据库引擎的一个实施例示意图;
图5为本发明实施例中一种数据库引擎的另一个实施例示意图;
图6为本发明实施例中一种数据库引擎的另一个实施例示意图;
图7为本发明实施例中一种数据库引擎的另一个实施例示意图。
具体实施方式
本发明实施例提供了一种数据库的操作方法及数据库引擎,用于缩短用于程序的响应时间,提升用户体验。
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例描述的各种技术可用于各种通信***,例如全球移动通信(GSM,globalsystemformobilecommunication)等2G通信***,宽带码分多址(WCDMA,widebandcodedivisionmultipleaccess),时分同步码分多址(TD-SCDMA,timedivision-synchronizationcodedivisionmultipleaccess)等3G通信***,长期演进(LTE,long-termevolution)通信***及其后续演进***等下一代通信***。
本发明实施例中的数据库引擎可以适用于移动终端,例如:手机、平板电脑等,也可以是适用于固定的终端设备,例如:个人电脑等,具体实现的数据库引擎本发明实施例不予限定。
请参阅图1,本发明实施例中一种数据库操作方法的一个实施例包括:
101、数据库引擎接收应用服务器对数据库的写入请求。
数据库引擎是用于存储、处理和保护数据的核心服务,利用数据库引擎可控制访问权限并快速处理事务,从而满足需要处理大量数据的应用程序的要求。
可以理解的是,当用户用终端执行应用程序时,具体通过对数据库的操作而实现,此时可以通过应用服务器可以向数据库引擎发送写入请求。
102、所述数据库引擎根据所述写入请求对所述数据库设置共享锁。
可以理解的是,由于数据库是一个共享资源,可以通过对数据库加锁,使应用服务器对数据库同时进行读写并发操作。
数据库引擎在接收到应用服务器发送的写入操作请求时,可以对该应用服务器需要进行写入操作的数据库,设置共享锁,使用户终端可以通过该应用服务器对该数据库同时执行读取操作。
103、所述数据库引擎向所述应用服务器发送第一响应消息,以使所述应服务器对设置有共享锁的所述数据库执行内存写入操作。
可以理解的是,应用服务器对数据库进行写入操作一般包括两个阶段,第一个阶段为对数据库的内存写入阶段,第二个阶段为对数据库的磁盘写入阶段,因此当数据库引擎在接收到应用服务器发送的写入请求时,该数据库引擎可以向该应用服务器发送第一响应消息,从而使该应用服务器开始执行内存写入操作。
104、所述数据库引擎接收所述应用服务器对设置有共享锁的所述数据库的读取请求,并向所述应用服务器发送第二响应消息,以使所述应用服务器对设置有共享锁的所述数据库执行读取操作。
可以理解的是,由于该数据库引擎对数据库设置了共享锁,因此,当应用服务器向设置有共享锁的该数据库发送读取请求时,该数据库引擎可以向该应用服务器发送响应消息,使该应用服务器对设置有共享锁的数据库执行读取操作。
本发明实施例中,在接收到应用服务器对数据库的写入请求时,数据库引擎对该数据库设置共享锁,使应用服务器可以对设置有共享锁的数据库进行读取操作,从而实现对数据库同时执行读取操作与写入操作,提升数据库的操作效率,缩短应用程序的响应时间,提升用户体验。
上面实施例中,数据库引擎对数据库设置共享锁,从而实现应用服务器对在对数据库执行内存写入操作时,同时执行对数据库的读取操作,可选地,该数据库引擎还可以对数据库的共享锁进行更新,下面对本发明实施例中的一种数据库操作方法的另外一个实施例进行描述。
请参阅图2,本发明实施例中一种数据库操作方法的另外一个实施例,具体包括:
201、数据库引擎接收应用服务器对数据库的写入请求。
数据库引擎是用于存储、处理和保护数据的核心服务,利用数据库引擎可控制访问权限并快速处理事务,从而满足需要处理大量数据的应用程序的要求。
可以理解的是,当用户用终端执行应用程序时,具体通过对数据库的操作而实现,此时可以通过应用服务器可以向数据库引擎发送写入请求。
202、所述数据库引擎根据所述写入请求对所述数据库设置共享锁。
可以理解的是,由于数据库是一个共享资源,可以通过对数据库加锁,使应用服务器对数据库同时进行读写并发操作。
数据库引擎在接收到应用服务器发送的写入操作请求时,可以对该应用服务器需要进行写入操作的数据库,设置共享锁,使用户终端可以通过该应用服务器对该数据库同时执行读取操作。
203、所述数据库引擎向所述应用服务器发送第一响应消息,以使所述应服务器对设置有共享锁的所述数据库执行内存写入操作。
可以理解的是,应用服务器对数据库进行写入操作一般包括两个阶段,第一个阶段为对数据库的内存写入阶段,第二个阶段为对数据库的磁盘写入阶段,因此当数据库引擎在接收到应用服务器发送的写入请求时,该数据库引擎可以向该应用服务器发送第一响应消息,从而使该应用服务器开始执行内存写入操作。
204、所述数据库引擎接收所述应用服务器对设置有共享锁的所述数据库的读取请求,并向所述应用服务器发送第二响应消息,以使所述应用服务器对设置有共享锁的所述数据库执行读取操作。
可以理解的是,由于该数据库引擎对数据库设置了共享锁,因此,当应用服务器向设置有共享锁的该数据库发送读取请求时,该数据库引擎可以向该应用服务器发送响应消息,使该应用服务器对设置有共享锁的数据库执行读取操作。
205、数据库引擎判断所述应用服务器是否执行完所述内存写入操作和所述读取操作。
可以理解的是,在应用服务器对数据库执行读取操作和内存写入操作时,该数据库引擎可以周期性或非周期性地对数据库中的数据进行检测,从而判断出该应用服务器是否执行完对该数据库的内存写入操作和读取操作,若否,则执行步骤206,若是,则执行步骤207。
需要说明的是,数据库引擎判断应用服务器是否执行完内存写入操作和读取操作的方式可以有多种,比如在应用服务器对该数据库执行写入操作之前,数据库中保存的数据为1,当应用服务器开始执行写入操作时,该数据库引擎检测出1被修改为2,此时该数据库引擎可以确定应用服务器执行完写入操作,此外还可以当应用服务器读取该数据1时,在该数据中记录读取标识,当该数据引擎检测到该读取标识时,可以确定应用服务器执行完读取操作。或者还可以为,该应用服务器在执行完内存写入操作时和读取操作时,向数据库引擎发送反馈消息,该数据库引擎可以通过是否接收到该反馈消息,从而判断出应用服务器是否执行完内存写入操作和读取操作,在实际应用中,还可以由更多的方式,具体此处不作限定。
206、所述数据库引擎重复判断所述应用服务器是否执行完所述内存写入操作和所述读取操作。
可以理解的是,当其中内存写入操作或读取操作没有执行完是,该数据库引擎重复进行判断,直到全部执行完毕。
可选地,该数据库引擎可以预先设置重复判断的时长,如果在预设时长内,应用服务器仍然没有全部执行完,则该数据库引擎可以对未执行完的操作进行终止,以防止数据库无限进行判断和等待,避免出现数据库死锁。
207、所述数据库引擎将所述共享锁更新为排它锁,以限制所述应用服务器对设置有排它锁的所述数据库执行读取操作,并使所述应用服务器对设置有排它锁的所述数据库执行磁盘写入操作。
可以理解的是,该数据库引擎在判断出应用服务器执行完内存写入操作和读取操作之后,该数据库引擎将共享锁更新为排它锁,并向应用服务器发送通知消息,使该应用服务器继续执行磁盘写入操作,同时由于该数据库中设置有排它锁,该应用服务器无法在服务器执行磁盘写入操作期间,同时执行读取操作。
本发明实施例中,在接收到应用服务器对数据库的写入请求时,数据库引擎对该数据库设置共享锁,使应用服务器可以对设置有共享锁的数据库进行读取操作,从而实现对数据库同时执行读取操作与写入操作,提升数据库的操作效率,缩短应用程序的响应时间,提升用户体验;此外,该数据库引擎将共享锁更新为排它锁,从而防止应用服务器在执行磁盘写入操作时,限制对数据库进行读取操作,可起到避免发生数据库死锁的现象。
上面实施例中,数据库引擎将共享锁更新为排它锁,在实际应用中,在数据库引擎将共享锁更新为排它锁之后,当确定满足预置条件时,终止磁盘写入操作并释放排它锁。下面对本发明实施例中的一种数据库操作方法的另外一个实施例进行描述。
请参阅图3本发明实施例中,一种数据库操作方法的另一个实施例包括:
301、数据库引擎接收应用服务器对数据库的写入请求。
302、所述数据库引擎根据所述写入请求对所述数据库设置共享锁。
303、所述数据库引擎向所述应用服务器发送第一响应消息,以使所述应服务器对设置有共享锁的所述数据库执行内存写入操作。
本发明实施中,步骤301至步骤303的执行方法,与图2对应的实施例相同,具体此处不再赘述。
可选的,本实施例中的步骤303之后还包括步骤304。
304、所述数据库引擎创建数据库连接池。
可以理解的是,数据库引擎可以获取数据库的地址,并根据数据库的地址生成与其对应的数据库连接,从而使应用服务器可以通过数据库连接即可直接对数据库执行读取操作,可起到提升应用服务器执行读取操作的效率。
需要说明的是,数据库引擎创建数据库连接池,该数据库连接池可以存储多个数据库连接,从而实现应用服务器对数据库执行并行读取操作。
305、所述数据库引擎接收所述应用服务器对设置有共享锁的所述数据库的读取请求,并向所述应用服务器发送第二响应消息,以使所述应用服务器对设置有共享锁的所述数据库执行读取操作。
306、数据库引擎判断所述应用服务器是否执行完所述内存写入操作和所述读取操作。
307、所述数据库引擎重复判断所述应用服务器是否执行完所述内存写入操作和所述读取操作。
308、所述数据库引擎将所述共享锁更新为排它锁,以限制所述应用服务器对设置有排它锁的所述数据库执行读取操作,并使所述应用服务器对设置有排它锁的所述数据库执行磁盘写入操作。
本发明实施中,步骤305至步骤308的执行方法,与图2对应的实施例相同,具体此处不再赘述。
可选地,在步骤307之后,还包括步骤308。
309、判断是否满足预置条件,若是则执行步骤310,若是,则执行步骤311。
可选地,本实施例中数据库引擎判断是否满足预置条件包括至少如下两种方式:
一、所述数据库引擎确定应用服务器对数据库执行磁盘写入的时长是否大于预设时长。
可以理解的是,所述数据库引擎可以记录所述应用服务器对设置有排它锁的所述数据库执行磁盘写入操作的时长,具体地,该数据库引擎可以在对共享锁进行更新时,启动定时器,并在该定时器的时长设定为预设时长,若应用服务器在定时器超时前,执行完成磁盘写入操作,则确定不满足预置条件,若应用服务器在定时器超时前,未执行完磁盘写入操作,则确定满足预置条件。
需要说明的是,数据库引擎可以通过确定是否接收到,应用服务器发送的用于表示磁盘写入执行操作完毕的反馈消息,从而确定是否完成磁盘写入操作的执行方法,在实际应用中,该数据库引擎还可以通过周期性或非周期性对数据库中的数据进行检测,从而确定是否完成磁盘写入操作,或者还可以通过其他方式,具体此处不作限定。
需要说明的是,该预设的时长可以根据实际需要进行调整,具体此处不作限定,通过设置应用服务器磁盘写入操作的时长,可以防止因硬件或软件产生故障无法完成对磁盘的写入操作,而出现数据库因一直被设置排它锁,导致数据库一直无法被执行读取操作的瘫痪状态。
二、所述数据库引擎确定接收到所述应用服务器发送的读取请求的次数是否大于阈值。
可以理解的是,数据库引擎在对数据库设置排它锁之后,由于应用服务器无法对数据库执行读取操作,应用服务器将向数据库引擎不断发送读取请求,此时该数据库引擎可以通过计数器记录该应用服务器发送读取请求的次数,若该次数大于阈值时,则确定满足预置条件,若该次数小于阈值,则确定不满足预置条件。
需要说明的是,该阈值可以根据实际需要进行更新和修改,具体此处不作限定,通过设置应用服务器发送读取请求的次数,可以解除因应用服务器不断发送读取请求而导致的数据库死锁现象。
310、结束流程。
可以理解的是,在数据库引擎确定不满足预置条件时,则结束流程。
311、所述数据库引擎终止所述磁盘写入操作并释放所述排它锁。
可以理解的是,在确定满足预置条件时,数据库引擎可以向应用服务器发送指令,用于使该应服务器终止对数据库的磁盘写入操作,并释放数据库中的排它锁。
本发明实施例中,该数据库引擎将确定满足预置条件时,将数据库中的排它锁释放,并终止应用服务器对数据库的磁盘写入操作,从而解除因应用服务器发生故障而无法在执行完磁盘写入操作时,产生的数据库数据死锁现象,提高数据库操作的稳定性。
上面对本发明实施例中的一种数据库的操作方法进行了描述,下面对本发明实施例中的一种数据库引擎进行描述,请参阅图4,本发明实施例中一种数据库引擎一个实施例包括:
第一接收单元401,用于接收应用服务器对数据库的写入请求。
第一设置单元402,用于根据所述写入请求对所述数据库设置共享锁。
第一发送单元403,用于向所述应用服务器发送第一响应消息,以使所述应服务器对设置有共享锁的所述数据库执行内存写操作。
第二接收单元404,用于接收所述应用服务器对设置有共享锁的所述数据库的读取请求。
第二发送单元405,用于向所述应用服务器发送第二响应消息,以使所述应用服务器对设置有共享锁的所述数据库执行读取操作。
可选地,所述数据库引擎还包括更新单元,请参阅图5,本发明实施例提供的一种数据库引擎的另外一个实施例,包括:
第一接收单元501,用于接收应用服务器对数据库的写入请求;第一设置单元502,用于根据所述写入请求对所述数据库设置共享锁;第一发送单元503,用于向所述应用服务器发送第一响应消息,以使所述应服务器对设置有共享锁的所述数据库执行内存写操作;第二接收单元504,用于接收所述应用服务器对设置有共享锁的所述数据库的读取请求;第二发送单元505,用于向所述应用服务器发送第二响应消息,以使所述应用服务器对设置有共享锁的所述数据库执行读取操作。
更新单元506,用于当确定所述应用服务器执行完所述内存写入操作和所述读取操作时,将所述共享锁更新为排它锁,以限制所述应用服务器对设置有排它锁的所述数据库执行读取操作,并使所述应用服务器对设置有排它锁的所述数据库执行磁盘写入操作。
可选地,所述数据库引擎还包括确定单元和处理单元,请参阅图6,本发明实施例提供的一种数据库引擎的另外一个实施例,包括:
第一接收单元601,用于接收应用服务器对数据库的写入请求;第一设置单元602,用于根据所述写入请求对所述数据库设置共享锁;第一发送单元603,用于向所述应用服务器发送第一响应消息,以使所述应服务器对设置有共享锁的所述数据库执行内存写操作;第二接收单元604,用于接收所述应用服务器对设置有共享锁的所述数据库的读取请求;第二发送单元605,用于向所述应用服务器发送第二响应消息,以使所述应用服务器对设置有共享锁的所述数据库执行读取操作。
可选的,所述数据库引擎还包括更新单元606,所述更新单元606用于当确定所述应用服务器执行完所述内存写入操作和所述读取操作时,将所述共享锁更新为排它锁,以限制所述应用服务器对设置有排它锁的所述数据库执行读取操作,并使所述应用服务器对设置有排它锁的所述数据库执行磁盘写入操作。
可选的,所述数据库引擎还包括确定单元607和处理单元608,其中,所述确定单元607,用于确定满足预置条件;所述处理单元608用于当确定满足预置条件时,终止所述磁盘写入操作并释放所述排它锁。
可选的,所述确定单元607具体包括记录模块6071和确定模块6072,其中,所述记录模块6071,用于记录所述应用服务器对设置有排它锁的所述数据库执行磁盘写入操作的时长;所述确定模块6072用于确定所述时长大于预设时长。
可选地,所述数据库引擎还包括创建单元,请参阅图7,本发明实施例提供的一种数据库引擎的另外一个实施例,包括:
第一接收单元71,用于接收应用服务器对数据库的写入请求;第一设置单元702,用于根据所述写入请求对所述数据库设置共享锁;第一发送单元703,用于向所述应用服务器发送第一响应消息,以使所述应服务器对设置有共享锁的所述数据库执行内存写操作。
可选的,所述数据库引擎还包括创建单元704,所述创建单元704用于创建数据库连接池,所述数据库连接池中保存有与所述数据库对应的数据库连接。
第二接收单元705,用于接收所述应用服务器对设置有共享锁的所述数据库的读取请求;第二发送单元706,用于向所述应用服务器发送第二响应消息,以使所述应用服务器对设置有共享锁的所述数据库执行读取操作。
可选的,所述数据库引擎还包括更新单元707,所述更新单元707用于当确定所述应用服务器执行完所述内存写入操作和所述读取操作时,将所述共享锁更新为排它锁,以限制所述应用服务器对设置有排它锁的所述数据库执行读取操作,并使所述应用服务器对设置有排它锁的所述数据库执行磁盘写入操作。
可选的,所述数据库引擎还包括确定单元708和处理单元709,其中,所述确定单元708,用于确定满足预置条件;所述处理单元709用于当确定满足预置条件时,终止所述磁盘写入操作并释放所述排它锁。
可选的,所述确定单元708具体包括记录模块7081和确定模块7082,其中,所述记录模块7081,用于记录所述应用服务器对设置有排它锁的所述数据库执行磁盘写入操作的时长;所述确定模块7082用于确定所述时长大于预设时长。
本发明实施例中的数据库引擎,当通过接收单元接收到应用服务器对数据库的写入请求时,通过设置单元对该数据库设置共享锁,使应用服务器可以对设置有共享锁的数据库进行读取操作,从而实现对数据库同时执行读取操作与写入操作,提升数据库的操作效率,缩短应用程序的响应时间,提升用户体验;进一步地,该数据库引擎还可以通过更新单元将共享锁更新为排它锁从而,防止应用服务器进行磁盘写入操作时,因同时执行读取操作而造成的死锁现象;进一步地,通过确定单元和处理单元,当磁盘写入超时时,终止磁盘写入操作并释放排它锁,从而避免发生死锁现象;进一步地,还可以通过创建单元创建数据库连接池,提升应用服务器对数据库执行读取操作的效率。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的***,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的***,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,RandomAccessMemory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (10)
1.一种数据库的操作方法,其特征在于,包括:
数据库引擎接收应用服务器对数据库的写入请求;
所述数据库引擎根据所述写入请求对所述数据库设置共享锁,并向所述应用服务器发送第一响应消息,以使所述应服务器对设置有共享锁的所述数据库执行内存写入操作;
所述数据库引擎接收所述应用服务器对设置有共享锁的所述数据库的读取请求,并向所述应用服务器发送第二响应消息,以使所述应用服务器对设置有共享锁的所述数据库执行读取操作。
2.根据权利要求1所述的方法,其特征在于,在所述数据服务器向所述应用服务器发送第二响应消息之后,还包括:
当确定所述应用服务器执行完所述内存写入操作和所述读取操作时,所述数据库引擎将所述共享锁更新为排它锁,以限制所述应用服务器对设置有排它锁的所述数据库执行读取操作,并使所述应用服务器对设置有排它锁的所述数据库执行磁盘写入操作。
3.根据权利要求2所述的方法,其特征在于,在所述数据库引擎将所述共享锁更新为排它锁之后,还包括:
当确定满足预置条件时,所述数据库引擎终止所述磁盘写入操作并释放所述排它锁。
4.根据权利要求3所述的方法,其特征在于,所述数据库引擎确定满足预置条件包括:
所述数据库引擎记录所述应用服务器对设置有排它锁的所述数据库执行磁盘写入操作的时长;
所述数据库引擎确定所述时长大于预设时长。
5.根据权利要求1至4中任一项所述的方法,其特征在于,在所述数据库引擎向所述应用服务器发送第二响应消息之前还包括:
所述数据库引擎创建数据库连接池,所述数据库连接池中保存有与所述数据库对应的数据库连接。
6.一种数据库引擎器,其特征在于,包括:
第一接收单元,用于接收应用服务器对数据库的写入请求;
第一设置单元,用于根据所述写入请求对所述数据库设置共享锁;
第一发送单元,用于向所述应用服务器发送第一响应消息,以使所述应服务器对设置有共享锁的所述数据库执行内存写操作;
第二接收单元,用于接收所述应用服务器对设置有共享锁的所述数据库的读取请求;
第二发送单元,用于向所述应用服务器发送第二响应消息,以使所述应用服务器对设置有共享锁的所述数据库执行读取操作。
7.根据权利要求6所述的数据库引擎,其特征在于,还包括:
用于更新单元,用于当确定所述应用服务器执行完所述内存写入操作和所述读取操作时,将所述共享锁更新为排它锁,以限制所述应用服务器对设置有排它锁的所述数据库执行读取操作,并使所述应用服务器对设置有排它锁的所述数据库执行磁盘写入操作。
8.根据权利要求7所述的数据库引擎,其特征在于,还包括:
确定单元,用于确定满足预置条件;
处理单元,用于当确定满足预置条件时,终止所述磁盘写入操作并释放所述排它锁。
9.根据权利要求8所述的数据库引擎,其特征在于,所述确定单元包括:
记录模块,用于记录所述应用服务器对设置有排它锁的所述数据库执行磁盘写入操作的时长;
确定模块,用于确定所述时长大于预设时长。
10.根据权利要求6至9中任一项所述的数据库引擎,其特征在于,还包括:
创建单元,用于创建数据库连接池,所述数据库连接池中保存有与所述数据库对应的数据库连接。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410842559.9A CN105808556B (zh) | 2014-12-29 | 2014-12-29 | 一种数据库的操作方法及数据库引擎 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410842559.9A CN105808556B (zh) | 2014-12-29 | 2014-12-29 | 一种数据库的操作方法及数据库引擎 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105808556A true CN105808556A (zh) | 2016-07-27 |
CN105808556B CN105808556B (zh) | 2020-02-11 |
Family
ID=56419935
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410842559.9A Active CN105808556B (zh) | 2014-12-29 | 2014-12-29 | 一种数据库的操作方法及数据库引擎 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105808556B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106874341A (zh) * | 2016-12-23 | 2017-06-20 | 航天星图科技(北京)有限公司 | 一种数据库同步方法 |
CN111026734A (zh) * | 2019-12-10 | 2020-04-17 | 北京北龙云海网络数据科技有限责任公司 | 一种数据库管理方法、***、装置及存储介质 |
WO2020177495A1 (zh) * | 2019-03-05 | 2020-09-10 | ***股份有限公司 | 一种数据库连接管理方法及装置、设备 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101063946A (zh) * | 2006-04-25 | 2007-10-31 | 英业达股份有限公司 | 一种设备锁定管理方法 |
CN102170466A (zh) * | 2011-03-29 | 2011-08-31 | 中国人民解放军国防科学技术大学 | 一种数据处理方法及*** |
US20140270127A1 (en) * | 2013-03-15 | 2014-09-18 | Avaya Inc. | Shared lock control |
-
2014
- 2014-12-29 CN CN201410842559.9A patent/CN105808556B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101063946A (zh) * | 2006-04-25 | 2007-10-31 | 英业达股份有限公司 | 一种设备锁定管理方法 |
CN102170466A (zh) * | 2011-03-29 | 2011-08-31 | 中国人民解放军国防科学技术大学 | 一种数据处理方法及*** |
US20140270127A1 (en) * | 2013-03-15 | 2014-09-18 | Avaya Inc. | Shared lock control |
Non-Patent Citations (2)
Title |
---|
吴晓志等: "《实用计算机基础(第二版)》", 1 October 2014, 石油工业出版社 * |
桑德里克等: "《SQL Server 2000存储过程与XML编程》", 31 December 2003, 清华大学额出版社 * |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106874341A (zh) * | 2016-12-23 | 2017-06-20 | 航天星图科技(北京)有限公司 | 一种数据库同步方法 |
CN106874341B (zh) * | 2016-12-23 | 2022-04-05 | 中科星图股份有限公司 | 一种数据库同步方法 |
WO2020177495A1 (zh) * | 2019-03-05 | 2020-09-10 | ***股份有限公司 | 一种数据库连接管理方法及装置、设备 |
CN111026734A (zh) * | 2019-12-10 | 2020-04-17 | 北京北龙云海网络数据科技有限责任公司 | 一种数据库管理方法、***、装置及存储介质 |
CN111026734B (zh) * | 2019-12-10 | 2020-11-13 | 北京北龙云海网络数据科技有限责任公司 | 一种数据库管理方法、***、装置及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN105808556B (zh) | 2020-02-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9223564B2 (en) | Update systems responsive to ongoing processing at a storage system | |
CN107911249B (zh) | 一种网络设备的命令行发送方法、装置和设备 | |
CN103248711A (zh) | 一种文件上传的方法和服务器 | |
CN105260136A (zh) | 数据读写方法及分布式存储*** | |
CN105468300A (zh) | Ip硬盘的管理方法和装置 | |
CN104951342A (zh) | 一种调整启动顺序的方法及装置 | |
CN102937904A (zh) | 一种多节点固件升级方法和装置 | |
CN104932922A (zh) | 一种调整sas卡硬盘启动顺序的方法及装置 | |
CN103580918B (zh) | 一种配置数据处理方法及装置 | |
WO2016183918A1 (zh) | 存储空间处理方法及装置 | |
CN110333876A (zh) | 一种数据清除方法及控制设备 | |
CN104092763A (zh) | 一种应用程序安装包推送方法及装置 | |
CN103812945A (zh) | 一种数据升级的方法和中心服务器 | |
CN105808556A (zh) | 一种数据库的操作方法及数据库引擎 | |
CN105243042A (zh) | 数据烧录方法和数据烧录装置 | |
CN103577469A (zh) | 数据库连接复用方法和装置 | |
CN103970512A (zh) | 多核处理器及其并行重放方法 | |
CN103744911A (zh) | 一种视频文件扫描方法及电子设备 | |
CN102393838A (zh) | 数据处理方法及装置、pci-e总线***、服务器 | |
US20070220176A1 (en) | Method and apparatus for injecting errors into SAS domains through SAS expanders | |
CN104506630A (zh) | 基于用户角色的权限数据生成方法、服务器及*** | |
US10761940B2 (en) | Method, device and program product for reducing data recovery time of storage system | |
CN106708445A (zh) | 链路选择方法及装置 | |
CN115525234A (zh) | 免跨控raid条带锁的多控存储***的数据迁移方法及*** | |
CN102523112A (zh) | 信息处理方法及设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |