我计划将我的用户经常使用的参数保存在会话变量中,而不是每次需要时从MySQL表中提取。在理论上,将经常使用的参数保存在变量中应该比在数据库中保存更有效,但因为我不确定会话变量是如何保存的,所以我不太确定这是否属实。有没有人知道拉取信息。从会话变量中查询比查询MySQL表更有效?
变量这一术语的使用不严格,因为会话“变量”存储在服务器临时目录中的文件中。
您可能认为读取文件比读取数据库成本更高,我的意思是数据库本质上就是一个文件,但它是为此目的而优化的,而不是“临时会话文件”。
发布于 2011-08-06 02:22:18
是的,从会话变量中提取信息比在数据库中查询该信息更有效。但是,将信息加载到会话变量需要将文件从服务器文件系统读取到RAM中,这取决于许多因素(磁盘速度、IO负载、数据库速度等),这可能比从数据库读取相同的信息慢或快。如果没有关于您的特定设置的信息,就很难说。要记住的一件事是,如果你计划增加和使用多个web服务器,你将需要编写一些自定义的会话处理程序来存储你的会话到一个中央服务器(可能是一个数据库),memcache,或者一个共享的挂载点,你所有的web服务器都可以去那里获取会话文件。
最后,把一些东西放到会话中并从那里使用它可能比每次从DB加载它更有效,但您仍然是从某个地方加载它,因此,关于您的硬件和设置的知识将是您最好的指南。
发布于 2011-08-06 01:59:22
PHP的默认会话处理程序将该信息存储到磁盘;每个会话有一个唯一的临时文件。如果磁盘/文件系统过载,或者数据变得陈旧,您可能会遇到问题。
如果您要访问磁盘来访问会话,那么访问MySQL的开销会稍微少一些,但是您仍然需要在每次请求页面时访问磁盘。您可以尝试使用内存中的会话处理程序。
发布于 2011-08-06 02:16:12
会话变量对于保存相对少量的临时数据是首选的。它们很适合“会话”。
其他所有事情都使用数据库。尤其是对于:
这篇文章有点过时了,它不适用于PHP本身…但它应该会让你对文件系统(例如NTFS)和数据库(例如MSSQL)的相对效率有一些了解:
https://stackoverflow.com/questions/6960561
复制相似问题