CN102542054A - 一种利用缓存表来提高数据库数据插入性能的方法 - Google Patents

一种利用缓存表来提高数据库数据插入性能的方法 Download PDF

Info

Publication number
CN102542054A
CN102542054A CN2011104501246A CN201110450124A CN102542054A CN 102542054 A CN102542054 A CN 102542054A CN 2011104501246 A CN2011104501246 A CN 2011104501246A CN 201110450124 A CN201110450124 A CN 201110450124A CN 102542054 A CN102542054 A CN 102542054A
Authority
CN
China
Prior art keywords
data
cache table
database
cache
importing
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.)
Granted
Application number
CN2011104501246A
Other languages
English (en)
Other versions
CN102542054B (zh
Inventor
傅建记
余建成
吴晓前
詹友陆
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Xiamen Yaxun Zhilian Technology Co ltd
Original Assignee
Xiamen Yaxon Networks Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Xiamen Yaxon Networks Co Ltd filed Critical Xiamen Yaxon Networks Co Ltd
Priority to CN201110450124.6A priority Critical patent/CN102542054B/zh
Publication of CN102542054A publication Critical patent/CN102542054A/zh
Application granted granted Critical
Publication of CN102542054B publication Critical patent/CN102542054B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明一种利用缓存表来提高数据库数据插入性能的方法,首先建立两个基于内存的数据库缓存表,该缓存表与待最终插入的目的数据表的表结构相同;先将数据插入到第一缓存表中,待第一缓存表中的数据超过最大个数阈值后,再将第一缓存表的数据批量导入到目的数据表,在导入过程中,若有新的数据要插入数据库,则将新的数据插入到第二缓存表中,待第二缓存表中的数据超过最大个数阈值后,再将该第二缓存表中的数据导入到目的数据表中;本发明可以在不用升级硬件、避免造成数据库死锁的条件下大大提高数据库的插入性能。

Description

一种利用缓存表来提高数据库数据插入性能的方法
技术领域
本发明涉及一种利用缓存表来提高数据库数据插入性能的方法。
技术背景
大型业务应用系统,一般都要将系统相关业务数据存储到数据库之中。在系统实际运行过程中,将同类型的新增业务数据写入到数据库对应的数据表中,数据表的数据存储在服务器的硬盘,硬盘的写入性能影响了数据表的插入性能,当前硬盘的读写性能是服务器各组件中最低的一部分,硬盘的读写性能成为数据库数据表的插入性能的瓶颈。为了提高数据库的插入效率,现有采用的技术方案有:升级服务器硬件或者批量插入。
通过升级服务器硬件(主要是硬盘)的方法,可以较简单地实现数据库插入性能的提升,但是提升范围有限,且硬件开销比较大,综合性价比不高。
批量插入是一种将多条待插入数据拼接成一条语句然后一次提交到数据库执行的方法,可以不用升级硬件就获取到较大的性能提升,但在系统新增业务数据量巨大,业务系统对该表读取频繁的情况下容易造成数据表被锁住,从而引发频繁、阶段性的性能下降,不利于系统的稳定。
发明内容
针对现有技术方案的不足,本发明提出一种利用缓存表来提高数据库插入性能的方法,可以在不用升级硬件、避免造成数据库死锁的条件下大大提高数据库的插入性能。
本发明一种利用缓存表来提高数据库数据插入性能的方法,首先建立两个基于内存的数据库缓存表,该缓存表与待最终插入的目的数据表的表结构相同;先将数据插入到第一缓存表中,待第一缓存表中的数据超过最大个数阈值后,再将第一缓存表的数据批量导入到目的数据表,在导入过程中,若有新的数据要插入数据库,则将新的数据插入到第二缓存表中,待第二缓存表中的数据超过最大个数阈值后,再将该第二缓存表中的数据导入到目的数据表中,该第一或第二缓存表一旦将其中的数据导入至目的数据表中后,则所述的第一或第二缓存表立即清空;上述往第一或第二缓存表插入数据到最大个数阈值所需要的时间必须大于将该第一或第二缓存表中的数据导入到目的数据表所需时间。
采用本发明的技术方案后,由于缓存表是建立在内存之上,所以该表的插入性能取决于内存的写入性能,远远大于基于硬盘的数据表,只要在保证缓存表的容量够大的前提下,则就可以获取到近似于缓存表的数据插入性能。
附图说明
图1为本发明的流程示意图。
以下结合附图和具体实施例对本发明作进一步详述。
具体实施方式
本发明一种利用缓存表来提高数据库数据插入性能的方法,首先建立两个基于内存的数据库缓存表,该缓存表与待最终插入的目的数据表的表结构相同,因为缓存表是建立在内存之上,所以该表的插入性能取决于内存的写入性能,远远大于基于硬盘的数据表;先将数据插入到第一缓存表中,待第一缓存表中的数据超过最大个数阈值后,再将第一缓存表的数据批量导入到目的数据表,在导入过程中,若有新的数据要插入数据库,则将新的数据插入到第二缓存表中,待第二缓存表中的数据超过最大个数阈值后,再将该第二缓存表中的数据导入到目的数据表中,该第一或第二缓存表一旦将其中的数据导入至目的数据表中后,则所述的第一或第二缓存表立即清空;上述往第一或第二缓存表插入数据到最大个数阈值所需要的时间必须大于将该第一或第二缓存表中的数据导入到目的数据表所需时间。
如图1所示,本发明具体实现步骤如下:
步骤1、选用MYSQL作为数据库引擎来部署数据库,创建业务系统数据库BizDB;
步骤2、在业务系统数据库BizDB中创建以下数据表:
目的数据表,表引擎选择MyIsam,表结构中定义若干数据字段;
建立基于内存的第一和第二数据库缓存表,该缓存表的表结构与目的数据表相同;
步骤3、在业务系统数据库BizDB中创建以下存储过程:
存储过程1:参数为第一缓存表中各字段,将各参数插入到第一缓存表中,然后返回第一缓存表的当前数据行数,如果插入失败则返回0;
存储过程2:参数为第二缓存表中各字段,将各参数插入到第二缓存表中,然后返回第二缓存表的当前数据行数,如果插入失败则返回0;
存储过程3:参数为整型,限制为1或2,返回值BOOL型,根据参数将对应的缓存表中的数据存入目的数据表中,存成功后将原缓存表清空,并返回操作结果;
步骤4、创建业务程序,设置缓存表最大行数限制阈值,根据预先配置好的参数连接业务系统数据库BizDB,初始化当前缓存表标志位为1;
步骤5、等待待插入的业务数据,一旦接收到待插入的数据,则根据当前缓存表标志位选择待插入数据的存储过程,如果当前缓存表标志为1则执行步骤3中的存储过程1,如果当前缓存表标志位为2,则执行步骤3中的存储过程2;  
步骤6、执行插入数据的存储过程,并判断其返回值,如果返回值大于0且小于缓存表最大行数限制阈值,说明存储过程执行成功,且缓存表数据未满,执行步骤9,如果返回值为0,执行步骤7,如果返回值大于缓存表最大行数限制阈值,执行步骤8;
步骤7、程序执行异常,进行相应的异常处理,并打印日志,执行步骤9;
步骤8、若存储过程返回值大于缓存表最大行数限制阈值,说明该缓存表中的数据已满,切换缓存表标志位,原来为1的改为2,原来为2的改为1,并执行存储过程3,将数据已满的所述缓存表中的数据导入到目的数据表中,执行步骤9;
步骤9、判断是否结束数据插入,如果是则执行步骤10,如果否则执行步骤5;
步骤10、关闭数据库连接,退出数据插入过程。
以上所述,仅是本发明较佳实施例而已,并非对本发明的技术范围作任何限制,故凡是依据本发明的技术实质对以上实施例所作的任何细微修改、等同变化与修饰,均仍属于本发明技术方案的范围内。

Claims (1)

1.一种利用缓存表来提高数据库数据插入性能的方法,其特征在于:
首先建立两个基于内存的数据库缓存表,该缓存表与待最终插入的目的数据表的表结构相同;
先将数据插入到第一缓存表中,待第一缓存表中的数据超过最大个数阈值后,再将第一缓存表的数据批量导入到目的数据表,在导入过程中,若有新的数据要插入数据库,则将新的数据插入到第二缓存表中,待第二缓存表中的数据超过最大个数阈值后,再将该第二缓存表中的数据导入到目的数据表中,该第一或第二缓存表一旦将其中的数据导入至目的数据表中后,则所述的第一或第二缓存表立即清空; 
上述往第一或第二缓存表插入数据到最大个数阈值所需要的时间必须大于将该第一或第二缓存表中的数据导入到目的数据表所需时间。
CN201110450124.6A 2011-12-29 2011-12-29 一种利用缓存表来提高数据库数据插入性能的方法 Active CN102542054B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201110450124.6A CN102542054B (zh) 2011-12-29 2011-12-29 一种利用缓存表来提高数据库数据插入性能的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201110450124.6A CN102542054B (zh) 2011-12-29 2011-12-29 一种利用缓存表来提高数据库数据插入性能的方法

Publications (2)

Publication Number Publication Date
CN102542054A true CN102542054A (zh) 2012-07-04
CN102542054B CN102542054B (zh) 2017-02-08

Family

ID=46348933

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201110450124.6A Active CN102542054B (zh) 2011-12-29 2011-12-29 一种利用缓存表来提高数据库数据插入性能的方法

Country Status (1)

Country Link
CN (1) CN102542054B (zh)

Cited By (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103077713A (zh) * 2012-12-25 2013-05-01 青岛海信电器股份有限公司 一种语音处理方法及装置
CN103501297A (zh) * 2013-09-27 2014-01-08 杭州华三通信技术有限公司 一种门户认证方法和设备
CN103593440A (zh) * 2013-11-15 2014-02-19 北京国双科技有限公司 日志文件的读写方法及装置
WO2014059808A1 (zh) * 2012-10-19 2014-04-24 烽火通信科技股份有限公司 一种网管海量历史数据管理方法
CN103838521A (zh) * 2014-02-28 2014-06-04 华为技术有限公司 一种数据处理方法及装置
CN103945013A (zh) * 2013-01-17 2014-07-23 方正宽带网络服务股份有限公司 数据传输接口装置和数据传输方法
CN104156396A (zh) * 2014-07-16 2014-11-19 成都康赛信息技术有限公司 大数据环境下提高数据库性能的方法及系统
CN104360997A (zh) * 2014-04-01 2015-02-18 芜湖齐创自动化系统有限公司 一种基于结构化数据库的大数据漂移技术
CN104462029A (zh) * 2013-09-18 2015-03-25 北京新媒传信科技有限公司 一种智能终端中富文本显示的方法和系统
CN104657366A (zh) * 2013-11-18 2015-05-27 深圳市腾讯计算机系统有限公司 海量日志写入数据库的方法、装置和日志容灾系统
CN105335494A (zh) * 2015-10-20 2016-02-17 广州唯品会信息科技有限公司 用户数据导入方法及系统
WO2016101528A1 (zh) * 2014-12-26 2016-06-30 中兴通讯股份有限公司 内存数据库的数据处理方法及装置
CN109656932A (zh) * 2018-11-12 2019-04-19 武汉达梦数据库有限公司 一种数据同步时利用更新游标的数据初始化方法
CN110019259A (zh) * 2017-09-26 2019-07-16 亿阳信通股份有限公司 分布式索引服务引擎的数据更新方法、装置及存储介质
CN110069491A (zh) * 2017-11-29 2019-07-30 华为软件技术有限公司 数据合并方法及装置
CN112231329A (zh) * 2020-10-14 2021-01-15 北京人大金仓信息技术股份有限公司 向数据库插入数据的方法、装置、设备和可读存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5574902A (en) * 1994-05-02 1996-11-12 International Business Machines Corporation Efficient destaging of updated local cache pages for a transaction in a multisystem and multiprocess database management system with a high-speed shared electronic store
CN101046807A (zh) * 2006-03-31 2007-10-03 华为技术有限公司 存储数据已读的方法及装置
CN101170433A (zh) * 2006-10-25 2008-04-30 中兴通讯股份有限公司 数据库入库方法
CN101334795A (zh) * 2008-08-07 2008-12-31 金蝶软件(中国)有限公司 数据存储方法和装置
CN101515291A (zh) * 2009-03-26 2009-08-26 北京泰合佳通信息技术有限公司 一种将数据批量导入数据库的方法及系统

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5574902A (en) * 1994-05-02 1996-11-12 International Business Machines Corporation Efficient destaging of updated local cache pages for a transaction in a multisystem and multiprocess database management system with a high-speed shared electronic store
CN101046807A (zh) * 2006-03-31 2007-10-03 华为技术有限公司 存储数据已读的方法及装置
CN101170433A (zh) * 2006-10-25 2008-04-30 中兴通讯股份有限公司 数据库入库方法
CN101334795A (zh) * 2008-08-07 2008-12-31 金蝶软件(中国)有限公司 数据存储方法和装置
CN101515291A (zh) * 2009-03-26 2009-08-26 北京泰合佳通信息技术有限公司 一种将数据批量导入数据库的方法及系统

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
王志刚等: "《计算机操作系统》", 31 August 2005 *

Cited By (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2014059808A1 (zh) * 2012-10-19 2014-04-24 烽火通信科技股份有限公司 一种网管海量历史数据管理方法
CN103077713A (zh) * 2012-12-25 2013-05-01 青岛海信电器股份有限公司 一种语音处理方法及装置
CN103077713B (zh) * 2012-12-25 2019-02-01 青岛海信电器股份有限公司 一种语音处理方法及装置
CN103945013A (zh) * 2013-01-17 2014-07-23 方正宽带网络服务股份有限公司 数据传输接口装置和数据传输方法
CN104462029A (zh) * 2013-09-18 2015-03-25 北京新媒传信科技有限公司 一种智能终端中富文本显示的方法和系统
CN104462029B (zh) * 2013-09-18 2017-11-21 北京新媒传信科技有限公司 一种智能终端中富文本显示的方法和系统
CN103501297A (zh) * 2013-09-27 2014-01-08 杭州华三通信技术有限公司 一种门户认证方法和设备
CN103501297B (zh) * 2013-09-27 2017-03-15 杭州华三通信技术有限公司 一种门户认证方法和设备
CN103593440A (zh) * 2013-11-15 2014-02-19 北京国双科技有限公司 日志文件的读写方法及装置
CN104657366A (zh) * 2013-11-18 2015-05-27 深圳市腾讯计算机系统有限公司 海量日志写入数据库的方法、装置和日志容灾系统
CN103838521A (zh) * 2014-02-28 2014-06-04 华为技术有限公司 一种数据处理方法及装置
CN103838521B (zh) * 2014-02-28 2017-02-08 华为技术有限公司 一种数据处理方法及装置
CN104360997B (zh) * 2014-04-01 2017-11-14 芜湖齐创自动化系统有限公司 一种基于结构化数据库的大数据漂移方法
CN104360997A (zh) * 2014-04-01 2015-02-18 芜湖齐创自动化系统有限公司 一种基于结构化数据库的大数据漂移技术
CN104156396A (zh) * 2014-07-16 2014-11-19 成都康赛信息技术有限公司 大数据环境下提高数据库性能的方法及系统
CN104156396B (zh) * 2014-07-16 2017-12-01 成都康赛信息技术有限公司 大数据环境下提高数据库性能的方法及系统
WO2016101528A1 (zh) * 2014-12-26 2016-06-30 中兴通讯股份有限公司 内存数据库的数据处理方法及装置
CN105335494A (zh) * 2015-10-20 2016-02-17 广州唯品会信息科技有限公司 用户数据导入方法及系统
CN105335494B (zh) * 2015-10-20 2019-03-26 广州品唯软件有限公司 用户数据导入方法及系统
CN110019259A (zh) * 2017-09-26 2019-07-16 亿阳信通股份有限公司 分布式索引服务引擎的数据更新方法、装置及存储介质
CN110019259B (zh) * 2017-09-26 2023-09-22 亿阳信通股份有限公司 分布式索引服务引擎的数据更新方法、装置及存储介质
CN110069491A (zh) * 2017-11-29 2019-07-30 华为软件技术有限公司 数据合并方法及装置
CN109656932A (zh) * 2018-11-12 2019-04-19 武汉达梦数据库有限公司 一种数据同步时利用更新游标的数据初始化方法
CN112231329A (zh) * 2020-10-14 2021-01-15 北京人大金仓信息技术股份有限公司 向数据库插入数据的方法、装置、设备和可读存储介质
CN112231329B (zh) * 2020-10-14 2024-04-26 北京人大金仓信息技术股份有限公司 向数据库插入数据的方法、装置、设备和可读存储介质

Also Published As

Publication number Publication date
CN102542054B (zh) 2017-02-08

Similar Documents

Publication Publication Date Title
CN102542054A (zh) 一种利用缓存表来提高数据库数据插入性能的方法
CN102741843B (zh) 从数据库中读取数据的方法及装置
CN102541927B (zh) 一种实现数据缓存的方法和装置
CN103136243B (zh) 基于云存储的文件系统去重方法及装置
CN102156717B (zh) 一种将实体对象映射到数据库中的方法及装置
CN104021145A (zh) 一种混合业务并发访问的方法和装置
CN104423894A (zh) 数据储存装置以及快闪存储器控制方法
CN104573112B (zh) Oltp集群数据库中页面查询方法及数据处理节点
CN103530427A (zh) 一种基于多数据库的动态切换方法和装置
CN102880671A (zh) 一种面向分布式文件系统的主动重复数据删除方法
CN103793382B (zh) 一种数据库的数据处理方法及系统
CN102609305A (zh) 一种服务器集群中内存共享方法
CN105205178A (zh) 一种多进程访问内存数据库系统
CN107291392A (zh) 一种固态硬盘及其读写方法
CN104461384A (zh) 一种数据写入方法及存储设备
CN103513956A (zh) 一种处理器处理数据的方法以及装置
CN103345501A (zh) 数据库更新方法和装置
CN102024051B (zh) 分布式内存数据库数据更新方法
CN116088758A (zh) 优化方法、装置、计算机设备、存储介质和程序产品
CN102768672B (zh) 一种磁盘空间管理方法和装置
CN118152401A (zh) 数据存储方法、装置、设备、存储介质及程序产品
CN104268097A (zh) 一种元数据处理方法及系统
CN109542860A (zh) 基于hdfs的业务数据管理方法、终端设备
CN107766512B (zh) 一种日志数据存储方法和日志数据存储系统
CN106202271A (zh) Ota的产品数据库的读取方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CP03 Change of name, title or address

Address after: 361009 Xiamen Torch High tech Zone Software Park Innovation Building C Area 303-E, Xiamen, Fujian Province

Patentee after: Xiamen Yaxun Zhilian Technology Co.,Ltd.

Country or region after: China

Address before: Xiamen City, Fujian province 361009 software industry base in view of the road No. 46

Patentee before: XIAMEN YAXON NETWORK Co.,Ltd.

Country or region before: China

CP03 Change of name, title or address