2017-10-21 74 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的表中,全部在单个事务中。确切的细节可能取决于特定的数据库软件及其配置。 “

相关问题