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.一种数据库的写方法,其特征在于,包括:获取待写入数据库的文件;将所述文件通过至少两次写操作写入所述数据库,以在相邻两次写操作之间的时间内,允许对所述数据库进行读操作。2.根据权利要求1所述的方法,其特征在于,所述将所述文件通过至少两次写操作写入所述数据库的步骤包括:向所述数据库申请文件锁;判断是否将所述文件全部写入所述数据库;若是,则结束将所述文件写入所述数据库;若否,则将所述文件中未写入所述数据库的部分数据写入所述数据库;释放所述文件锁;休眠一段时间,返回执行所述向所述数据库申请文件锁的步骤。3.根据权利要求2所述的方法,其特征在于,所述判断是否将所述文件全部写入所述数据库的步骤包括:读取所述文件已写入所述数据库的数据的已写行数;判断所述已写行数是否小于所述文件的总行数;若是,则确定所述文件未全部写入所述数据库;若否,则确定所述文件已全部写入所述数据库。4.根据权利要求3所述的方法,其特征在于,所述读取所述文件已写入所述数据库的数据的已写行数的步骤包括:在指定的存储区域判断是否存储有用于记录已写行数的变量;若是,则提取所述变量的值,获得已写行数;若否,则在所述指定的存储区域设置所述变量,并设置初始值。5.根据权利要求3或4所述的方法,其特征在于,所述将所述文件中未写入所述数据库的部分数据写入所述数据库的步骤包括:将所述文件中、位于所述已写行数后一行的数据写入所述数据库;更新所述已写行数;判断本次写操作写入所述数据库的数据的行数是否到达行数阈值;若是,则结束本次写操作;若否,则返回执行所述将所述文件中、位于所述已写行数后一行的数据写入所述数据库的步骤。6.一种数据库的写装置,其特征在于,包括:文件获取模块,用于获取待写入数据库的文件;多次写操作模块,用于将所述文件通过至少两次写操作写入所述数据库,以在相邻两次写...
【专利技术属性】
技术研发人员:张博,朱宏浩,王双,杜文娟,
申请(专利权)人:青岛海信移动通信技术股份有限公司,
类型:发明
国别省市:山东,37
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。