一种移动终端的数据库处理方法及其移动终端技术

技术编号:14642589 阅读:45 留言:0更新日期:2017-02-15 22:40
本发明专利技术实施例提供了一种移动终端的数据库处理方法,包括:获取待写入数据库的文件;判断所述文件的行数是否大于预设阈值;若是,则选取所述文件的预设阈值行数部分进行第一次写操作,所述写操作包括加写文件锁,行写操作,释放写文件锁,解决数据库的写操作时间过长导致读操作等待时间过长的问题,由于单次写操作的时间相对整体写操作的时间要少,减少了读操作等待的时间。

【技术实现步骤摘要】

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

【技术保护点】
一种移动终端的数据库处理方法,其特征在于,包括:获取待写入数据库的文件;判断所述文件的行数是否大于预设阈值;若是,则选取所述文件的预设阈值行数部分进行第一次写操作,所述写操作包括加写文件锁,行写操作,释放写文件锁。

【技术特征摘要】
1.一种移动终端的数据库处理方法,其特征在于,包括:获取待写入数据库的文件;判断所述文件的行数是否大于预设阈值;若是,则选取所述文件的预设阈值行数部分进行第一次写操作,所述写操作包括加写文件锁,行写操作,释放写文件锁。2.根据权利要求1所述的方法,其特征在于,还包括:当所述第一次写操作加写文件锁,行写操作时,读线程申请读操作;所述读线程获知有写文件锁,进行等待;所述第一次写线程完成所述行写操作,释放写文件锁;所述读线程获知写文件锁释放,进行读操作。3.根据权利要求2所述的方法,其特征在于,所述读线程获知写文件锁释放,进行读操作具体包括:读线程获知写文件锁释放,加读文件锁,读操作;释放读文件锁;显示数据。4.根据权利要求3所述的方法,其特征在于,释放读文件锁步骤之后还包括:选取所述文件剩下部分的预设阈值行数部分,进行第二次写操作,所述写操作包括加写文件锁,行写操作,释放写文件锁。5.根据权利要求1所述的方法,其特征在于,若是之后还包括:把所述文件按照预设阈值的行数进行划分为N个文件片段。6.一种移...

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

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

1