簡體   English   中英

php session vs mysql speed

[英]php session vs mysql speed

我正在使用權限系統。 在每個頁面中,它將需要檢查用戶是否具有這樣做的權限。 我有兩個選擇,將數據存儲在會話變量中(僅在登錄期間更新)或每次查詢數據庫以獲取信息。 哪個更快?

我意識到如果權限發生變化,我將需要更新會話變量,因此用戶需要重新登錄以“查看”權限的變化,但這不是決策中的因素,只有速度。

會話速度與數據庫的速度取決於許多因素:

  • 會話變量中將存儲多少數據
  • 什么是會話變量的實際后備存儲(如果它是數據庫支持的會話,它基本上是同一時間)

我可以說,對於少量數據,基於文件的會話變量將比DB訪問更快。

您需要對其進行測量以獲得應用程序中兩種方法之間的相關比較。 我個人懷疑,如果不采用會話解決方案,它會產生如此大的影響。

會話中設置新值:

時間:0.00062895秒

數據庫中插入相同的值:

時間:0.00000811秒

Cookie中插入相同的值

時間:0.00000906秒

或者您可以使用以下代碼進行測試:

$before = microtime(true);
    // Put your code here
$after = microtime(true);
$Speed = number_format(( $after - $before), 8);

echo "<h1>Time:  " . $Speed . " Seconds</h1>";

我會在會話中存儲這種信息:

  • 該數據特定於當前用戶
  • 每個用戶都有自己的數據版本
  • 這種數據不太可能經常改變 - 這意味着等到會話到期並且用戶回來通常是好的
    • 如果您認為它會經常更改,您可以在會話中保留一些時間戳以及該數據,以跟蹤最后一次從數據庫中提取的“何時”; 如果它是“ 很久以前 ”取出的,那么每隔幾分鍾就重新拍一次。


我還要補充一點,如果有一天你開始擁有幾個不同的Web服務器,你將能夠使用memcached存儲會話數據 - 這意味着它比數據庫更好地擴展。

簡短回答:將它存儲在會話變量中可能會快一些,因為您已經從數據庫中填充了它。 話雖如此,我懷疑單個簡單數據庫查詢的速度會以任何真正可衡量的方式使您陷入困境。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM