MySQL的地理位置有多重要?

时间:2017-06-28 12:13:20

标签: mysql cdn scaling

我读到StackExchange使用两个数据中心来容纳他们所有的服务器,两个数据中心都在美国。我在爱尔兰,所以我确定美国服务器对我来说没问题,但如果所有数据库服务器都在美国,那么StackExchange如何为澳大利亚用户快速加载?

我想问一下,这对MySQL这样的服务意味着什么,在地理位置上靠近服务器并不是保持页面加载时间快的重要原因?

我知道他们使用CDN加速他们的页面加载时间,他们可能会缓存某些页面以加快速度,但即使我去了一些非常古老,不受欢迎的问题,我也无法注意到任何减速

2 个答案:

答案 0 :(得分:3)

数据库服务器相对于查看器的位置不是重要的性能因素。作为站点访问者,您不是在与数据库交谈 - 您正在与正在与数据库通信的Web应用程序服务器进行通信。

通常,更重要的是数据库服务器相对于应用程序服务器的位置,因为许多应用程序需要多次查询,因此需要多次往返数据库才能呈现单个页面,而这些往返行程会增加页面呈现所需的时间。当数据库在物理上接近应用程序层时,该时间可以忽略不计。

在一般网站术语中,在像SE这样管理良好的网站中,CDN中的所有支持资产,与您相关的唯一延迟是,需要一个大的HTTP请求/响应所需的传输时间。呈现页面内容。传输时间不可忽略,因为光速仍然是有限的,因此即使在最佳路线上,往返于偏远地区的往返时间也可以很容易地在200-300ms范围内......但是如果您只需要遍历它有一次,你仍然有一个值得尊敬的回应时间。

使用大量ajax来获取附加数据的网站与Web服务器的距离不会那么好。如果需要这样的设计,您需要地理位置分散的Web服务器,具有相邻的数据库副本,以及DNS中的地理路由,以将只读的Ajax请求发送到最近的Web服务器,该服务器可以查询其本地副本,获得快速响应,并快速回答。

我曾经将MySQL服务器 - 相对于应用服务器 - 移动到距离大约0.5毫秒到距离大约25毫秒。网站上的页面加载时间(已经不是最佳)从2秒增加到10秒。原因?多年来,应用程序经历了多次迭代,并对数据库提出了许多不必要的请求......如果我没记错的话,即使是最简单的页面也需要13个不同的查询,其中大多数都是获取实际未使用的数据(比如即使对于实际上没有显示你的分数的页面也能获得你的分数。只要应用程序和数据库非常非常接近,就无法检测到这种低效率。但是,这又是关于Web服务器和数据库之间的距离,而不是数据库和浏览器。

Stack Exchange有两个数据中心,但最后检查其中一个只是一个热备用/故障转移站点。主站点在正常操作下完成所有工作。并且,SE使用MSSQL,但这也是无关紧要的,因为这里的基本现象是物理定律。

答案 1 :(得分:1)

也许StackExchange使用地理上分布在世界不同地区的多个数据库副本(DB Slaves)。这解释了即使使用不受欢迎的SQL请求也能提高工作效率。

澳大利亚和美国西海岸之间也可以通过水下电缆直接通信,确保高速运行。