MySQL远程时缓存如何工作?

问题描述 投票:0回答:1

我一直在使用PHP 5.6进行旧式电子商务应用程序的服务器迁移。交换机涉及两台来自Linode的专用32台服务器。一台服务器用于NginX + PHP,另一台仅用于MySQL。旧版应用程序利用memcached。

切换后,我看到由于专用的入站和出站连接而导致大量内部流量。到目前为止,该元素并未对性能造成任何问题。

但是,我的印象是查询将被缓存在本地计算机上,而不是在远程计算机上。因为如果查询缓存在远程主机上,它必须通过专用网络传输结果集,而不是从RAM或本地SSD检索。

我是否认为这是错误的?

可能是我遗漏了一个点,即与本地缓存相比,私有入站流量对整体性能更有利。

mysql nginx php-5.6 mysql-5.7
1个回答
0
投票

MySQL具有称为查询缓存的功能,但是此功能将查询结果集缓存在mysqld服务器进程中,而不是在客户端上。如果在将结果缓存在查询缓存中之后再次运行完全相同的查询,它将从查询缓存中复制结果,从而避免了再次运行查询的开销。但这无法避免将结果从mysqld跨网络传输到PHP应用程序的时间。

还请记住MySQL Query Cache is being deprecated and retired

[或者,您的应用程序可能会将查询结果中的数据存储在memcached中,但是通常这是由应用程序代码完成的(我知道有UDF可以从MySQL触发器读取和写入memcached,但这不是一个好主意)。

如果您的memcached服务与PHP代码不在同一主机上,则将导致网络传输两次:第一次从MySQL查询数据时,一次,然后再次传输数据进入 memcached,那么以后每次您获取memcached的缓存数据out时。

PHP还具有一些用于进行内存中缓存的功能,例如APCu。我对此没有任何经验,从对文档where中存储缓存数据的简短扫描中还不清楚。

© www.soinside.com 2019 - 2024. All rights reserved.