CN106815354A - 一种数据库数据缓冲处理方法 - Google Patents
一种数据库数据缓冲处理方法 Download PDFInfo
- Publication number
- CN106815354A CN106815354A CN201710045859.8A CN201710045859A CN106815354A CN 106815354 A CN106815354 A CN 106815354A CN 201710045859 A CN201710045859 A CN 201710045859A CN 106815354 A CN106815354 A CN 106815354A
- Authority
- CN
- China
- Prior art keywords
- message
- database
- queue
- message queue
- data buffered
- 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.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24552—Database cache management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2308—Concurrency control
- G06F16/2315—Optimistic concurrency control
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
Abstract
本发明公开了一种数据库数据缓冲处理方法,所述方法包括:步骤1:获得数据库实时进程访问量,并判断实时进程访问量是否超过预设范围;若超出预设范围则进行步骤2;若未超出预设范围,则不进行处理;步骤2:启动数据缓冲单元,将访问数据库的消息利用消息队列进行存储;步骤3:将消息队列中的访问消息发送到数据库,并控制数据库实时进程访问量在预设范围内,实现了可以控制数据库在单位时间内的连接数,数据读写量从而提高数据库的处理能力的技术效果。
Description
技术领域
本发明涉及计算机数据处理领域,具体地,涉及一种数据库数据缓冲处理方法。
背景技术
数据库访问是目前数据处理中常用的方式,如图1所示是一个典型的B/S(浏览器/服务器)架构互联网应用,在高并发的时候(单位时间内访问量较大),单位时间内数据库服务器的连接数会很大,数据库服务器读写量暴增,cpu、内存、磁盘IO、网络IO都会受到严峻考验,数据库处理能力极具下降。
互联网金融对数据的一致性有极高的要求(需要在多个数据表之间保持业务数据的完整性),如果单位内时间有多项业务需要对某用户的资金账户进行操作,如:充值、转账、提现、资金冻结,扣取手续费等,在此场景下,需要开启数据库事务,同时对用户资金账户加锁(数据库行锁,锁住用户的某行资金记录,防止操作混乱),由于是并发的,此时数据库锁资源竞争激烈,会频繁发生数据库锁超时、死锁等,导致业务中断无法顺利执行。
综上所述,本申请发明人在实现本申请发明技术方案的过程中,发现上述技术至少存在如下技术问题:
在现有技术中,现有的互联网金融数据处理经常存在高并发请求,数据库锁资源竞争激烈,导致数据库无法正常处理的技术问题。
发明内容
本发明提供了一种数据库数据缓冲处理方法,解决了现有的互联网金融数据处理经常存在高并发请求,数据库锁资源竞争激烈,导致数据库无法正常处理的技术问题,实现了可以控制数据库在单位时间内的连接数,数据读写量从而提高数据库的处理能力的技术效果。
为解决上述技术问题,本申请提供了一种数据库数据缓冲处理方法,所述方法包括:
步骤1:获得数据库实时进程访问量,并判断实时进程访问量是否超过预设范围;若超出预设范围则进行步骤2;若未超出预设范围,则不进行处理;
步骤2:启动数据缓冲单元,将访问数据库的消息利用消息队列进行存储;
步骤3:将消息队列中的访问消息发送到数据库,并控制数据库实时进程访问量在预设范围内。
其中,本申请中的方法解决了高并发下,在开启数据库事务时,数据库资源锁竞争的问题,极大提高了数据库的处理效率,本发明是对现有技术方案的优化,在web服务器和数据库服务器之间引入了一个中间件(即数据缓冲单元),使web数据服务器和数据库服务器解耦,可以避免高并发时web服务器直接对数据库服务器的冲击。
进一步的,所述步骤2具体包括:
步骤2.1:web服务器接收到浏览器的请求,将请求根据不同业务封装成消息;
步骤2.2:基于消息的结构和属性,web服务器调用消息队列接口将消息推送到用户所属消息队列。
进一步的,消息队列采用开源中间件redis,消息队列为先进先出队列,系统预设消息队列个数n(1,2,3,…,n),消息推送方式为:queueId=userId%n;queueId为消息队列编号,userId为消息所属用户ID;web服务器构造的消息通过消息队列接口,将会被推送到编号为queueId的消息队列。
进一步的,所述将消息队列中的访问消息发送到数据库,具体包括:
守护进程通过消息队列接口获取web服务器推送到队列中的消息,然后将消息构造成SQL,连接数据库并通过数据库事务执行SQL。
进一步的,调用LINUX进程管理API接口,每个进程对应一个消息队列,从对应的消息队列中获取消息,把消息转化为SQL语句,通过事务的方式执行SQL,若执行失败,消息重新投递到消息队列。
进一步的,所述步骤3还包括:
首先,对访问消息进行分析,获得访问消息字段描述信息;
然后,基于访问消息字段描述信息,获得消息所属用户;
然后,对消息所属用户进行排序,生成消息所属用户重要度排序信息;
然后,基于消息所属用户重要度排序信息,生成相应的访问消息重要度排序信息;
然后,基于访问消息重要度排序信息,访问消息按照排序结果对数据库进行访问。
其中,本申请中的方法还可以根据用户属性,在数据库访问请求高并发时,允许重要用户优先访问,保障了重要用户的正常使用,如:首先,对访问消息进行分析,获得访问消息字段描述信息;然后,基于访问消息字段描述信息,获得消息所属用户;然后,对消息所属用户进行排序,生成消息所属用户重要度排序信息;然后,基于消息所属用户重要度排序信息,生成相应的访问消息重要度排序信息;然后,基于访问消息重要度排序信息,访问消息按照排序结果对数据库进行访问;用户重要度排序可以为:客户》领导》普通员工,具体排序方式可以根据实际需求进行变更,可以实现根据不同的用户需求进行个性化定制,可以保障重要用户的需求。
本申请提供的一个或多个技术方案,至少具有如下技术效果或优点:
本申请中的方法解决了高并发下,在开启数据库事务时,数据库资源锁竞争的问题,极大提高了数据库的处理效率,本发明是对现有技术方案的优化,在web服务器和数据库服务器之间引入了一个中间件(即数据缓冲单元),使web数据服务器和数据库服务器解耦,可以避免高并发时web服务器直接对数据库服务器的冲击,利用消息队列排队机制、以及控制消息队列数和守护进程数,从而控制了单位时间内对数据库的访问,避免了单位时间内数据库锁资源的竞争,实现了可以控制数据库在单位时间内的连接数,数据读写量从而提高数据库的处理能力的技术效果。
附图说明
此处所说明的附图用来提供对本发明实施例的进一步理解,构成本申请的一部分,并不构成对本发明实施例的限定;
图1是现有技术中数据库处理流程示意图;
图2是本申请中数据库数据缓冲处理方法示意图。
具体实施方式
本发明提供了一种数据库数据缓冲处理方法,解决了现有的互联网金融数据处理经常存在高并发请求,数据库锁资源竞争激烈,导致数据库无法正常处理的技术问题,实现了可以控制数据库在单位时间内的连接数,数据读写量从而提高数据库的处理能力的技术效果。
为了能够更清楚地理解本发明的上述目的、特征和优点,下面结合附图和具体实施方式对本发明进行进一步的详细描述。需要说明的是,在相互不冲突的情况下,本申请的实施例及实施例中的特征可以相互组合。
在下面的描述中阐述了很多具体细节以便于充分理解本发明,但是,本发明还可以采用其他不同于在此描述范围内的其他方式来实施,因此,本发明的保护范围并不受下面公开的具体实施例的限制。
请参考图2,本申请提供了一种数据库数据缓冲处理方法,所述方法包括:
步骤1:获得数据库实时进程访问量,并判断实时进程访问量是否超过预设范围;若超出预设范围则进行步骤2;若未超出预设范围,则不进行处理;
步骤2:启动数据缓冲单元,将访问数据库的消息利用消息队列进行存储;
步骤3:将消息队列中的访问消息发送到数据库,并控制数据库实时进程访问量在预设范围内。
本发明是对现有技术方案的优化,在web服务器和数据库服务器之间引入了一个中间件(中间件为本发明),使web数据服务器和数据库服务器解耦,可以避免高并发时web服务器直接对数据库服务器的冲击,以下是本发明技术方案的详细说明:
(1)web服务器接收到浏览器的请求,将请求根据不同业务封装成消息,消息格式为json结构体,内容如下:
{"userId":10,"amount":500,"cateId":3,"action":"update","desc":"recharge","created":1482464210}
消息属性描述:
userId消息所属用户ID,类型int
amount充值金额,类型float
cateId业务类型
action操作指令,类型string
desc消息描述
created消息生成时间,类型int(unix时间戳)
(2)web服务器调用消息队列接口将消息推送到用户所属消息队列,细节如下:
消息队列采用了开源中间件redis,消息队列为先进先出队列,系统预设消息队列个数n(1,2,3,…,n),消息推送规则:queueId=userId%n;queueId为消息队列编号,userId为消息所属用户ID,n为系统预设消息队列数。
web服务器构造的消息通过消息队列接口,将会被推送到编号为queueId的消息队列。
同一用户的消息只会进入同一个消息队列,消息队列接口为redis提供。
(3)守护进程通过消息队列接口获取web服务器推送到队列中的消息,然后将消息构造成SQL,连接数据库并通过数据库事务执行SQL。细节如下:
守护进程是一个多进程的守护程序,运行于LINUX环境,代码实现调用了LINUX进程管理API接口实现的,每个进程对应一个消息队列,进程数等于消息队列数,消息队列编号queueId对应workerId,如:消息队列编号为queueId=2则对应的守护进程编号workerId=2;进程编号为workerId的守护进程会通过消息队列接口实时监控队列消息,将消息取出后构造成SQL,并连接数据库,通过数据库事务执行SQL。同一个用户的消息只会进入同一个消息队列,让同一个进程处理(避免了多个进程同时操作用户资金账户)。
本申请提供的一个或多个技术方案,至少具有如下技术效果或优点:
本申请中的方法解决了高并发下,在开启数据库事务时,数据库资源锁竞争的问题,极大提高了数据库的处理效率,本发明是对现有技术方案的优化,在web服务器和数据库服务器之间引入了一个中间件(即数据缓冲单元),使web数据服务器和数据库服务器解耦,可以避免高并发时web服务器直接对数据库服务器的冲击,利用消息队列排队机制、以及控制消息队列数和守护进程数,从而控制了单位时间内对数据库的访问,避免了单位时间内数据库锁资源的竞争,实现了可以控制数据库在单位时间内的连接数,数据读写量从而提高数据库的处理能力的技术效果。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (6)
1.一种数据库数据缓冲处理方法,其特征在于,所述方法包括:
步骤1:获得数据库实时进程访问量,并判断实时进程访问量是否超过预设范围;若超出预设范围则进行步骤2;若未超出预设范围,则不进行处理;
步骤2:启动数据缓冲单元,将访问数据库的消息利用消息队列进行存储;
步骤3:将消息队列中的访问消息发送到数据库,并控制数据库实时进程访问量在预设范围内。
2.根据权利要求1所述的数据库数据缓冲处理方法,其特征在于,所述步骤2具体包括:
步骤2.1:web服务器接收到浏览器的请求,将请求根据不同业务封装成消息;
步骤2.2:基于消息的结构和属性,web服务器调用消息队列接口将消息推送到用户所属消息队列。
3.根据权利要求2所述的数据库数据缓冲处理方法,其特征在于,消息队列采用开源中间件redis,消息队列为先进先出队列,系统预设消息队列个数n(1,2,3,…,n),消息推送方式为:queueId=userId%n;queueId为消息队列编号,userId为消息所属用户ID;web服务器构造的消息通过消息队列接口,将会被推送到编号为queueId的消息队列。
4.根据权利要求1所述的数据库数据缓冲处理方法,其特征在于,所述将消息队列中的访问消息发送到数据库,具体包括:
守护进程通过消息队列接口获取web服务器推送到队列中的消息,然后将消息构造成SQL,连接数据库并通过数据库事务执行SQL。
5.根据权利要求4所述的数据库数据缓冲处理方法,其特征在于,调用LINUX进程管理API接口,每个进程对应一个消息队列,从对应的消息队列中获取消息,把消息转化为SQL语句,通过事务的方式执行SQL,若执行失败,消息重新投递到消息队列。
6.根据权利要求1所述的数据库数据缓冲处理方法,其特征在于,所述步骤3还包括:
首先,对访问消息进行分析,获得访问消息字段描述信息;
然后,基于访问消息字段描述信息,获得消息所属用户;
然后,对消息所属用户进行排序,生成消息所属用户重要度排序信息;
然后,基于消息所属用户重要度排序信息,生成相应的访问消息重要度排序信息;
然后,基于访问消息重要度排序信息,访问消息按照排序结果对数据库进行访问。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710045859.8A CN106815354A (zh) | 2017-01-22 | 2017-01-22 | 一种数据库数据缓冲处理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710045859.8A CN106815354A (zh) | 2017-01-22 | 2017-01-22 | 一种数据库数据缓冲处理方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN106815354A true CN106815354A (zh) | 2017-06-09 |
Family
ID=59111497
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710045859.8A Pending CN106815354A (zh) | 2017-01-22 | 2017-01-22 | 一种数据库数据缓冲处理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106815354A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108897886A (zh) * | 2018-07-09 | 2018-11-27 | 掌阅科技股份有限公司 | 页面展示方法、计算设备及计算机存储介质 |
TWI678087B (zh) * | 2018-11-22 | 2019-11-21 | 財團法人工業技術研究院 | 訊息佇列發佈與訂閱之同步方法及其系統 |
CN111382178A (zh) * | 2020-03-10 | 2020-07-07 | 澳克多普有限公司 | 一种网络任务分配方法、系统、设备和存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7290015B1 (en) * | 2003-10-02 | 2007-10-30 | Progress Software Corporation | High availability via data services |
CN102915374A (zh) * | 2012-11-07 | 2013-02-06 | 北京搜狐新媒体信息技术有限公司 | 一种控制数据库资源访问的方法、装置及系统 |
CN103559120A (zh) * | 2013-11-13 | 2014-02-05 | 北京网秦天下科技有限公司 | 日志记录方法以及服务器 |
CN104408088A (zh) * | 2014-11-11 | 2015-03-11 | 北京奇虎科技有限公司 | 并发请求的控制方法及装置 |
CN105354328A (zh) * | 2015-11-25 | 2016-02-24 | 南京莱斯信息技术股份有限公司 | 一种解决NoSQL数据库并发访问冲突的系统及方法 |
CN106257456A (zh) * | 2016-07-08 | 2016-12-28 | 北京京东尚科信息技术有限公司 | 高并发请求下提高数据库稳定性的方法、装置及系统 |
-
2017
- 2017-01-22 CN CN201710045859.8A patent/CN106815354A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7290015B1 (en) * | 2003-10-02 | 2007-10-30 | Progress Software Corporation | High availability via data services |
CN102915374A (zh) * | 2012-11-07 | 2013-02-06 | 北京搜狐新媒体信息技术有限公司 | 一种控制数据库资源访问的方法、装置及系统 |
CN103559120A (zh) * | 2013-11-13 | 2014-02-05 | 北京网秦天下科技有限公司 | 日志记录方法以及服务器 |
CN104408088A (zh) * | 2014-11-11 | 2015-03-11 | 北京奇虎科技有限公司 | 并发请求的控制方法及装置 |
CN105354328A (zh) * | 2015-11-25 | 2016-02-24 | 南京莱斯信息技术股份有限公司 | 一种解决NoSQL数据库并发访问冲突的系统及方法 |
CN106257456A (zh) * | 2016-07-08 | 2016-12-28 | 北京京东尚科信息技术有限公司 | 高并发请求下提高数据库稳定性的方法、装置及系统 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108897886A (zh) * | 2018-07-09 | 2018-11-27 | 掌阅科技股份有限公司 | 页面展示方法、计算设备及计算机存储介质 |
TWI678087B (zh) * | 2018-11-22 | 2019-11-21 | 財團法人工業技術研究院 | 訊息佇列發佈與訂閱之同步方法及其系統 |
US10841390B2 (en) | 2018-11-22 | 2020-11-17 | Industrial Technology Research Institute | Method and system for synchronizing publication and subscription of message queues |
CN111382178A (zh) * | 2020-03-10 | 2020-07-07 | 澳克多普有限公司 | 一种网络任务分配方法、系统、设备和存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5421269B2 (ja) | Oltpデータをレポートするための、重複がないetlレスシステム及びその方法 | |
CN102831156B (zh) | 一种云计算平台上的分布式事务处理方法 | |
KR101959153B1 (ko) | 데이터베이스에서의 계좌와 관련된 거래 요청의 효율적인 처리를 위한 시스템 | |
US8156137B2 (en) | Data processing systems and methods | |
US20020032692A1 (en) | Workflow management method and workflow management system of controlling workflow process | |
US7730182B2 (en) | System and method for integrating management of components of a resource | |
US7454423B2 (en) | Enterprise link for a software database | |
KR0126245B1 (ko) | 체크인/체크아웃모델용 록킹 메카니즘 | |
US8260758B2 (en) | Utilizing shared numeric locks | |
CN107977376A (zh) | 分布式数据库系统及事务处理方法 | |
EP1782294A1 (en) | Method, computer system and software application for providing a central lock service | |
US6539397B1 (en) | Object-oriented paradigm for accessing system service requests by modeling system service calls into an object framework | |
US20080201333A1 (en) | State transition controlled attributes | |
US10147042B2 (en) | Synchronization for context-aware complex event processing | |
US20050050057A1 (en) | System and method for integrating management of resources between application services and applications | |
US11080068B2 (en) | Adaptive user-interface assembling and rendering | |
CN106815354A (zh) | 一种数据库数据缓冲处理方法 | |
CN112559522A (zh) | 数据存储方法、装置、查询方法、电子设备及可读介质 | |
US20140181134A1 (en) | Push-down of authority check within query engine | |
US7260831B1 (en) | Method and system for authorization and access to protected resources | |
CN114925084A (zh) | 分布式事务处理方法、系统、设备及可读存储介质 | |
US20050223356A1 (en) | System and method for program execution | |
EP1817674B1 (en) | Cache for an enterprise software system | |
US8949202B2 (en) | Technique for controlling access to data | |
US20200242104A1 (en) | Method and system for data handling |
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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20170609 |