![](/img/trans.png)
[英]Best method for making a MySQL query dynamic (e.g., update query parameters to show Previous Week)
[英]What is the best/fastest MySQL Table Schema for temporary/rotating storage, e.g. for session management?
在為非常動態的網站編寫自定義MySQL數據庫驅動的PHP會話管理時,會話表的最佳(最快的讀/寫訪問)結構是什么?
錯誤示例(未優化):
CREATE TABLE `session` ( `session_id` VARCHAR(32) NOT NULL, `session_data` TEXT NOT NULL, `t_created` DATETIME NOT NULL, `t_updated` DATETIME NOT NULL, PRIMARY KEY (`session_id`) ) ENGINE=INNODB DEFAULT CHARSET=utf8;
我假設使用內存引擎會更好/更快,但我不確定。 我想不出用英語解釋一切的好方法,所以我列出了一些我認為很重要的要求/細節:
細節:
成果:
預期行壽命(例如會話持續時間):
預期行數(例如活動會話):
如果有人能想出更好的方式來表達這一切,請隨時編輯。
你的直覺似乎是正確的。 我建議按如下方式創建表:
CREATE TABLE session (
id CHAR(32) NOT NULL,
data BLOB NOT NULL,
t_created TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
t_updated TIMESTAMP,
PRIMARY KEY (session_id),
INDEX t_created(t_created),
INDEX t_updated(t_updated)
)
ENGINE = MEMORY
CHARACTER SET utf8;
筆記:
旁注:我不確定您打算如何對會話進行垃圾收集,但如果您希望50%的會話時間不到5分鍾,那么會話結束如何定義? 用戶/客戶端必須明確結束會話(通過注銷)嗎? 如果您隱含地快速結束會話,您的用戶可能會在您的網站上度過非常艱難的時間。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.