mysql 儲存引擎 memory
阿新 • • 發佈:2021-08-08
檢視支援的引擎
mysql> show engines; +--------------------+---------+----------------------------------------------------------------+--------------+------+------------+ | Engine | Support | Comment | Transactions | XA | Savepoints | +--------------------+---------+----------------------------------------------------------------+--------------+------+------------+ | InnoDB | DEFAULT | Supports transactions, row-level locking, and foreign keys | YES | YES | YES | | MRG_MYISAM | YES | Collection of identical MyISAM tables | NO | NO | NO | | MEMORY | YES | Hash based, stored in memory, useful for temporary tables | NO | NO | NO | | BLACKHOLE | YES | /dev/null storage engine (anything you write to it disappears) | NO | NO | NO | | MyISAM | YES | MyISAM storage engine | NO | NO | NO | | CSV | YES | CSV storage engine | NO | NO | NO | | ARCHIVE | YES | Archive storage engine | NO | NO | NO | | PERFORMANCE_SCHEMA | YES | Performance Schema | NO | NO | NO | | FEDERATED | NO | Federated MySQL storage engine | NULL | NULL | NULL | +--------------------+---------+----------------------------------------------------------------+--------------+------+------------+ 9 rows in set (0.01 sec)
Memory表被儲存在記憶體中。且預設使用雜湊索引。這使得它們很快,而且對建立暫時表很實用。但是。當server關閉之時,全部儲存在Memory表裡的資料被丟失。
由於表的定義被存在磁碟上的.frm檔案裡,所以表自身繼續存在。在server重新啟動動時它們是空的。
要明白指出你想要一個Memory表。可使用ENGINE選項來指定:
CREATE TABLE t (i INT) ENGINE = MEMORY;
CREATE TABLE test ENGINE=MEMORY; SELECT ip,SUM(downloads) AS down FROM log_table GROUP BY ip; SELECT COUNT(ip),AVG(down) FROM test; DROP TABLE test;