簡體   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