我們在做網站時,偶然遇到一個問題:網站工作時,有時需要一些不變的資源表,需要根據不同的人的信息,去查表尋找對應需要的數據。<喎?http://www.Bkjia.com/kf/ware/vc/" target="_blank" class="keylink">vcD4NCjxwPtPJ09rDv7j2yMu2vNDo0qqy6bHto6zQp8LKvs3KrrfW1tjSqsHLo6zI57n7trzKudPDtMXFzNbQtcTK/b7do6zQ1MTcv8+2qLK70NCjrLWryOe5+7TmtKKzyc6q18rUtM7EvP6jrMTHw7S+zbK7xNy3vbHjtcTA+9PDU1FM0+++5LXEwem77rLp0a/M9bz+o6yy6bHttcTL47eou7nQ6NfUvLqx4NC0oaM8L3A+DQo8cD694brPwb249s7KzOK/vMLHo6y1w7P2tcS94cLbvs3KxyZtZGFzaDsmbWRhc2g7xNq05rHtoaM8L3A+DQo8aDMgaWQ9"內存表的特性">內存表的特性
所謂“內存表”,即為數據保存在內存中的MySQL表,使用上和其他表並沒有顯著區別,主要特點是在MySQL退出後,其數據會自動消失,並不會持久化。
除此以外,內存表可能最大的問題是不支持變長的類型,這使得在建表時要格外小心。
對於varchar等變長類型,內存表使用固定的長度來存放;
內存表可以有非唯一鍵;
內存表不能包含BLOB或者TEXT列;
內存表支持插入延遲,使讀取優先;
建立內存表的時候,在5.5裡,需要指定表的引擎類型 ENGINE=MEMORY
CREATE TABLE `test` ( `id` int(11) AUTO_INCREMENT, `name` varchar(255) ) ENGINE=MEMORY DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT;
其余操作:
-- 刪除數據 delete from test;
或者
-- 清空表 truncate table test;
再或者
-- 刪除表 drop table test;
但數據會在重啟後丟失,這點十分不便,為此,我們需要初始化內存表,使得其包含要使用的數據。
使用方法很簡單,直接添加到配置文件,比如my.cnf.
添加:
[server] 或者 [mysqld] 或者 [mysqld_safe]
init-file=”Your file location”
請確保init-file指定的腳本每行是一個具體的語句,不要多行寫一個語句。