CN106469156B - 数据库读写方法及装置 - Google Patents

数据库读写方法及装置 Download PDF

Info

Publication number
CN106469156B
CN106469156B CN201510505796.0A CN201510505796A CN106469156B CN 106469156 B CN106469156 B CN 106469156B CN 201510505796 A CN201510505796 A CN 201510505796A CN 106469156 B CN106469156 B CN 106469156B
Authority
CN
China
Prior art keywords
connection
master
application
read operation
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.)
Active
Application number
CN201510505796.0A
Other languages
English (en)
Other versions
CN106469156A (zh
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.)
Huawei Device Co Ltd
Original Assignee
Huawei Device 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 Huawei Device Co Ltd filed Critical Huawei Device Co Ltd
Priority to CN201510505796.0A priority Critical patent/CN106469156B/zh
Publication of CN106469156A publication Critical patent/CN106469156A/zh
Application granted granted Critical
Publication of CN106469156B publication Critical patent/CN106469156B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1474Saving, restoring, recovering or retrying in transactions
    • 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/23Updating
    • G06F16/2358Change logging, detection, and notification

Abstract

本发明实施例公开了数据库读写方法及装置。数据库包含在终端中,数据库具有至少一个主连接和至少两个非主连接,主连接用于执行对数据库的写操作,非主连接用于执行对数据库的读操作,所述方法包括:终端获取对数据库的读操作;若读操作由第一应用发起,则使用第一非主连接执行读操作;第一应用为终端中的应用;其中,第一非主连接是预先设定的仅用于执行第一应用发起的读操作的非主连接;至少两个非主连接包括至少一个第一非主连接。采用本发明实施例所提供的方法及装置,第一非主连接仅用于执行第一应用发起的读操作,因此可以保证第一应用发起的读操作的执行效率不会受到其他应用读操作的影响。

Description

数据库读写方法及装置
技术领域
本发明实施例涉及终端领域,尤其涉及数据库读写方法及装置。
背景技术
为便于联系人信息的管理,现有终端通常采用联系人数据库保存联系人信息。终端上的应用可以通过读操作及写操作等数据库操作实现联系人信息的读写,从而实现快速拨号、联系人信息备份等功能。随着终端应用的日益多样化,需要读写联系人信息的应用也越来越多,从而使得终端所要处理的读操作及写操作也越来越多。
为了提高数据库操作的执行效率,现有技术通常会采用预写日志(Write-AheadLogging,简称WAL)模式对各个应用发起的读操作及写操作进行调度。在WAL模式下,数据库的连接被分为主连接与非主连接两类,其中主连接可以执行读操作和写操作,非主连接只用于执行读操作。终端在获取到应用发起的读操作后,首先检测是否存在空闲的非主连接;如果存在空闲的非主连接,则使用空闲的非主连接执行该读操作;如果非主连接均被占用而主连接空闲,则可以使用主连接执行该读操作;如果主连接及非主连接都被占用,则会将该读操作放入待执行读操作队列的队尾,等待非主连接空闲时按照队列顺序逐一执行待执行读操作队列中的各个读操作。终端接收到应用发起的写操作之后,检测是否存在空闲的主连接;如果存在空闲的主连接,则使用空闲的非主连接执行该写操作;如果主连都被占用,则会将该读操作放入待执行写操作队列的队尾,等待主连接空闲时按照队列顺序逐一执行待执行写操作队列中的各个写操作。
在实际使用中,存在对读操作执行效率较为敏感的特定应用,例如联系人应用等。如果该特定应用所发起的读操作执行效率过低,会造成这些应用或整个终端的用户体验下降。例如,如果联系人应用所发起的读操作执行效率过低,会导致终端联系人信息界面打开缓慢。而在WAL模式下,读操作执行效率受到并发的读操作数量影响,并发的读操作数量越多,读操作的执行效率越低。因此采用现有的WAL模式对各个应用发起的读操作及写操作进行调度,在并发的读操作比较多时,会严重影响读操作及写操作的执行效率,造成特定应用所发起读操作的执行效率低下。
发明内容
本发明实施例提供了数据库读写方法及装置,以解决在并发数据库操作较多时,读操作的执行效率低的问题。
第一方面,本发明实施例提供了一种数据库读写方法,所述数据库包含在终端中,所述数据库具有至少一个主连接和至少两个非主连接,所述主连接用于执行对所述数据库的写操作,所述非主连接用于执行对所述数据库的读操作,该方法包括:所述终端获取对所述数据库的读操作;若所述读操作由第一应用发起,则使用第一非主连接执行所述读操作;所述第一应用为所述终端中的应用;其中,所述第一非主连接是预先设定的仅用于执行所述第一应用发起的读操作的非主连接;所述至少两个非主连接包括至少一个所述第一非主连接。
结合第一方面,在第一方面第一种可能的实现方式中,所述方法还包括:若所述读操作由第二应用发起,则使用第二非主连接执行所述读操作;其中,所述第二应用与所述第一应用不同;所述第二非主连接是除所述第一非主连接之外的其它非主连接。
结合第一方面或第一方面第一种可能的实现方式,在第一方面第二种可能的实现方式中,所述方法还包括:若所述读操作由第二应用发起,则使用第二非主连接执行所述读操作;其中,所述第二应用与所述第一应用不同;所述第二非主连接是除所述第一非主连接之外的其它非主连接。
结合第一方面第二种可能的实现方式,在第一方面第三种可能的实现方式中,所述方法还包括:当所有的所述第一非主连接均被占用时,检测是否存在空闲的第二非主连接;当存在空闲的所述第二非主连接时,使用空闲的所述第二非主连接执行所述读操作;其中,所述第二非主连接是除所述第一非主连接之外的其它非主连接。
结合第一方面第三种可能的实现方式,在第一方面第四种可能的实现方式中,所述方法还包括:当所有的所述第二非主连接均被占用时,将所述读操作放入第一待处理队列中与所述第一应用的优先级所对应的位置。
结合第一方面或第一方面第一至四种可能的实现方式其中任意一种,在第一方面第五种可能的实现方式中,所述数据库为联系人数据库。
结合第一方面或第一方面第一至五种可能的实现方式其中任意一种,在第一方面第六种可能的实现方式中,所述第一应用为联系人应用。
结合第一方面或第一方面第一至六种可能的实现方式其中任意一种,在第一方面第七种可能的实现方式中,所述方法还包括:所述终端获取对所述数据库的写操作;检测是否存在空闲的主连接;当存在空闲的主连接时,使用所述主连接执行所述写操作;当所有的所述主连接均被占用时,如果所述写操作由所述第一应用发起,则将所述写操作放入第二待处理队列中与所述第一应用对应的位置。
第二方面,本发明实施例还提供了一种数据库读写装置,所述数据库包含在终端中,所述数据库具有至少一个主连接和至少两个非主连接,所述主连接用于执行对所述数据库的写操作,所述非主连接用于执行对所述数据库的读操作,所述装置包括:获取单元,用于获取对所述数据库的读操作;第一执行单元,用于在所述读操作由第一应用发起时,使用第一非主连接执行所述读操作;所述第一应用为所述终端中的应用;其中,所述第一非主连接是预先设定的仅用于执行所述第一应用发起的读操作的非主连接;所述至少两个非主连接包括至少一个所述第一非主连接。
结合第二方面,在第二方面第一种可能的实现方式中,该装置还包括:第二执行单元,用于在所述读操作由第二应用发起时,使用第二非主连接执行所述读操作;其中,所述第二应用与所述第一应用不同;所述第二非主连接是除所述第一非主连接之外的其它非主连接。
结合第二方面或第二方面第一种可能的实现方式,在第二方面第二种可能的实现方式中,所述第一执行单元包括:检测子单元,用于在所述读操作由所述第一应用发起时,检测是否存在空闲的所述第一非主连接;执行子单元,用于在存在空闲的所述第一非主连接时,使用空闲的所述第一非主连接执行所述读操作。
结合第二方面第二种可能的实现方式,在第二方面第三种可能的实现方式中,所述检测子单元,还用于在所有的所述第一非主连接均被占用时,检测是否存在空闲的第二非主连接;所述执行子单元,还用于在存在空闲的所述第二非主连接时,使用空闲的所述第二非主连接执行所述读操作;其中,所述第二非主连接是除所述第一非主连接之外的其它非主连接。
结合第二方面第三种可能的实现方式,在第二方面第四种可能的实现方式中,所述第一执行单元还包括:入队子单元,用于在所有的所述第二非主连接均被占用时,将所述读操作放入第一待处理队列中与所述第一应用的优先级所对应的位置。
结合第二方面或第二方面第一至四种可能的实现方式其中任意一种,在第二方面第五种可能的实现方式中,所述数据库为联系人数据库。
结合第二方面或第二方面第一至五种可能的实现方式其中任意一种,在第二方面第六种可能的实现方式中,所述第一应用为联系人应用。
结合第二方面或第二方面第一至六种可能的实现方式其中任意一种,在第二方面第七种可能的实现方式中,所述获取单元,还用于获取对所述数据库的写操作;所述装置还包括第三执行单元,所述第三执行单元包括:主连接检测子单元,用于检测是否存在空闲的主连接;写操作执行子单元,用于在存在空闲的主连接时,使用所述主连接执行所述写操作;写操作入队子单元,用于在所有的所述主连接均被占用时,如果所述写操作由所述第一应用发起,则将所述写操作放入第二待处理队列中与所述第一应用对应的位置。
本发明实施例中,所述数据库包含在终端中,所述数据库具有至少一个主连接和至少两个非主连接,所述主连接用于执行对所述数据库的写操作,所述非主连接用于执行对所述数据库的读操作,所述终端获取对所述数据库的读操作;若所述读操作由第一应用发起,则使用第一非主连接执行所述读操作;所述第一应用为所述终端中的应用;其中,所述第一非主连接是预先设定的仅用于执行所述第一应用发起的读操作的非主连接;所述至少两个非主连接包括至少一个所述第一非主连接。采用本发明实施例所提供的方法及装置,第一非主连接仅用于执行所述第一应用发起的读操作,因此可以保证第一应用发起的读操作的执行效率不会受到其他应用读操作的影响。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明数据库读写方法一个实施例的流程示意图;
图2为本发明数据库读写方法另一个实施例的流程示意图;
图3为本发明数据库读写方法的流程示意图;
图4为本发明数据库读写方法另一个实施例的流程示意图;
图5为本发明数据库读写方法另一个实施例的流程示意图;
图6为本发明数据库读写装置一个实施例的结构示意图;
图7为本发明数据库读写装置另一个实施例的结构示意图;
图8为本发明数据库读写装置另一个实施例的结构示意图;
图9为本发明终端一个实施例的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整的描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在此需要说明的是,本发明实施例中的数据库可以是遵守原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)的任意一种数据库。该数据库包含在终端中,并且至少具有一个主连接及至少两个非主连接,其中,所述主连接用于执行对所述数据库的写操作,所述非主连接用于执行对所述数据库的读操作。所述非主连接至少包括一个第一非主连接与一个第二非主连接,所述第一非主连接是预先设定的仅用于执行所述第一应用发起的读操作的非主连接,所述第二非主连接除所述第一非主连接之外的其他非主连接。其中,所述数据库可以为联系人数据库,所述数据库中保存的信息为联系人信息。
参见图1,为本发明数据库读写方法一个实施例的流程示意图。该实施例用于示出数据库读操作的执行方法。如图1所示,该方法包括如下步骤:
步骤101,终端获取对数据库的读操作。
终端上的某个应用在需要读取联系人数据库中的联系人信息时,可以发起一个对所述数据库的读操作,终端可以获取该读操作。例如,联系人应用需要向用户展示联系人信息时,可以发起一个对联系人数据库的读操作,以便于读取联系人数据库中的联系人信息,进而对联系人信息进行展示。又如,用户数据备份应用在将终端上的联系人信息备份至服务器时,可以发起一个对联系人数据库的读操作,以便于读取联系人数据库中的联系人信息,进而将读取到的信息保存至服务器。
步骤102,若所述读操作由第一应用发起,则使用第一非主连接执行所述读操作;所述第一应用为所述终端中的应用。
在获取到所述读操作之后,终端判断该读操作是否由第一应用发起。其中,读操作的发起者可以通过读操作中携带的信息来确定,或者也可以通过读操作的来源来确定。
如果所述读操作由第一应用发起,则终端使用第一非主连接执行所述读操作;若所述读操作由第二应用发起,则终端使用第二非主连接执行所述读操作。其中,所述第二应用与所述第一应用为不同应用,所述第一应用为对读操作执行效率要求较高的应用,例如联系人应用等;所述第二应用为对读操作执行效率要求不高的应用,例如数据备份应用等。采用此执行方式,第一非主连接仅用于执行所述第一应用发起的读操作,因此可以保证第一应用发起的读操作的执行效率不会受到其他应用读操作的影响。
为进一步提升第一应用所发起的读操作的执行效率,终端在使用第一非主连接执行所述读操作时,可以首先检测是否存在空闲的所述第一非主连接;当存在空闲的所述第一非主连接时,使用空闲的所述第一非主连接执行所述读操作;当所有的所述第一非主连接均被占用时,则可以检测是否存在空闲的第二非主连接;当存在空闲的所述第二非主连接时,使用空闲的所述第二非主连接执行所述读操作。通过使用第二非主连接执行第一应用所发起的读操作,可以使更多的非主连接用于执行第一应用所发起读操作,从而提升第一应用所发起读操作的执行效率。
在实际使用中,为减少检测步骤,进一步提升第一应用所发起读操作的执行效率,终端在确定所述读操作由第一应用发起后,可以同时检测各个非主连接是否空闲,如果存在空闲的第一非主连接,使用空闲的第一非主连接执行由第一应用发起的读操作;如果第一非主连接均被占用但存在空闲的第二非主连接,则可以使用空闲的第二非主连接执行由第一应用发起的读操作。
由于非主连接的数量有限,而同一时间段内不同的应用可能会并发发起超过非主连接数量的读操作,因此在实际使用中仍然可能存在所有非主连接均被占用的情况。在非主连接被占用的情况下,需要读操作放入第一待处理队列;然后在出现空闲的非主连接时,使用空闲的非主连接逐一执行第一待处理队列中的读操作。
根据读操作的发起者不同,终端将读操作放入待处理队列的具体方式也不相同。在所述读操作由第二应用发起时,终端可以在第二连接均被占用时,直接将读操作放入第一待处理队列;而在所述读操作由第一应用发起时,终端可以在第一非主连接及第二非主连接均被占用时,再将读操作放入第一待处理队列。
进一步,在将读操作放入第一待处理队列时,可以根据读操作的发起者不同,将读操作放入第一待处理队列中的不同位置。为提高由第一应用发起的读操作的执行效率,可以将由第一应用发起的读操作放入第一待处理队列中与所述第一应用的优先级所对应的位置,而将第二应用发起的读操作放入第一待处理队列的队尾。
例如,在所述读操作由所述第二应用发起时,可以直接将该读操作放入第一待处理队列的队尾;而在所述读操作由所述第一应用发起时,可以将该读操作放在第一待处理队列中所有第二应用发起的读操作之前的位置。
在本实施例中,所述终端获取对所述数据库的读操作;若所述读操作由第一应用发起,则使用第一非主连接执行所述读操作;所述第一应用为所述终端中的应用。采用本实施例所述的方法,第一非主连接仅用于执行所述第一应用发起的读操作,因此可以保证第一应用发起的读操作的执行效率不会受到其他应用读操作的影响,从而可以保证第一应用所发起读操作的执行效率。
由于在实际使用中,应用除需要读取联系人信息之外,还可能需要改写联系人信息,因此终端除对应用发起的读操作进行调度执行外,实现联系人信息的读取之外,还需要对应用发起的写操作进行调度执行,实现联系人信息的改写。
参见图2,为本发明数据库读写方法另一个实施例的流程示意图。该实施例用于示出数据库写操作的执行方法。终端可以独立采用本实施例中示出的方法对写操作进行调度执行,也可以在前述图1所示实施例中对读操作进行调度执行的基础上,对写操作进行调度执行。如图2所示,该方法包括如下步骤:
步骤201,所述终端获取对所述数据库的写操作。
终端上的某个应用在需要改写联系人数据库中的联系人信息时,可以发起一个对所述数据库的写操作,终端可以获取该写操作。例如,联系人应用需要根据用户输入的信息修改联系人信息时,可以发起一个对联系人数据库写读操作,完成联系人信息的修改。
步骤202,所述终端检测是否存在空闲的主连接。
由于主连接用于执行写操作,因此在获取到所述读操作之后,终端可以检测否存空闲的主连接。
步骤203,当存在空闲的主连接时,所述终端使用所述主连接执行所述写操作。
步骤204,当所有的所述主连接均被占用时,如果所述写操作由所述第一应用发起,则将所述写操作放入第二待处理队列中与所述第一应用对应的位置。
由于主连接的数量非常限,通常情况下数据库只有一条主连接,而同一时间段内不同的应用并发发起多个写操作。因此可出现所述的主连接均被占用的情况。
如果所有的主连接均别被占用,终端可以检测所述写操作的发起者;根据写操作发起者的不同,将写操作放入与写操作发起者相对应的位置,以保证第一应用所发起写操作的执行效率。具体来说,当所有的所述主连接均被占用时,如果所述写操作由所述第一应用发起,则将所述写操作放入第二待处理队列中与所述第一应用对应的位置;如果所述写操作由所述第二应用发起,则将所述写操作放入第二待处理队列中与所述第二应用对应的位置。其中,写操作的发起者可以通过写操作的中携带的信息确定,或者也可以通过写操作的来源来确定。将第一应用发起的写操作放入第二待处理队列中与所述第一应用对应的位置,可以保证第一应用的写操作优先与非第一应用的写操作执行,提高制定应用所述发出写操作的执行效率。
例如,在所述写操作由所述第二应用发起时,可以直接将该写操作放入第二待处理队列的队尾;而在所述写操作由所述第一应用发起时,可以将该写操作放在第二待处理队列中所有第二应用发起的写操作之前的位置。
在本实施例中,所述终端获取对所述数据库的写操作;检测是否存在空闲的主连接;当存在空闲的主连接时,使用所述主连接执行所述写操作;当所有的所述主连接均被占用时,如果所述写操作由所述第一应用发起,则将所述写操作放入第二待处理队列中与所述第一应用对应的位置。由于主连接仅仅用执行写操作,因此避免了主连接被读操作所占用,从而可以提高写操作的执行效率。
在此需要说明的是,本发明不对步骤101至步骤102及步骤201至步骤204之间的执行顺序进行限定。在实际使用中可以先执行步骤101至步骤102,然后再执行步骤201至步骤204;或者,也可以先执行步骤201至步骤204,然后再执行步骤101至步骤102;或者,也可以并行执行步骤101至步骤102以及步骤201至步骤204;或者,也可以分别独立执行步骤101至步骤102或者步骤201至步骤204。
参见图3为一种本发明数据库读写方法的流程示意图。其中,联系人存储提供者(Contacts Provider)、数据库连接池(Connection Pool)及联系人数据库(ContactsDatabase)可以设置在同一个终端上,该终端上还可以设置有至少一个第一应用与至少一个第二应用。其中,联系人存储提供者、数据库连接池及联系人数据库可以由终端通过终端上的应用实现,或者也可以由组成终端的硬件和/或软件实现。
当终端上的第一应用或第二应用在需要读取联系人数据库中的联系人信息时,可以首先发起一个读操作,然后将读操作发送给联系人存储提供者;联系人存储提供者在接收到读操作后,再将读操作发送给数据库连接池;数据库连接池在接收到读操作后,首先确定读操作的发起者,如果读操作的发起者为第一应用,则使用第一非主连接执行所述读操作,如果读操作的发起者为第二应用,则使用第二非主连接执行所述读操作。
当终端上的第一应用或第二应用在需要改写联系人数据库中的联系人信息时,可以首先发起一个写操作,然后将写操作发送给联系人存储提供者;联系人存储提供者在接收到写操作后,再将写操作发送给数据库连接池;数据库连接池在接收到写操作后,使用主连接执行所述读操作。
下面结合图4对本发明数据库读写方法做进一步说明。
参见图4,为本发明数据库读写方法另一个实施例的流程示意图。下面结合图4对采用本发明数据库读写方法执行读操作的过程做进一步说明。本发明实施例中所述的方法可以由终端中的数据库连接池(ConnectionPool)完成。
步骤401,数据库连接池获取应用发起的读操作。
步骤402,数据库连接池判断所述读操作是否由第一应用发起。
步骤403,如果所述第一应用由所述第一应用发起,数据库连接池检测第一非主连接是否空闲。
步骤404,当第一非主连接空闲时,数据库连接池使用第一非主连接执行所述读操作。
在所述读操作由第二应用发起时;或者,在所述读操作由第一应用发起,但是第一非主连接被占用时,在步骤402或步骤404之后,所述方法还可以包括:
步骤405,数据库连接池检测第二非主连接是否空闲。
步骤406,当第二非主连接空闲时,数据库连接池使用第二非主连接执行所述读操作。
如果所述第二非主连接也被占用,那么在步骤405之后,所述方法还可以包括:
步骤407,数据库连接池将所述读操作放入第一待处理队列。
在将读操作放入第一待处理队列时,如果读操作的发起者为第一应用,那么就将读操作放入第一待处理队列中与第一应用相对应的位置;如果读操作的发起者为第二应用等其他应用,那么可以将读操作放入第一待处理队列的队尾。
在将所述读操作放入第一待处理队列后,还需要将读操作取出执行,因此在步骤407之后还可以包括步骤408至409,或者也可以包括步骤410至411。
步骤408,数据库连接池检测第二非主连接是否被释放。
数据库连接池可以通过连接释放通知判定第二非主连接是否被释放。其中,所述连接释放通知可以由终端上的联系人数据库生成,用于在某个主连接或某个非主连接被释放后,通知数据库连接池该主连接或该非主连接被释放。数据库连接池可以跟是否接受到连接释放通知判断是否有连接被释放,并根据连接释放通知的内容判断被释放的连接是否为第二非主连接。
步骤409,在第二非主连接被释放后,数据库连接池取出位于所述第一待处理队列的队列头的读操作,并返回步骤406。
当数据库连接池通过连接释放通知确定某第二非主连接被释放后,可以从所述数据库连接池从所述队列头取出读操作,并返回步骤406,将读操作交由空闲的第二非主连接。
由于第二非主连接可以用于执行任意应用所发起的读操作,因此无论处于第一待处理队列队的列头的读操作由哪一个应用发起,都可以在第二非主连接释放后交由第二非主连接执行。
步骤410,数据库连接池检测第一非主连接是否被释放。
数据库连接池可以根据连接释放通知的内容判断被释放的连接是否为第一非主连接。
步骤411,在第一非主连接被释放后,从所述第一待处理队列中取出发起者为所述第一应用的读操作,并且返回步骤404。
当通过连接释放通知确定某第一非主连接被释放后,如果第一待处理队列中存在由所述第一应用发起的读操作,那么数据库连接池可以取出由第一应用发起的读操作,并返回步骤404,将读操作交由空闲的第一非主连接执行。
采用本实施例所提供的方法,第一非主连接仅用于执行所述第一应用发起的读操作,因此可以保证第一应用发起的读操作的执行效率不会受到其他应用读操作的影响。
参见图5,为本发明数据库读写方法另一个实施例的流程示意图。下面结合图5对采用本发明数据库读写方法执行写操作的过程做进一步说明。本发明实施例中所述的方法可以由数据库连接池完成。
步骤501,数据库连接池获取应用发起的写操作。
步骤502,数据库连接池检测主连接是否空闲。
步骤503,若主连接空闲,数据库连接池使用所述主连接执行所述写操作。
步骤504,若主连接均被占用,数据库连接池检测所述写操作是否由第一应用发起。
步骤505,若所述写操作由第一应用发起,则数据库连接池将所述写操作放入第二待处理队列中与所述第一应用对应的位置。
步骤506,若所述写操作不由第一应用发起,则数据库连接池将所述写操作放入第二待处理队列的队尾。
根据写操作是否由第一应用发起不同,终端可以选择执行步骤505或步骤506。在步骤505或步骤506之后还可以包括:
步骤507,数据库连接池检测所述主连接是否被释放。
在接收到连接释放通知后,数据库连接池可以根据连接释放通知的内容判断被释放的连接是否为主连接,从而确定主连接是否被释放。
步骤508,当所述主连接被释放后,取出位于第二待处理队列的队列头的读操作,并返回步骤503。
采用本实施例所提供的方法,主连接仅仅用执行写操作,因此避免了主连接被读操作所占用,从而可以提高写操作的执行效率。
与本发明数据库读写方法相对应,本发明还提供了数据库读写装置。
参见图6,为本发明数据库读写装置一个实施例的结构示意图。该数据库读写装置可以用于执行上述各实施中的数据库读写方法。
如图6所示,该装置包括:获取单元601及第一执行单元602。
其中,获取单元601,用于获取对所述数据库的读操作;第一执行单元602,用于在所述读操作由第一应用发起时,使用第一非主连接执行所述读操作;所述第一应用为所述终端中的应用;其中,所述第一非主连接是预先设定的仅用于执行所述第一应用发起的读操作的非主连接;所述至少两个非主连接包括至少一个所述第一非主连接。所述数据库为联系人数据库;所述第一应用为联系人应用。
可选的,如图7所示,所述装置还可以包括:第二执行单元603,用于在所述读操作由第二应用发起时,使用第二非主连接执行所述读操作;其中,所述第二应用与所述第一应用不同;所述第二非主连接是除所述第一非主连接之外的其它非主连接。
可选的,所述第一执行单元602包括:检测子单元,用于在所述读操作由所述第一应用发起时,检测是否存在空闲的所述第一非主连接;执行子单元,用于在存在空闲的所述第一非主连接时,使用空闲的所述第一非主连接执行所述读操作。其中,所述检测子单元,还用于在所有的所述第一非主连接均被占用时,检测是否存在空闲的第二非主连接;所述执行子单元,还用于在存在空闲的所述第二非主连接时,使用空闲的所述第二非主连接执行所述读操作;其中,所述第二非主连接是除所述第一非主连接之外的其它非主连接。
可选的,所述第一执行单元602还可以包括入队子单元,用于在所有的所述第二非主连接均被占用时,将所述读操作放入第一待处理队列中与所述第一应用的优先级所对应的位置。
采用本实施例中的装置执行读操作,第一非主连接仅用于执行所述第一应用发起的读操作,因此可以保证第一应用发起的读操作的执行效率不会受到其他应用读操作的影响。
在另一个实施例中,如图8所示,除获取单元601、第一执行单元602及第二执行单元603之外,所述装置还可以包括:第三执行单元604。
其中,所述获取单元601,还用于获取对所述数据库的写操作;所述第三执行单元604包括:主连接检测子单元,用于检测是否存在空闲的主连接;写操作执行子单元,用于在存在空闲的主连接时,使用所述主连接执行所述写操作;写操作入队子单元,用于在所有的所述主连接均被占用时,如果所述写操作由所述第一应用发起,则将所述写操作放入第二待处理队列中与所述第一应用对应的位置。采用此实施例,由于主连接仅仅用执行写操作,因此可以避免主连接被读操作所占用,从而可以提高写操作的执行效率。
采用在本实施例中的装置执行写操作时,主连接仅仅用执行写操作,因此可以避免主连接被读操作所占用,从而可以提高写操作的执行效率。
在需要说明的是,在另一个实施例中,所述装置可以仅包括获取单元601与至少第一执行单元602、第二执行单元603及第三执行单元604其中之一。例如,所述装置可以只包括获取单元601、第一执行单元602及第二执行单元603;或者,所述装置也可以只包括获取单元601及第三执行单元604。本发明对此并不进行限制。
参见图9,为本发明终端一个实施例的结构示意图。所述终端可以用来执行前述各实施例中所示的数据库读写方法。
如图9所示,所述终端可以包括:处理器901,存储器902。可选的,所述终端还可以包括通信单元903,输入输出单元904等。这些组件通过一条或多条总线进行通信。本领域技术人员可以理解,图中示出的服务器的结构并不构成对本发明的限定,它既可以是总线形结构,也可以是星型结构,还可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
其中,处理器901为电子设备的控制中心,利用各种接口和线路连接整个电子设备的各个部分,通过运行或执行存储在存储器902内的软件程序和/或模块,以及调用存储在存储器902内的数据,以执行电子设备的各种功能和/或处理数据。所述处理器901可以由集成电路(Integrated Circuit,简称IC)组成,例如可以由单颗封装的IC所组成,也可以由连接多颗相同功能或不同功能的封装IC而组成。举例来说,处理器901可以仅包括中央处理器(Central Processing Unit,简称CPU),也可以是GPU、数字信号处理器(Digital SignalProcessor,简称DSP)、及通信单元903中的控制芯片(例如基带芯片)的组合。在本发明实施方式中,CPU可以是单运算核心,也可以包括多运算核心。
存储器902可用于存储软件程序以及模块,处理器901通过运行存储在存储器902的软件程序以及模块,从而执行终端的各种功能应用以及实现数据处理。存储器902主要包括程序存储区和数据存储区,其中,程序存储区可存储操作系统、至少一个功能所需的应用,比如声音播放程序、图像播放程序等等,以及本发明实施例中所说的第一应用及第二应用;数据存储区可存储根据终端的使用所创建的数据(比如音频数据、电话本等)等,在本发明实施例中,所述数据存储区域用于存储所述数据库。存储器902可以包括易失性存储器902,例如非挥发性动态随机存取内存(NONVOLATILE RANDOM ACCESS MEMORY,简称NVRAM)、相变化随机存取内存(PHASE CHANGE RAM,简称PRAM)、磁阻式随机存取内存(MAGETORESISTIVE RAM,简称MRAM)等,还可以包括非易失性存储器902,例如至少一个磁盘存储器902件、电子可擦除可编程只读存储器902(ELECTRICALLY ERASABLE PROGRAMMABLEREAD-ONLY MEMORY,简称EEPROM)、闪存器件,例如反或闪存(NOR FLASH MEMORY)或是反及闪存(NAND FLASH MEMORY)。非易失存储器902储存处理器901所执行的操作系统及应用程序。所述处理器901从所述非易失存储器902加载运行程序与数据到内存并将数字内容储存于大量储存装置中。所述操作系统包括用于控制和管理常规系统任务,例如内存管理、存储设备控制、电源管理等,以及有助于各种软硬件之间通信的各种组件和/或驱动器。在本发明实施方式中,所述操作系统可以是GOOGLE公司的ANDROID系统、APPLE公司开发的IOS系统或MICROSOFT公司开发的WINDOWS操作系统等,或者是VXWORKS这类的嵌入式操作系统。
所述通信单元903用于建立通信信道,使终端通过所述通信信道以连接至远程服务器,可行远程服务器发送数据或从所述远程服务器下媒体数据。所述通信单元903可以包括无线局域网(WIRELESS LOCAL AREA NETWORK,简称WIRELESS LAN)模块、蓝牙模块、基带(BASE BAND)模块等通信模块,以及所述通信模块对应的射频(RADIO FREQUENCY,简称RF)电路,用于进行无线局域网络通信、蓝牙通信、红外线通信及/或蜂窝式通信系统通信,例如宽带码分多重接入(WIDEBAND CODE DIVISION MULTIPLE ACCESS,简称W-CDMA)及/或高速下行封包存取(HIGH SPEED DOWNLINK PACKET ACCESS,简称HSDPA)。所述通信模块用于控制终端中的各组件的通信,并且可以支持直接内存存取(DIRECT MEMORY ACCESS)。
输入输出单元904用于输出信息和/或信息输入到终端中,从而实现用户与终端的交互。所述输入输出单元904可以包括输入子单元及输出子单元,其中,所述输出子单元可以包括触控面板,也可以包括其他人机交互界面,例如实体输入键、麦克风等。所述输出子单元包括但不限于影像输出子单元和声音输出子单元。影像输出子单元用于输出文字、图片和/或视频。所述影像输出子单元可包括显示面板,例如采用LCD(Liquid CrystalDisplay,液晶显示器)、OLED(Organic Light-Emitting Diode,有机发光二极管)、场发射显示器(field emission display,简称FED)等形式来配置的显示面板。或者所述影像输出子单元可以包括反射式显示器,例如电泳式(electrophoretic)显示器,或利用光干涉调变技术(Interferometric Modulation of Light)的显示器。虽然输入子单元与输出子单元是作为两个独立的部件来实现终端的输入和输出功能,但是在某些实施例中,可以将触控面板与显示面板集成一体而实现终端的输入和输出功能。例如,所述影像输出子单元可以显示各种图形化用户接口(Graphical User Interface,简称GUI)以作为虚拟控制组件,包括但不限于窗口、卷动轴、图标及剪贴簿,以供用户通过触控方式进行操作。
在本发明实施中,所述存储器902用于存储数据库及应用,其中,所述数据库可以为联系人数据库,所述应用包括第一应用及第二应用,所述数据库具有至少一个主连接和至少两个非主连接,所述主连接用于执行对所述数据库的写操作,所述非主连接用于执行对所述数据库的读操作,所述第一应用为联系人应用。所述输入输出单元,可以用于向终端中输入联系人信息,或者也可以用于向用户展示联系人信息。
所述处理器901,用于获取对所述数据库的读操作;在所述读操作由第一应用发起时,使用第一非主连接执行所述读操作;所述第一应用为所述终端中的应用;其中,所述第一非主连接是预先设定的仅用于执行所述第一应用发起的读操作的非主连接;所述至少两个非主连接包括至少一个所述第一非主连接。
所述处理器901,还用于在所述读操作由第二应用发起时,使用第二非主连接执行所述读操作;其中,所述第二应用与所述第一应用不同;所述第二非主连接是除所述第一非主连接之外的其它非主连接。
所述处理器901,还用于在所述读操作由所述第一应用发起时,检测是否存在空闲的所述第一非主连接;当存在空闲的所述第一非主连接时,使用空闲的所述第一非主连接执行所述读操作。
所述处理器901,还用于在所有的所述第一非主连接均被占用时,检测是否存在空闲的第二非主连接;当存在空闲的所述第二非主连接时,使用空闲的所述第二非主连接执行所述读操作;其中,所述第二非主连接是除所述第一非主连接之外的其它非主连接。
所述处理器901,还用于在所有的所述第一非主连接均被占用时,检测是否存在空闲的第二非主连接;当存在空闲的所述第二非主连接时,使用空闲的所述第二非主连接执行所述读操作;其中,所述第二非主连接是除所述第一非主连接之外的其它非主连接。
在另一个实施例中,所述处理器901可以用于获取对所述数据库的写操作;检测是否存在空闲的主连接;在存在空闲的主连接时,使用所述主连接执行所述写操作;在所有的所述主连接均被占用时,如果所述写操作由所述第一应用发起,则将所述写操作放入第二待处理队列中与所述第一应用对应的位置。
本实施中的终端在执行应用发起的读操作时,第一非主连接仅用于执行所述第一应用发起的读操作,因此可以保证第一应用发起的读操作的执行效率不会受到其他应用读操作的影响。
本领域的技术人员可以清楚地了解到本发明实施例中的技术可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本发明实施例中的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)完成本发明各个实施例或者实施例的某些部分所述的方法。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置及终端实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述的本发明实施方式,并不构成对本发明保护范围的限定。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明的保护范围之内。

Claims (16)

1.一种数据库读写方法,其特征在于,所述数据库包含在终端中,所述数据库具有至少一个主连接和至少两个非主连接,所述主连接用于执行对所述数据库的写操作,所述非主连接用于执行对所述数据库的读操作,所述方法包括:
所述终端获取对所述数据库的读操作;
若所述读操作由第一应用发起,则使用第一非主连接执行所述读操作;其中,所述第一应用为所述终端中的应用;
所述第一非主连接是预先设定的仅用于执行所述第一应用发起的读操作的非主连接;
所述至少两个非主连接包括至少一个所述第一非主连接。
2.如权利要求1所述的方法,其特征在于,所述方法还包括:
若所述读操作由第二应用发起,则使用第二非主连接执行所述读操作;
其中,所述第二应用与所述第一应用不同;所述第二非主连接是除所述第一非主连接之外的其它非主连接。
3.如权利要求1所述的方法,其特征在于,所述若所述读操作由第一应用发起,则使用第一非主连接执行所述读操作包括:
若所述读操作由所述第一应用发起,则检测是否存在空闲的所述第一非主连接;
当存在空闲的所述第一非主连接时,使用空闲的所述第一非主连接执行所述读操作。
4.如权利要求2所述的方法,其特征在于,所述方法还包括:
当所有的所述第一非主连接均被占用时,检测是否存在空闲的所述第二非主连接;
当存在空闲的所述第二非主连接时,使用空闲的所述第二非主连接执行所述读操作;
其中,所述第二非主连接是除所述第一非主连接之外的其它非主连接。
5.如权利要求4所述的方法,其特征在于,所述方法还包括:
当所有的所述第二非主连接均被占用时,将所述读操作放入第一待处理队列中与所述第一应用的优先级所对应的位置。
6.如权利要求1至5中任一项所述的方法,其特征在于,所述数据库为联系人数据库。
7.如权利要求1至5中任一项所述的方法,其特征在于,所述第一应用为联系人应用。
8.如权利要求1至5中任一项所述的方法,其特征在于,还包括:
所述终端获取对所述数据库的写操作;
检测是否存在空闲的主连接;
当存在空闲的所述主连接时,使用空闲的所述主连接执行所述写操作;
当所有的所述主连接均被占用时,如果所述写操作由所述第一应用发起,则将所述写操作放入第二待处理队列中与所述第一应用对应的位置。
9.一种数据库读写装置,其特征在于,所述数据库包含在终端中,所述数据库具有至少一个主连接和至少两个非主连接,所述主连接用于执行对所述数据库的写操作,所述非主连接用于执行对所述数据库的读操作,所述装置包括:
获取单元,用于获取对所述数据库的读操作;
第一执行单元,用于在所述读操作由第一应用发起时,使用第一非主连接执行所述读操作;其中,所述第一应用为所述终端中的应用;
所述第一非主连接是预先设定的仅用于执行所述第一应用发起的读操作的非主连接;
所述至少两个非主连接包括至少一个所述第一非主连接。
10.如权利要求9所述的装置,其特征在于,还包括:
第二执行单元,用于在所述读操作由第二应用发起时,使用第二非主连接执行所述读操作;
其中,所述第二应用与所述第一应用不同;所述第二非主连接是除所述第一非主连接之外的其它非主连接。
11.如权利要求9所述的装置,其特征在于,所述第一执行单元包括:
检测子单元,用于在所述读操作由所述第一应用发起时,检测是否存在空闲的所述第一非主连接;
执行子单元,用于在存在空闲的所述第一非主连接时,使用空闲的所述第一非主连接执行所述读操作。
12.如权利要求11所述的装置,其特征在于,
所述检测子单元,还用于在所有的所述第一非主连接均被占用时,检测是否存在空闲的第二非主连接;
所述执行子单元,还用于在存在空闲的所述第二非主连接时,使用空闲的所述第二非主连接执行所述读操作;
其中,所述第二非主连接是除所述第一非主连接之外的其它非主连接。
13.如权利要求12所述的装置,其特征在于,所述第一执行单元还包括:
入队子单元,用于在所有的所述第二非主连接均被占用时,将所述读操作放入第一待处理队列中与所述第一应用的优先级所对应的位置。
14.如权利要求9至13任一项所述的装置,其特征在于,所述数据库为联系人数据库。
15.如权利要求9至13任一项所述的装置,其特征在于,所述第一应用为联系人应用。
16.如权利要求9至13任一项所述的装置,其特征在于,所述装置还包括第三执行单元,
所述获取单元,还用于获取对所述数据库的写操作;
所述第三执行单元包括:
主连接检测子单元,用于检测是否存在空闲的主连接;
写操作执行子单元,用于在存在空闲的主连接时,使用空闲的所述主连接执行所述写操作;
写操作入队子单元,用于在所有的所述主连接均被占用时,如果所述写操作由所述第一应用发起,则将所述写操作放入第二待处理队列中与所述第一应用对应的位置。
CN201510505796.0A 2015-08-17 2015-08-17 数据库读写方法及装置 Active CN106469156B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510505796.0A CN106469156B (zh) 2015-08-17 2015-08-17 数据库读写方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510505796.0A CN106469156B (zh) 2015-08-17 2015-08-17 数据库读写方法及装置

Publications (2)

Publication Number Publication Date
CN106469156A CN106469156A (zh) 2017-03-01
CN106469156B true CN106469156B (zh) 2019-10-18

Family

ID=58213819

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510505796.0A Active CN106469156B (zh) 2015-08-17 2015-08-17 数据库读写方法及装置

Country Status (1)

Country Link
CN (1) CN106469156B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108256589B (zh) * 2018-02-14 2022-01-28 北京火花日志科技有限公司 一种工业设备数据应用读写方法及装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103513932A (zh) * 2012-06-28 2014-01-15 深圳市腾讯计算机系统有限公司 一种数据处理方法及装置
CN103793432A (zh) * 2012-11-01 2014-05-14 深圳中兴网信科技有限公司 一种数据库读写分离方法及装置
CN104142868A (zh) * 2013-05-10 2014-11-12 腾讯科技(深圳)有限公司 建立连接的方法及装置

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8429374B2 (en) * 2010-01-28 2013-04-23 Sony Corporation System and method for read-while-write with NAND memory device

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103513932A (zh) * 2012-06-28 2014-01-15 深圳市腾讯计算机系统有限公司 一种数据处理方法及装置
CN103793432A (zh) * 2012-11-01 2014-05-14 深圳中兴网信科技有限公司 一种数据库读写分离方法及装置
CN104142868A (zh) * 2013-05-10 2014-11-12 腾讯科技(深圳)有限公司 建立连接的方法及装置

Also Published As

Publication number Publication date
CN106469156A (zh) 2017-03-01

Similar Documents

Publication Publication Date Title
US11868785B2 (en) Application program page processing method and device
CN110300328B (zh) 一种视频播放控制方法、装置及可读存储介质
CN102654814B (zh) 调用应用中的功能的方法、装置和电子设备
US20190361580A1 (en) Progressive presence user interface for collaborative documents
US10019298B2 (en) Middleware interface and middleware interface generator
CN110633032B (zh) 终端设备的图标显示方法及装置
CN107832113A (zh) 一种Android系统应用程序的界面显示方法及装置
JP2007257642A (ja) 関連するユーザ・インターフェース・コントロールを強調表示するための装置、方法、およびシステム(関連するユーザ・インターフェース・コントロールを強調表示するための装置および方法)
US7567257B2 (en) Partition-based undo of partitioned object graph
EP3485358B1 (en) Electronic device and method thereof for managing applications
WO2016109365A1 (en) Split button with access to previously used options
CN109766139B (zh) 配置文件的配置方法及装置
WO2017012416A2 (zh) 快捷操作方法、快捷操作装置和终端
CN102662882A (zh) 卸载移动存储设备的方法及装置
WO2019128571A1 (zh) 资源管理方法、装置、移动终端及计算机可读存储介质
CN110673887A (zh) 应用程序启动方法、装置、终端设备及可读存储介质
CN106105168A (zh) 一种呼叫转移的方法、终端及便携式电子设备
US9118756B2 (en) Recording method, recording device, and electronic device
CN106469156B (zh) 数据库读写方法及装置
CN108089781B (zh) 界面展示方法和装置
KR20060124047A (ko) 멀티 운영체제 로딩을 지원하는 이동통신 단말기 및 그방법
CN104750553A (zh) 应用运行方法和装置
CN109710278A (zh) 一种卸载应用程序的方法、装置及终端设备
WO2022068370A1 (zh) 用于终端的负二屏界面显示方法、装置、终端及介质
CN107391361A (zh) 一种pos终端自动测试方法及装置

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: 523808 Southern Factory Building (Phase I) Project B2 Production Plant-5, New Town Avenue, Songshan Lake High-tech Industrial Development Zone, Dongguan City, Guangdong Province

Applicant after: Huawei Device Co., Ltd.

Address before: 523808 Southern Factory Building (Phase I) Project B2 Production Plant-5, New Town Avenue, Songshan Lake High-tech Industrial Development Zone, Dongguan City, Guangdong Province

Applicant before: HUAWEI terminal (Dongguan) Co., Ltd.

CB02 Change of applicant information
GR01 Patent grant
GR01 Patent grant