跨网络移动数据造成了除直接磁盘存取以外的延迟。
当应用程序通过网络向另外一台计算机上的数据库服务器发送一个查询或更新请求时,就会发生网络延迟。虽然数据库服务器在远程主机上执行查询,但是该数据库服务器要通过网络将输出返回至应用程序。
通过网络发送的数据由命令消息和缓冲区大小的行数据块组成。尽管根据网络和计算机的不同,详细信息可能有所不同,但是数据库服务器网络活动遵循一个简单的模型,即:一台计算机(客户机)向另一台计算机(服务器)发送请求。 服务器使用表的数据块作出响应。
响应的传输也受到网络延迟的影响。
网络访问时间变化极大。在最理想的情况下,当网络和服务器都不繁忙时,传输和排队延迟并不明显,服务器发送一行的速度与本地数据库服务器可能达到的速度几乎相同。而且,当客户机要求第二行时,该页可能已在服务器的页缓冲区中。
不幸的是,随着网络负载的增加,所有这些因素都会同时恶化。传输延迟在两个方向上都会增加,这将增加服务器上的队列长度。请求之间的延迟导致了页面保留在响应端的页缓冲区中的可能性降低。因此,网络访问成本可能突然急剧变化。
如果您在分布式查询中使用 SELECT FIRST n 子句,那么您将仍然只能看到所请求的数据量。但是,本地数据库服务器不向远程站点发送 SELECT FIRST n 子句。因此,远程站点可能返回更多的数据。
数据库服务器使用的优化器假定通过网络访问一行比访问数据库服务器中的一行所用的时间要长。此估计值包含从磁盘检索该行和通过网络传输该行的成本。