[发明专利]一种多进程安全访问sqlite的方法在审
申请号: | 201810833248.4 | 申请日: | 2018-07-26 |
公开(公告)号: | CN109033359A | 公开(公告)日: | 2018-12-18 |
发明(设计)人: | 王小东;熊传宇 | 申请(专利权)人: | 北京天地和兴科技有限公司 |
主分类号: | G06F17/30 | 分类号: | G06F17/30 |
代理公司: | 暂无信息 | 代理人: | 暂无信息 |
地址: | 100093 北京市海淀区东*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 线程 数据库 访问数据库 安全访问 多进程 查询数据库 数据库访问 并发访问 操作完成 等待状态 释放锁 锁状态 锁住 控制权 访问 释放 创建 改进 进程 | ||
本发明公开了一种多进程安全访问sqlite的方法,包括以下步骤:A、对数据库的访问分为读线程、写线程和文件线程;B、步骤A中所述进程在访问数据库之前,查询数据库锁的状态,若数据库被锁住,则准备访问数据库的线程处于等待状态,等锁被释放后,准备访问数据库的线程获取锁的控制权对数据库进行操作;C、上述线程采用先到先得的原则进行锁的获取,线程对数据库的操作完成后,释放锁,其它线程此时获取锁状态然后对数据库进行操作。本发明能够改进现有技术的不足,创建了一个独立的数据库访问通道,解决数据库并发访问的问题,避免出现数据库lock而无法访问的情况。
技术领域
本发明涉及数据库技术领域,尤其是一种多进程安全访问sqlite的方法。
背景技术
SQLite,是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中。它是D.RichardHipp建立的公有领域项目。它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。不像常见的客户-服务器范例,SQLite引擎不是个程序与之通信的独立进程,而是连接到程序中成为它的一个主要部分。所以主要的通信协议是在编程语言内的直接API调用。这在消耗总量、延迟时间和整体简单性上有积极的作用。整个数据库(定义、表、索引和数据本身)都在宿主主机上存储在一个单一的文件中。它的简单的设计是通过在开始一个事务的时候锁定整个数据文件而完成的。SQLite的锁机制是粗粒度的,它允许多个读,但是一次只允许一个写。写锁会在写期间排他地锁定数据库,其他人在此期间不能访问数据库。
目前多进程访问sqlite的方法,可以采用文件锁的方式,创建一个全局的文件锁,每个进程创建自己独立的连接去连接数据库。每个进程访问数据库之前,去获取文件锁,获得锁资源后,再去访问数据库。
该方法的缺点为:
1.该方法采用进程间的文件锁,当访问量很大时,锁的竞争会很激烈,系统开销变的很大,导致系统运行很慢甚至死机。
2.该方法没有将数据库的访问类型区分,无法做到数据库操作的优先级区别,同时没有将数据库的同类型操作当做一个事务处理,导致数据库操作效率低下。
3.若某个数据库操作耗时很长,其它数据库操作需要一直等待,导致系统无法继续运行,无法做到资源的充分利用。
发明内容
本发明要解决的技术问题是提供一种多进程安全访问sqlite的方法,能够解决现有技术的不足,创建了一个独立的数据库访问通道,解决数据库并发访问的问题,避免出现数据库lock而无法访问的情况。
为解决上述技术问题,本发明所采取的技术方案如下。
一种多进程安全访问sqlite的方法,包括以下步骤:
A、对数据库的访问分为读线程、写线程和文件线程;
B、步骤A中所述进程在访问数据库之前,查询数据库锁的状态,若数据库被锁住,则准备访问数据库的线程处于等待状态,等锁被释放后,准备访问数据库的线程获取锁的控制权对数据库进行操作;
C、上述线程采用先到先得的原则进行锁的获取,线程对数据库的操作完成后,释放锁,其它线程此时获取锁状态然后对数据库进行操作。
作为优选,在每次数据库操作语句前添加一个随机码,服务器返回结果时也带上这个随机码,若随机码对应,则认为返回值是此次的数据库读取结果。
作为优选,客户端每个有数据库访问的线程,均建立一个独立的socket来和服务端通信。
作为优选,所述写线程包括以下步骤:
W1、客户端发送sql命令;
W2、将sql命令写入接收进程;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京天地和兴科技有限公司,未经北京天地和兴科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201810833248.4/2.html,转载请声明来源钻瓜专利网。