oracle入库的速度能到多少_多线程能提高Oracle的入库速度吗
多线程能提高Oracle的入库速度吗
最近常常和同事们讨论“系统架构”,其中有不免提到如何使用“多线程”来改善系统性能。有些同事普遍有一种“认为”:他们认为“多线程”是改善系统性能的“灵丹妙药”,他们简单的认为,“多线程”导致“并发”,而并发显然是改善性能的好途径。
在讨论这个问题前,我们还是复习一下基本概念。我们从“进程”、“多进程”、“线程”、“多线程”说起。
进程 :进程就是已执行程式的实体(参见:wiki)。简单点说就是:运行着的程序(好像和上句差不多:) )。
“多进程”其实就是“多任务”:进程是现今“分时系统”以及“多任务操作系统”的基本运作单位。操作系统在同一段时间内加载多个程式和行程到内存中,并分时间片完成(或称多任务),以在一个CPU上表现出同时执行的感觉。Unix, Windows XP, Linux都可以称为多任务操作系统;XP也可以勉强称为“分时系统”;Unix和Linux当然可以被称为“分时系统”)。当我们执行DOS(DOS是单任务OS,虽然它有所谓的TSR技术),必须把上一个程序退出来,才能执行下面的程序。而在Windows环境下,我们可以一边“下载电影”,一边“听 mp3”,同时还可以“上网”。这就是多任务带给我们的好处。
线程 :具体概念参见wiki。线程和进程的核心区别就是“是否存在独立的地址空间”。每一个进程都有自己的“地址空间”,而线程是共享“地址空间”的。这带来的好处就是:线程间的切换成本要显著小于进程间的切换成本。我们举一个通俗(是不是庸俗?)例子来说明进程和线程的区别。有一个花心的男孩,同时和两个女孩谈恋爱,但由于这个“恋爱过程”始终在空间上是不能够交叉的,也就是说这两个女孩始终碰不到面,这对于这个男孩来说这就是“多任务”。如果象韦小宝一样,他的大小老婆都住在一起,他可以和他的七个老婆打情骂俏,由于他们在同一个“地址空间”因此这就是“多线程”。显然花心男的“任务(进程)”的切换需要改变“地址空间”--跑来跑去,还需要分别记住对不同“女友”的不同许诺,以及不同的“誓言”----保存环境变量,这个明显要比韦小宝“多进程”的切换要辛苦的多。
多线程能够为我们带来什么好处呢?我们从“下载电影”说起,比如,我可以“多任务”的起N个ftp程序,分别从不同的地址下载N部电影。你可以通过定时查看每小时你的磁盘减少了多少空间,来判断你每小时下载了多少内容(这称为吞吐量)。虽然这种方法,可能我们有很高的吞吐量,但也显然存在不少缺点,比如,无法加快单一电影的下载速度(十个妈妈不可能在一个月生出一个宝宝来)。具有“多线程”的功能的“迅雷”就有许多优点了,它可以把同一部电影分解成N部分,分别从不同的网址下载,当某一个网址下载链接不可用时,它有可以自动切换到其他网址上(线程间的切换成本是很小的)。但这里有些前提,常常被我们忽略:
1、我们的CPU有足够的能力起多个线程(在配置不高的机器上,会感到迅雷很占资源);
2、我们的硬盘读写速度要远高于“下载速度”。
3、下载电影的网站的网速并不高。这点特别重要,如果我们是1Mbit的带宽,而ftp下载某电影已经能够稳定在1Mbit(256K字节),我们换用迅雷除了让我们的机器慢下来,是不能够改善下载速度的。
4、起N个ftp客户端程序下载的吞吐量,不比迅雷差。只是你下载的电影都只是开头部分。
关于“多线程”技术能否给系统提速,核心的问题在于找到系统的“性能瓶颈”。
再看看我们正在开发的系统存在的问题吧。我们正在开发的系统是一个网管系统,它需要大量的采集网络设备数据到数据库中,同时提供用户界面给网络运维人员查看是否存在网络告警、网络性能数据、以及网络的拓扑情况。
1、多线程采集数据入库(数据库)能改善系统性能吗?
显然不能!由于有大量的采集数据等待进入数据库,以及存在大量的Oracle后台运算,使得当前的系统瓶颈在Oracle上,而Oracle的性能瓶颈在磁盘I/O上(有大量的全表扫描SQL以及大量的写入操作)。这里的情况和上面迅雷利用“多线程”改善性能的情况一点也不同,因此改善 Oracle的磁盘I/O才是正道。
2、Java连接池技术能够改善入库速度吗?
我们为了改善采集速度,采用了多台采集机并发采集网络数据,这些采集机都需要把采集的数据入库到Oracle。Java连接池技术主要是为了解决DB连接过程的成本问题,对于存在大量短时连接的Web应用,就凸显起好处了(参见:Java jdbc数据库连接池总结)。而我们的采集过程本来就是一个连续的不间断过程。其实这里每个采集机只需要抓住一个Oracle连接不放手就可以了,完全没有必要每5分钟一次的采集过程完成后就释放连接,随后再重新建立Oracle连接。更加让人无法理解的是每一个采集机的连接池竟然高达10个连接,这有什么用?
总而言之,我们需要改善Oracle的整体入库“吞吐量”,线程在里显然无用武之处。
oracle入库的速度能到多少_多线程能提高Oracle的入库速度吗相关推荐
- oracle 查看表被谁删了_【分享】Oracle 常用运维命令大全
一.oracle建库与删库命令 (1)oracle11g建库(一般习惯配置gdbname与sid名一样,sys密码与system密码一样,以方便记忆) [oracledb@ ~]$ dbca -sil ...
- oracle使用 union all 用自增序列_值得收藏的Oracle数据库性能优化
值得收藏的Oracle数据库性能优化 年尾了,新的一波面试军又要开始了,被问到最多的可能就是性能优化,尤其是数据库性能优化,这个面试题不管是初中高级工程师都会被问到.因此我觉得下面31点ORACLE优 ...
- 网页速度很慢优化方案:如何提高网页加载速度,提升网站加载速度
网站加载速度的快慢,直接影响用户的去留.这里为大家持续更新我的经验,帮你解决网页速度很慢,慢在哪里,该怎么优化的问题.希望对你有所帮助! 1. 网站空间要好:网站需要一个稳定的服务器或者虚拟机,可以 ...
- oracle 外键约束不检查历史数据_如何一键禁用Oracle所有外键约束?
概述 最近在转移数据库,进行数据导入的时候,遇到一件麻烦事,就是表间外键约束的存在,导致insert频频报错,批量执行sql语句又是顺序执行,手动输入的工作量又太大.所以这里考虑是不是可以把外键约束全 ...
- oracle 一个实例创建多个数据库_创建多个Oracle数据库及相应的实例
转 http://blog.csdn.net/luiseradl/article/details/6972217 对于使用过SQL Server数据库的用户可以会对Oracle中的数据库的实例的概念理 ...
- oracle时间去掉时分秒的时间_超详细的oracle修改AWR采样时间间隔和快照保留时间教程...
概述 10g版本中默认是保留7天,11g版本中默认保留8天,采集间隔是1小时,这个信息可以从DBA_HIST_WR_CONTROL视图中获得.如果要修改AWR采样时间间隔和快照保留时间应该怎么改呢?下 ...
- 如何提高页面加载速度 || 前端的性能优化 || 浏览器渲染页面的过程是什么
1.降低请求量 ① 合并资源,减少http请求数量. ② lazyLoad,如图片懒加载.分批加载,每次只加载一部分. ③ 使用字体图标或CSS绘制,来代替部分图片. 2.加快请求速度 ...
- oracle存储查询出来的值_技术分享|浅析ORACLE数据库物理体系结构及其对应优化策略...
张志国 合肥科技研发中心 Oracle数据库服务器有两个主要的组成部分:数据库和实例(instance).Oracle数据库用于存储和检索信息,是数据的集合.Oracle实例是指数据库服务器的内存及相 ...
- mysql500万数据查询速度_是什么影响了数据库查询速度
一.什么影响了数据库查询速度 1.1 影响数据库查询速度的四个因素 1.2 风险分析 QPS:Queries Per Second意思是"每秒查询率",是一台服务器每秒能够相应的查 ...
最新文章
- 为什么有些xpath绝对路径拿不到数据_Python爬虫,登陆神器Selenium之xpath的使用
- javascript事件详细说明
- 1个多月就能看到效果的减肥大法 - 健康程序员,至尚生活!
- 洛谷 P4012 深海机器人问题【费用流】
- 摄像头又换位置了!最新iPhone XI 渲染图曝光
- 840万应届生创历史新高,企业大规模缩招,互联网行业首次出现需求负增长
- 【写作技巧】毕业论文写作资料--刊物搜索
- Halcon PDF文档(hdevelop_users_guide)学习总结之五——关于图形窗口
- 测试Join(插队)
- android多版本打包,Android的持续化集成及多版本打包
- Android 如何全局获取Context
- 三维全景融合拼接技术
- RK3288 开发板 排插物理引脚对应图以及如何进入android6.0.1内核终端、uboot终端
- SOHO中国高管建“老鼠仓”吸钱 大企成空壳谁之责?
- 想和应用宝sig签名谈谈
- java制作SM2证书
- 二十一世纪大学英语读写基础教程学习笔记(原文)——8 - Young and in Love(超年轻恋人)
- 【RMAN】RMAN跨版本恢复(中)
- 计算机组成原理第三章例题解析(关于存储器容量扩充)
- 蓝桥杯-阶乘运算和高精度加法(Java)