MySQL 地理位置有多重要?
How important is MySQL location geographically?
我读到 StackExchange 使用两个数据中心来容纳他们所有的服务器,两个数据中心都在美国。我在爱尔兰,所以我确定美国服务器适合我,但如果所有数据库服务器都在美国,StackExchange 如何为澳大利亚用户快速加载?
我想问一下,这是否意味着对于像 MySQL 这样的服务,在地理位置上靠近服务器对于保持页面加载速度快不是什么大问题?
我知道他们使用 CDN 来加快页面加载时间,并且他们可能会缓存某些页面以加快速度,但即使我去解决一些非常古老、不受欢迎的问题,我也不会注意到任何减速.
也许 StackExchange 使用分布在世界不同地区的多个数据库副本(DB Slaves)。这解释了即使不受欢迎的 SQL-requests 也能高速工作。
同样在澳大利亚和美国西海岸之间,可以通过水下电缆直接通信,确保高速运行。
数据库服务器相对于查看器的位置并不是重要的性能因素。作为站点访问者,您不是在与数据库对话——您是在与 Web 应用程序服务器对话,而后者正在与数据库对话。
通常,更重要的是数据库服务器相对于应用程序服务器的位置,因为许多应用程序需要多次查询,因此需要多次往返数据库才能呈现单个页面,而这些往返行程增加呈现页面所需的时间。当数据库在物理上靠近应用层时,该时间可以忽略不计。
用一般的网络术语来说,在像 SE 这样管理良好的网站中,所有支持资产都在 CDN 中,唯一与您相关的延迟是那个大 HTTP 所需的传输时间 request/response 呈现页面内容所必需的。传输时间不可忽略,因为光速仍然是有限的,所以即使在最佳路线上,到遥远地区的往返时间也很容易在 200-300 毫秒的范围内......但如果你只需要穿越它曾经,您仍然有可观的响应时间。
使用大量 ajax 来获取额外数据的网站在距离如此之远的 Web 服务器上运行效果可能不太好。如果需要这样的设计,您需要地理分布的 Web 服务器,具有相邻的数据库副本,以及 DNS 中的地理路由以将只读 ajax 请求发送到最近的 Web 服务器,该服务器可以查询其本地副本,获得快速回复,return 快速回复。
我曾经将一个 MySQL 服务器——相对于应用程序服务器——从大约 0.5 毫秒的距离移动到大约 25 毫秒的距离。网站上的页面加载时间(这已经不是最优的)从 2 秒增加到 10 秒。原因?多年来,该应用程序经历了多次迭代,并对数据库发出了很多不必要的请求……如果我没记错的话,即使是最简单的页面也需要 13 个不同的查询,其中大部分是获取实际未使用的数据(就像甚至为实际上没有显示您的分数的页面获取您的分数)。只要应用程序和数据库非常非常接近,这种低效率就不会被发现。但是,同样,这是关于 Web 服务器和数据库之间的距离,而不是数据库和浏览器之间的距离。
Stack Exchange 有两个数据中心,但最后检查其中一个只是一个热门 standby/failover 站点。主站点在正常操作下完成所有工作。而且,SE 使用 MSSQL,但这也无关紧要,因为这里起作用的基本现象是物理定律。
我读到 StackExchange 使用两个数据中心来容纳他们所有的服务器,两个数据中心都在美国。我在爱尔兰,所以我确定美国服务器适合我,但如果所有数据库服务器都在美国,StackExchange 如何为澳大利亚用户快速加载?
我想问一下,这是否意味着对于像 MySQL 这样的服务,在地理位置上靠近服务器对于保持页面加载速度快不是什么大问题?
我知道他们使用 CDN 来加快页面加载时间,并且他们可能会缓存某些页面以加快速度,但即使我去解决一些非常古老、不受欢迎的问题,我也不会注意到任何减速.
也许 StackExchange 使用分布在世界不同地区的多个数据库副本(DB Slaves)。这解释了即使不受欢迎的 SQL-requests 也能高速工作。
同样在澳大利亚和美国西海岸之间,可以通过水下电缆直接通信,确保高速运行。
数据库服务器相对于查看器的位置并不是重要的性能因素。作为站点访问者,您不是在与数据库对话——您是在与 Web 应用程序服务器对话,而后者正在与数据库对话。
通常,更重要的是数据库服务器相对于应用程序服务器的位置,因为许多应用程序需要多次查询,因此需要多次往返数据库才能呈现单个页面,而这些往返行程增加呈现页面所需的时间。当数据库在物理上靠近应用层时,该时间可以忽略不计。
用一般的网络术语来说,在像 SE 这样管理良好的网站中,所有支持资产都在 CDN 中,唯一与您相关的延迟是那个大 HTTP 所需的传输时间 request/response 呈现页面内容所必需的。传输时间不可忽略,因为光速仍然是有限的,所以即使在最佳路线上,到遥远地区的往返时间也很容易在 200-300 毫秒的范围内......但如果你只需要穿越它曾经,您仍然有可观的响应时间。
使用大量 ajax 来获取额外数据的网站在距离如此之远的 Web 服务器上运行效果可能不太好。如果需要这样的设计,您需要地理分布的 Web 服务器,具有相邻的数据库副本,以及 DNS 中的地理路由以将只读 ajax 请求发送到最近的 Web 服务器,该服务器可以查询其本地副本,获得快速回复,return 快速回复。
我曾经将一个 MySQL 服务器——相对于应用程序服务器——从大约 0.5 毫秒的距离移动到大约 25 毫秒的距离。网站上的页面加载时间(这已经不是最优的)从 2 秒增加到 10 秒。原因?多年来,该应用程序经历了多次迭代,并对数据库发出了很多不必要的请求……如果我没记错的话,即使是最简单的页面也需要 13 个不同的查询,其中大部分是获取实际未使用的数据(就像甚至为实际上没有显示您的分数的页面获取您的分数)。只要应用程序和数据库非常非常接近,这种低效率就不会被发现。但是,同样,这是关于 Web 服务器和数据库之间的距离,而不是数据库和浏览器之间的距离。
Stack Exchange 有两个数据中心,但最后检查其中一个只是一个热门 standby/failover 站点。主站点在正常操作下完成所有工作。而且,SE 使用 MSSQL,但这也无关紧要,因为这里起作用的基本现象是物理定律。