一种数据库的写方法和装置制造方法及图纸

技术编号:15391617 阅读:71 留言:0更新日期:2017-05-19 04:51
本发明专利技术实施例提供了一种数据库的写方法和装置,所述方法包括:获取待写入数据库的文件;将所述文件通过至少两次写操作写入所述数据库,以在相邻两次写操作之间的时间内,允许对所述数据库进行读操作。本发明专利技术实施例实现了数据库资源的时分复用,由于读操作的时间一般为毫秒级,很短暂,保证了整体写操作的正常执行,并不会明显增加整体写操作的时间,一方面,单次写操作的时间相对整体写操作的时间要少,减少了读操作等待的时间,提高操作的效率,减少界面长时间处于等待等问题;另一方面,由于写操作与读操作是串联执行,减少了因写操作与读操作并发而引起的死锁概率以及对内存的消耗。

Method and device for writing database

The embodiment of the invention provides a method and apparatus for writing a database, the method comprises: acquiring to be written to the database file; the file by at least two times the write operation is written into the database in two adjacent write operations between the time allowed for the database to read. The embodiment of the invention realizes the time division multiplexing of database resources, the read operation time is millisecond, very short, to ensure the normal execution of the write operation, does not significantly increase the overall write time, on the one hand, fewer single write time relatively overall write time, reduce the read operation waiting time, improve operation efficiency, reduce the waiting for a long time in the interface and other issues; on the other hand, because of the write operation and a read operation is executed in series, the probability of deadlock caused by the write operation and a read operation of the memory consumption and the concurrent decrease.

【技术实现步骤摘要】
一种数据库的写方法和装置
本专利技术涉及通信的
,特别是涉及一种数据库的写方法和一种数据库的写装置。
技术介绍
随着通信科技的发展,诸如手机、手表等智能终端在人们的工作、学习、日常交流等各方面的使用率也越来越高。在智能终端上运行的许多应用会使用数据库(如SQLite)来存储用户操作的数据,尤其是社交应用,如即时通信工具、短信应用等等,需要在后台线程中写一个数据库,而同时需要在主线程在UI(UserInterface,用户界面)显示数据,那么主线程会生成子线程,该子线程中读取同一数据库。尽管读操作的对象和写操作的对象不是同一张表,但是,诸如SQLite等数据库所使用的锁为文件锁,对于同一数据库,在写操作的同时不允许执行其他读操作或者写操作。在许多情况下,某个操作触发一线程进行写操作,同时,另一操作触发另一线程进行读操作。若该线程较长时间处于写操作,则另一线程较长时间处于等待的状态,由于读取时间较长,容易影响其他操作的效率,可能造成界面长时间处于等待等问题。例如,对于短信应用,当有未读短信时,每次进入短信列表界面,就会把数据库中关于未读短信是否已经被看到的字段标为已看(写操作),但是,用户还希望能够立即在列表中查看所有短信(读操作),如果字段的标记的时间过长,导致长时间未能读取短信,就会造成短信列表界面迟迟不能加载数据,影响用户体验。目前有些方案将写操作与读操作并发,但是,这些方案往往会增加死锁概率以及对内存的消耗,死锁后会造成应用停止运行,为了解决死锁问题,往往还会增加更加复杂的逻辑控制,复杂度高,另外,对于一些本身内存比较小的智能终端,增大内存的消耗往往会拖慢整个操作系统的操作流畅程度,造成操作系统的操作卡顿。
技术实现思路
鉴于上述问题,为了解决上述数据库的写操作时间过长导致读操作执行时间过长、读写并行增加死锁概率以及对内存的消耗的问题,本专利技术实施例提出了一种数据库的写方法和相应的一种数据库的写装置。依据本专利技术的一个方面,提供了一种数据库的写方法,包括:获取待写入数据库的文件;将所述文件通过至少两次写操作写入所述数据库,以在相邻两次写操作之间的时间内,允许对所述数据库进行读操作。可选地,所述将所述文件通过至少两次写操作写入所述数据库的步骤包括:向所述数据库申请文件锁;判断是否将所述文件全部写入所述数据库;若是,则结束将所述文件写入所述数据库;若否,则将所述文件中未写入所述数据库的部分数据写入所述数据库;释放所述文件锁;休眠一段时间,返回执行所述向所述数据库申请文件锁的步骤。可选地,所述判断是否将所述文件全部写入所述数据库的步骤包括:读取所述文件已写入所述数据库的数据的已写行数;判断所述已写行数是否小于所述文件的总行数;若是,则确定所述文件未全部写入所述数据库;若否,则确定所述文件已全部写入所述数据库。可选地,所述读取所述文件已写入所述数据库的数据的已写行数的步骤包括:在指定的存储区域判断是否存储有用于记录已写行数的变量;若是,则提取所述变量的值,获得已写行数;若否,则在所述指定的存储区域设置所述变量,并设置初始值。可选地,所述将所述文件中未写入所述数据库的部分数据写入所述数据库的步骤包括:将所述文件中、位于所述已写行数后一行的数据写入所述数据库;更新所述已写行数;判断本次写操作写入所述数据库的数据的行数是否到达行数阈值;若是,则结束本次写操作;若否,则返回执行所述将所述文件中、位于所述已写行数后一行的数据写入所述数据库的步骤。根据本专利技术的另一方面,提供了一种数据库的写装置,其特征在于,包括:文件获取模块,用于获取待写入数据库的文件;多次写操作模块,用于将所述文件通过至少两次写操作写入所述数据库,以在相邻两次写操作之间的时间内,允许对所述数据库进行读操作。可选地,所述多次写操作模块包括:文件锁申请子模块,用于向所述数据库申请文件锁;文件完成写子模块,用于判断是否将所述文件全部写入所述数据库;若是,则调用文件写结束子模块,若否,则调用继续写子模块;文件写结束子模块,用于结束将所述文件写入所述数据库;文件继续写子模块,用于将所述文件中未写入所述数据库的部分数据写入所述数据库;文件锁释放子模块,用于释放所述文件锁;休眠子模块,用于休眠一段时间,返回调用所述文件锁申请子模块。可选地,所述文件完成写子模块包括:已写行数读取单元,用于读取所述文件已写入所述数据库的数据的已写行数;总行数判断单元,用于判断所述已写行数是否小于所述文件的总行数;若是,则调用第一确定单元,若否,则调用第二确定单元;第一确定单元,用于确定所述文件未全部写入所述数据库;第二确定单元,用于确定所述文件已全部写入所述数据库。可选地,所述已写行数读取单元包括:变量判断子单元,用于在指定的存储区域判断是否存储有用于记录已写行数的变量;若是,则调用变量值提取子单元,若否,则调用变量设置子单元;变量值提取子单元,用于提取所述变量的值,获得已写行数;变量设置子单元,用于在所述指定的存储区域设置所述变量,并设置初始值。可选地,所述文件继续写子模块包括:行数据写单元,用于将所述文件中、位于所述已写行数后一行的数据写入所述数据库;已写行数更新单元,用于更新所述已写行数;行数阈值判断单元,用于判断本次写操作写入所述数据库的数据的行数是否到达行数阈值;若是,则调用本次写结束单元,若否,则返回调用行数据写单元;本次写结束单元,用于结束本次写操作。本专利技术实施例包括以下优点:本专利技术实施例将写操作看作是对于要进行写操作的文件,一部分一部分地写入数据库,每一部分的数据是相对独立的,将文件通过至少两次写操作写入数据库,以在写入部分数据之后,可以临时释放文件锁,以供其它线程对数据库进行读操作,及时地读取到数据并进行显示等处理,实现了数据库资源的时分复用,由于读操作的时间一般为毫秒级,很短暂,保证了整体写操作的正常执行,并不会明显增加整体写操作的时间,一方面,单次写操作的时间相对整体写操作的时间要少,减少了读操作等待的时间,提高操作的效率,减少界面长时间处于等待等问题;另一方面,由于写操作与读操作是串联执行,减少了因写操作与读操作并发而引起的死锁概率以及对内存的消耗。附图说明图1是本专利技术的一种数据库的写方法实施例的步骤流程图;图2A是目前的一种数据库操作流程图;图2B是图2A的数据库操作流程图的等效流程图;图3A是本专利技术实施例的一种数据库操作流程图;图3B是图3A的数据库操作流程图的等效流程图;图4是本专利技术的另一种数据库的写方法实施例的步骤流程图;图5是本专利技术的一种数据库的写装置实施例的结构框图。具体实施方式为使本专利技术的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本专利技术作进一步详细的说明。参照图1,示出了本专利技术的一种数据库的写方法实施例的步骤流程图,具体可以包括如下步骤:步骤101,获取待写入数据库的文件。步骤102,将所述文件通过至少两次写操作写入所述数据库,以在相邻两次写操作之间的时间内,允许对所述数据库进行读操作。在具体实现中,本专利技术实施例可以应用于各种智能终端中,例如,电脑、手机、PDA(PersonalDigitalAssistant,个人数字助理)、膝上型计算机、掌上电脑等等,本专利技术实施例对此不加以限制。该智能终端可以支持Window本文档来自技高网
...
一种数据库的写方法和装置

【技术保护点】
一种数据库的写方法,其特征在于,包括:获取待写入数据库的文件;将所述文件通过至少两次写操作写入所述数据库,以在相邻两次写操作之间的时间内,允许对所述数据库进行读操作。

【技术特征摘要】
1.一种数据库的写方法,其特征在于,包括:获取待写入数据库的文件;将所述文件通过至少两次写操作写入所述数据库,以在相邻两次写操作之间的时间内,允许对所述数据库进行读操作。2.根据权利要求1所述的方法,其特征在于,所述将所述文件通过至少两次写操作写入所述数据库的步骤包括:向所述数据库申请文件锁;判断是否将所述文件全部写入所述数据库;若是,则结束将所述文件写入所述数据库;若否,则将所述文件中未写入所述数据库的部分数据写入所述数据库;释放所述文件锁;休眠一段时间,返回执行所述向所述数据库申请文件锁的步骤。3.根据权利要求2所述的方法,其特征在于,所述判断是否将所述文件全部写入所述数据库的步骤包括:读取所述文件已写入所述数据库的数据的已写行数;判断所述已写行数是否小于所述文件的总行数;若是,则确定所述文件未全部写入所述数据库;若否,则确定所述文件已全部写入所述数据库。4.根据权利要求3所述的方法,其特征在于,所述读取所述文件已写入所述数据库的数据的已写行数的步骤包括:在指定的存储区域判断是否存储有用于记录已写行数的变量;若是,则提取所述变量的值,获得已写行数;若否,则在所述指定的存储区域设置所述变量,并设置初始值。5.根据权利要求3或4所述的方法,其特征在于,所述将所述文件中未写入所述数据库的部分数据写入所述数据库的步骤包括:将所述文件中、位于所述已写行数后一行的数据写入所述数据库;更新所述已写行数;判断本次写操作写入所述数据库的数据的行数是否到达行数阈值;若是,则结束本次写操作;若否,则返回执行所述将所述文件中、位于所述已写行数后一行的数据写入所述数据库的步骤。6.一种数据库的写装置,其特征在于,包括:文件获取模块,用于获取待写入数据库的文件;多次写操作模块,用于将所述文件通过至少两次写操作写入所述数据库,以在相邻两次写...

【专利技术属性】
技术研发人员:张博朱宏浩王双杜文娟
申请(专利权)人:青岛海信移动通信技术股份有限公司
类型:发明
国别省市:山东,37

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1