CN106934037A - 一种高并发实现数据库快速加载数据的方法 - Google Patents
一种高并发实现数据库快速加载数据的方法 Download PDFInfo
- Publication number
- CN106934037A CN106934037A CN201710152982.XA CN201710152982A CN106934037A CN 106934037 A CN106934037 A CN 106934037A CN 201710152982 A CN201710152982 A CN 201710152982A CN 106934037 A CN106934037 A CN 106934037A
- Authority
- CN
- China
- Prior art keywords
- data
- realizes
- high concurrent
- database
- loading
- 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/21—Design, administration or maintenance of databases
- G06F16/214—Database migration support
-
- 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/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种高并发实现数据库快速加载数据的方法,所述方法通过shell实现多线程和线程数控制,结合数据加载工具实现高并发的数据加载。本发明方法可以并行多线程调用数据加载工具进行数据加载,实现数据加载的自动化,提高I/O利用率,提高加载效率。
Description
技术领域
本发明涉及数据库技术领域,具体涉及一种高并发实现数据库快速加载数据的方法,主要针对数据库加载大数据量缓慢的问题,提高数据加载速度,实现数据库数据的快速迁移,从而降低数据迁移成本。
背景技术
在linux、unix操作***平台进行大数据量异构数据库迁移、以及分析性数据仓库加载日增量数据的过程中,发现数据加载往往会成为整个数据迁移的瓶颈所在。
基于linux、unix操作***的数据加载工具一般都是单进程,如果要实现并行加载数据,需要人工启动多个进程,操作不方便且数据加载缓慢。
单线程进行数据加载,由于无法充分利用I/O资源,使I/O成为数据加载的瓶颈,往往无法在规定的时间窗口内完成数据加载任务,导致数据迁移时间延长,增加了数据迁移的成本。
虽然部分数据库的加载工具能够支持单表加载过程中的并行,但是在面对大数据量的加载任务时,仍然无法满足性能需要。
发明内容
本发明要解决的技术问题是:本发明针对以上问题,提供一种高并发实现数据库快速加载数据的方法。
本发明所采用的技术方案为:
一种高并发实现数据库快速加载数据的方法,所述方法通过shell实现多线程和线程数控制,结合数据加载工具实现高并发的数据加载,提高I/O利用率,实现数据库数据的快速加载。
所述方法线程控制通过管道实现的,当管道无内容可读时,进程不执行;每个进程执行完成后,向管道写入一个换行符,从而保证进程数是指定的。
所述方法通过config.cfg文件配置数据库信息、目录路径以及线程数。
所述数据加载过程通过程序自动加载,数据加载过程全程不需要用户的干预,用户可以利用剩余时间从事其它工作。
所述数据加载过程采用定时任务,自动判断数据文件是否到达,如果数据文件已经全部到达,便会启动数据加载任务。
所述数据加载过程通过日志记录,以方便用户查看,核对数据加载的记录数是否正确;同时记录加载失败的数据。
所述数据加载工具包括ORACLE SQL*LOADER,DB2 load,KDB kdloader。
本发明的有益效果为:
本发明方法可以并行多线程调用数据加载工具进行数据加载,实现数据加载的自动化,提高I/O利用率,提高加载效率。
具体实施方式
根据具体实施方式对本发明进一步说明:
实施例1:
一种高并发实现数据库快速加载数据的方法,所述方法通过shell实现多线程和线程数控制,结合数据加载工具实现高并发的数据加载,提高I/O利用率,实现数据库数据的快速加载。
实施例2
在实施例1的基础,本实施例所述方法线程控制通过管道实现的,当管道无内容可读时进程不执行;每个进程执行完成后,向管道写入一个换行符,从而保证进程数是指定的。
所述方法多进程实现并控制进程数算法如下:
#!/bin/bash
#允许的进程数
THREAD_NUM=200
#定义描述符为9的管道
mkfifo tmp
exec 9<>tmp
#预先写入指定数量的换行符,一个换行符代表一个进程
for ((i=0;i<$THREAD_NUM;i++))
do
echo -ne "\n" 1>&9
done
if [ $# != 1 ] ;then
echo "The parameters you enter is not correct !";
exit -1;
fi
while read line
do
{
#进程控制
read -u 9
{
#isok=`curl -I -o /dev/null -s -w %{http_code} $line`
if [ "$isok" = "200" ]; then
echo $line "OK"
else
echo $line "no"
fi
echo -ne "\n" 1>&9
}&
}
done < $1
wait
echo "执行结束"
rm tmp
上述核心算法可以保证指定数量的子进程。
实施例3
在实施例1或2的基础,本实施例所述方法通过config.cfg文件配置数据库信息、目录路径以及线程数。
实施例4
在实施例3的基础,本实施例所述数据加载过程通过程序自动加载,数据加载过程全程不需要用户的干预,用户可以利用剩余时间从事其它工作。
实施例5
在实施例4的基础,本实施例所述数据加载过程采用定时任务,自动判断数据文件是否到达,如果数据文件已经全部到达,便会启动数据加载任务。
实施例6
在实施例5的基础,本实施例所述数据加载过程通过日志记录,以方便用户查看,核对数据加载的记录数是否正确;同时记录加载失败的数据。
实施例7
在实施例6的基础,本实施例所述数据加载工具包括ORACLE SQL*LOADER,DB2 load,KDB kdloader等。
实施方式仅用于说明本发明,而并非对本发明的限制,有关技术领域的普通技术人员,在不脱离本发明的精神和范围的情况下,还可以做出各种变化和变型,因此所有等同的技术方案也属于本发明的范畴,本发明的专利保护范围应由权利要求限定。
Claims (7)
1.一种高并发实现数据库快速加载数据的方法,其特征在于,所述方法通过shell实现多线程和线程数控制,结合数据加载工具实现高并发的数据加载。
2.根据权利要求1所述的一种高并发实现数据库快速加载数据的方法,其特征在于,所述方法线程控制通过管道实现的,当管道无内容可读时,进程不执行;每个进程执行完成后,向管道写入一个换行符,从而保证进程数是指定的。
3.根据权利要求1或2所述的一种高并发实现数据库快速加载数据的方法,其特征在于,所述方法通过config.cfg文件配置数据库信息、目录路径以及线程数。
4.根据权利要求3所述的一种高并发实现数据库快速加载数据的方法,其特征在于,所述数据加载过程通过程序自动加载。
5.根据权利要求4所述的一种高并发实现数据库快速加载数据的方法,其特征在于,所述数据加载过程采用定时任务,自动判断数据文件是否到达,如果数据文件已经全部到达,便会启动数据加载任务。
6.根据权利要求5所述的一种高并发实现数据库快速加载数据的方法,其特征在于,所述数据加载过程通过日志记录,同时记录加载失败的数据。
7.根据权利要求6所述的一种高并发实现数据库快速加载数据的方法,其特征在于,所述数据加载工具包括ORACLE SQL*LOADER,DB2 load,KDB kdloader。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710152982.XA CN106934037A (zh) | 2017-03-15 | 2017-03-15 | 一种高并发实现数据库快速加载数据的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710152982.XA CN106934037A (zh) | 2017-03-15 | 2017-03-15 | 一种高并发实现数据库快速加载数据的方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN106934037A true CN106934037A (zh) | 2017-07-07 |
Family
ID=59433141
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710152982.XA Pending CN106934037A (zh) | 2017-03-15 | 2017-03-15 | 一种高并发实现数据库快速加载数据的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106934037A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108776710A (zh) * | 2018-06-28 | 2018-11-09 | 农信银资金清算中心有限责任公司 | 一种数据库数据的并发装载方法及装置 |
CN110347673A (zh) * | 2019-05-30 | 2019-10-18 | 平安银行股份有限公司 | 数据文件加载方法、装置、计算机设备以及存储介质 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6044394A (en) * | 1997-07-21 | 2000-03-28 | International Business Machines Corporation | Managing independently executing computer tasks that are interrelated by dataflow |
US7299237B1 (en) * | 2004-08-19 | 2007-11-20 | Sun Microsystems, Inc. | Dynamically pipelined data migration |
CN103049533A (zh) * | 2012-12-23 | 2013-04-17 | 北京人大金仓信息技术股份有限公司 | 一种快速向数据库加载数据的方法 |
CN104408165A (zh) * | 2014-12-08 | 2015-03-11 | 畅捷通信息技术股份有限公司 | 高并发下的数据存储方法和装置 |
CN105183854A (zh) * | 2015-09-08 | 2015-12-23 | 浪潮(北京)电子信息产业有限公司 | 一种数据库卸载数据的调度方法 |
CN105260485A (zh) * | 2015-11-20 | 2016-01-20 | 杭州数梦工场科技有限公司 | 一种数据加载的方法和装置 |
CN105468784A (zh) * | 2015-12-24 | 2016-04-06 | 北京京东尚科信息技术有限公司 | 处理高并发流量的方法及其装置 |
-
2017
- 2017-03-15 CN CN201710152982.XA patent/CN106934037A/zh active Pending
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6044394A (en) * | 1997-07-21 | 2000-03-28 | International Business Machines Corporation | Managing independently executing computer tasks that are interrelated by dataflow |
US7299237B1 (en) * | 2004-08-19 | 2007-11-20 | Sun Microsystems, Inc. | Dynamically pipelined data migration |
CN103049533A (zh) * | 2012-12-23 | 2013-04-17 | 北京人大金仓信息技术股份有限公司 | 一种快速向数据库加载数据的方法 |
CN104408165A (zh) * | 2014-12-08 | 2015-03-11 | 畅捷通信息技术股份有限公司 | 高并发下的数据存储方法和装置 |
CN105183854A (zh) * | 2015-09-08 | 2015-12-23 | 浪潮(北京)电子信息产业有限公司 | 一种数据库卸载数据的调度方法 |
CN105260485A (zh) * | 2015-11-20 | 2016-01-20 | 杭州数梦工场科技有限公司 | 一种数据加载的方法和装置 |
CN105468784A (zh) * | 2015-12-24 | 2016-04-06 | 北京京东尚科信息技术有限公司 | 处理高并发流量的方法及其装置 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108776710A (zh) * | 2018-06-28 | 2018-11-09 | 农信银资金清算中心有限责任公司 | 一种数据库数据的并发装载方法及装置 |
CN108776710B (zh) * | 2018-06-28 | 2020-06-30 | 农信银资金清算中心有限责任公司 | 一种数据库数据的并发装载方法及装置 |
CN110347673A (zh) * | 2019-05-30 | 2019-10-18 | 平安银行股份有限公司 | 数据文件加载方法、装置、计算机设备以及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
GB2599267A (en) | Robotic process automation system with separate platform, bot and command class loaders | |
CN106598705A (zh) | 一种异步任务的调度方法、装置、***以及电子设备 | |
CN111488255A (zh) | 多线程并发监控方法、装置、设备及存储介质 | |
CN106293893A (zh) | 作业调度方法、装置及分布式*** | |
CN107368359A (zh) | 一种异步任务执行方法及其存储介质、装置 | |
US20160239345A1 (en) | Apparatus and method for managing a plurality of threads in an operating system | |
CN104360824A (zh) | 一种数据合并的方法和装置 | |
CN106934037A (zh) | 一种高并发实现数据库快速加载数据的方法 | |
CN103197960A (zh) | 用于批量作业***的调度方法及*** | |
CN104461521A (zh) | 一种应用程序重放方法及*** | |
US20100306778A1 (en) | Locality-based scheduling in continuation-based runtimes | |
CN107179982B (zh) | 一种跨进程调试方法和装置 | |
CN107861715B (zh) | 一种业务组建***及方法 | |
CN105096014A (zh) | 远程录制作业运行情况的方法和*** | |
EP3422183B1 (en) | Managing parallel processing | |
US20140136570A1 (en) | Controller and program | |
US9552223B2 (en) | Post-return asynchronous code execution | |
CN113485812B (zh) | 基于大数据量任务的分区并行处理方法及*** | |
CN105183854A (zh) | 一种数据库卸载数据的调度方法 | |
CN102799526A (zh) | 一种分布式智能调度方法 | |
US20090254885A1 (en) | System and a method for managing configurations of automatic tests | |
US8689222B2 (en) | Controlling priority of multi-threaded hardware resources by system calls | |
CN110377494A (zh) | 一种解决cpu优化引发的多线程问题的方法及*** | |
CN109992388A (zh) | 一种用于核电厂安全级设备软件多任务管理*** | |
KR101396781B1 (ko) | 응용프로그램 관리장치 및 관리방법 |
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 |
Application publication date: 20170707 |
|
RJ01 | Rejection of invention patent application after publication |