日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

oracle入库的速度能到多少_多线程能提高Oracle的入库速度吗

發布時間:2023/12/20 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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的入库速度吗的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。