2017-10-21 110 views
0

我想了解數據是如何真正處理和服務器之間發送的,但我無法找到一步步詳細說明。爲了解釋使用例如:如何在3臺計算機之間處理數據庫查詢數據?

假設你有100M的記錄,這是10GB的大小,你需要使用一個單獨的桌面計算機執行腳本通過LAN transfter 2和數據庫服務器之間的數據。總共有三臺電腦:

  1. 服務器A有源數據庫您正在選擇數據。
  2. 服務器B你正在寫的數據到目標數據庫。
  3. 桌面C是你在哪裏執行你的腳本,使用像SQL Developer或蟾蜍客戶端工具。

的SQL會是這個樣子:

Insert Into ServerBDatabase.MyTable (MyFields) 
Select MyFields 
From ServerADatabase.MyTable 

有人能解釋其中的數據進行處理,以及如何發出?甚至指向我一個很好的資源來閱讀這個主題。

例如,我想明白,如果這件事情是這樣的:

  1. 在桌面下的客戶端工具將查詢發送命令到DBMS服務器A在這一點上,所有這些都是通過LAN發送的是命令的文本。

  2. 在服務器A的DBMS接收查詢命令,解釋它,然後 進程在服務器A中的數據在這一點上,全10GB數據被加載到存儲器,用於處理和沒有通過LAN被髮送。

  3. 在服務器A上完成完整的100M記錄處理後,服務器A上的DBMS將查詢命令的文本和通過LAN的​​全部100M記錄的數據發送到服務器B上的DBMS。的制約,該數據被分解並以每秒比特的一些量在這些數據塊在量通過LAN發送的組塊,並裝載在服務器B上的存儲器中。

  4. 由於服務器B上的數據庫管理系統通過局域網接收數據塊,因此它將它重新組合在服務器B的內存中,以將其重新恢復到完整的100M記錄狀態。

  5. 一旦100M記錄完全由服務器B上的DBMS拼接在一起,服務器B上的DBMS就會執行查詢命令,以便將目標表中的記錄從目標表中一次一行地插入,並將其寫入到磁盤。

所有這些都是假設,所以我知道我可以全部錯誤,這就是爲什麼我尋求幫助。請幫助糾正我的錯誤和/或填寫空白。

+0

」在服務器A上處理了完整的100M記錄之後,服務器A上的DBMS將查詢命令的文本和通過LAN的​​完整100M記錄數據發送到服務器B上的DBMS。「.. ..我不認爲這是如何工作的。 –

+0

從Oracle開始,「From ServerADatabase.MyTable」無效。 –

回答

1

這是您的查詢:

Insert Into ServerBDatabase.MyTable (MyFields) 
    Select MyFields 
    From ServerADatabase.MyTable; 

據推測,您在連接到服務器A的客戶端工具執行此(雖然同樣的道理也適用於服務器B)。整個查詢被髮送到服務器,並且服務器A需要遠程連接到服務器B.

換句話說,一旦發送查詢,客戶端與它無關 - 除了等待查詢發送。

至於從一個數據庫插入到另一個數據庫的細節,這些取決於數據庫。我希望數據可以流入服務器B的表中,全部在單個事務中。確切的細節可能取決於特定的數據庫軟件及其配置。 「

相關問題