繁体   English   中英

会话变量与Mysql表

[英]Session variables vs. Mysql table

我打算在会话变量中保存我的用户经常使用的参数,即名称,图片等,而不是每次需要时都从MySQL表中提取参数。 从理论上讲,与数据库相比,将常用参数保存在变量中应该更有效,但是由于我不确定SESSION变量的保存方式,所以我不太确定这是否成立。 有谁知道是否提取信息。 从SESSION变量比查询MySQL表更有效?

SESSION“变量”存储在服务器临时目录中的文件中,因此术语“变量”被宽松地使用。

您可能会认为读取文件比读取数据库要花费更多,我的意思是数据库本质上是一个文件,但是为此目的而进行了优化,而不是“临时会话文件”

是的,从会话变量中提取信息比在数据库中查询该信息更为有效。 然而,加载信息存储会话变量需要读取一个文件,把你的服务器的文件系统和到RAM,这取决于很多因素(硬盘速度,IO负载,数据库速度等)可能会更慢或快于读取相同的信息从数据库。 没有有关您的特定设置的信息,这很难说。 要记住的一件事是,如果您计划增长并使用多个Web服务器,则需要编写一些自定义会话处理程序以将会话存储到中央服务器(可能是数据库),内存缓存或共享安装指向所有Web服务器可以用来获取会话文件的位置。

最后,将某些内容放入会话中并从中使用它比每次从数据库中加载更有效,但是您仍然从某个位置加载它因此,对硬件和设置的了解将是您最好的选择指南。

PHP的默认Session处理程序将该信息存储到磁盘。 每个会话一个唯一的临时文件。 您可能会遇到的问题是,如果磁盘/文件系统过载,或者数据变得陈旧。

如果要访问磁盘以访问会话,则开销要比访问MySQL稍少,但是仍然需要在每次页面请求时进行磁盘访问。 您可以尝试使用内存中的Session处理程序。

最好使用会话变量来保留相对少量的临时数据。 它们适合“会话”。

使用数据库进行其他所有操作。 尤其是给:

  • 大量的数据,
  • 进行任何形式的“交易”,或
  • 需要在“会话”之间保留的数据。

本文有些过时了,它本身并不适用于PHP ...但是它应该使您对文件系统(例如NTFS)与数据库(例如MSSQL)的相对效率有所了解:

是的,使用会话变量更有效。 通常,会话变量存储在服务器的/ tmp目录中(您可以检查PHP信息文件以了解如何配置它们。

并且由于它们存储在服务器上,因此可以假定它们与服务器其余部分一样安全。

是的,它效率更高。 会话保存在服务器上。 但是,无论有无会话,您都需要检查用户是否已登录以及用户是否具有正确的SESSION ID。 这取决于您的列数,行数和许多其他事情

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM