想改善这个问题吗?更新问题,以便editing this post用事实和引用来回答。
5年前关闭。
只是好奇其他人对此感觉如何。无论您得到什么,都会感谢您的观点或事实:)
我正在一个应用程序上,该应用程序从MySQL提取了很多信息并且需要在多个页面上。
这样做更有意义吗?
一次提取所有数据并将其存储在SESSION变量中以在其他页面上使用
在需要数据的每个新页面上从数据库中提取数据
我假设首选方法是#1,但是使用SESSION变量“太多”可能会有一些弊端吗?
与此相关的一个副问题:就URL而言,最好将数据存储在其中(例如domain.com/somepage.php?somedata=something&otherdata=thisdata)或使用SESSION变量存储该数据以便URL可以保留一般/干净(即domain.com/somepage.php)?
两者都可能是加载中的问题,但任何可能的见解都会受到赞赏。
谢谢!
最佳答案
您的问题无法回答到所有答案都适用的地步。
原因如下:许多Web服务器架构都在同一台计算机上处理HTTP服务器(Apache,Nginx),服务器端语言(PHP,Ruby,Python)和RDBMS(MySQL,PostgreSQL)的问题。
这是您可以找到的最常见的设置之一。
现在,这就是您的情况:
您连接到MySQL-通过PHP> MySQL建立连接,这“花费”了一点
您请求数据,因此MySQL从硬盘驱动器读取数据(除非缓存在RAM中)
PHP获取数据并分配一些内存来保存信息
现在,您将其保存到会话中。但是默认情况下,会话是基于磁盘的,因此您刚刚发出了写操作,并且您至少花了1次硬盘驱动器的I / O操作
但是,让我们看看发生了什么-您将一些数据从磁盘(MySQL)移至RAM(PHP变量),然后又将其保存在磁盘上。
在这种情况下,您实际上并没有帮助自己或系统,只会使事情变慢。
另一方面,PHP(和其他语言)能够维护与MySQL(和其他数据库)的连接,因此它们最小化了打开新连接的成本(在大型方案中这确实是便宜的)。
如您所见,这是一种情况。在这种情况下,您的专用服务器上有HTTP服务器,专用计算机上有PHP,专用计算机上有MySQL。问题是,将数据从MySQL转移到PHP会话是否更便宜。该会话磁盘基于,基于Redis,基于Memcache,基于数据库吗?建立与MySQL的连接的成本是多少?
在您可以想象的任何情况下,您需要问的是什么?您要权衡什么?
因此,如果您正在运行最常见的设置(PHP和数据库在同一台机器上)-答案是否定的,那么在会话中存储一些MySQL数据就更好了。
如果您使用InnoDB(并且可能已经使用过)并且已进行了适当的优化,则将某些数据保存到会话中以避免查询db读取的明显开销不会带来任何好处。情况恰恰相反。
关于php - 关于进行MySQL查询与使用SESSION变量的想法? ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26739942/