程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> mysql創立內存表的辦法

mysql創立內存表的辦法

編輯:MySQL綜合教程

mysql創立內存表的辦法。本站提示廣大學習愛好者:(mysql創立內存表的辦法)文章只能為提供參考,不一定能成為您想要的結果。以下是mysql創立內存表的辦法正文


若何創立內存表?
創立內存表異常的簡略,只需注明 ENGINE= MEMORY 便可:

CREATE TABLE  `tablename` ( `columnName` varchar(256) NOT NUL) ENGINE=MEMORY DEFAULT CHARSET=latin1 MAX_ROWS=100000000;

留意:

當內存表中的數據年夜於max_heap_table_size設定的容量年夜小時,mysql會轉換超越的數據存儲到磁盤上,是以這是機能就年夜打扣頭了,所以我們還須要依據我們的現實情形調劑max_heap_table_size,例如在.cnf文件中[mysqld]的上面參加:
max_heap_table_size = 2048M
別的在建表語句中還可以經由過程MAX_ROWS來掌握表的記載數。

內存表應用哈希散列索引把數據保留在內存中,是以具有極快的速度,合適緩存中小型數據庫,然則應用上遭到一些限制,以下是藍草應用的一些感觸感染。

1、heap對一切用戶的銜接是可見的,這使得它異常合適做緩存。

2、僅合適應用的場所。heap不許可應用xxxTEXT和xxxBLOB數據類型;只許可應用=和<=>操作符來搜刮記載(不許可<、>、<=或>=);不支撐auto_increment;只許可對非空數據列停止索引(not null)。
注:操作符 “<=>” 解釋:NULL-safe equal.這個操作符和“=”操作符履行雷同的比擬操作,不外在兩個操作碼均為NULL時,其所得值為1而不為NULL,而當一個操作碼為NULL時,其所得值為0而不為NULL。

3、一旦辦事重視啟,一切heap表數據喪失,然則heap表構造依然存在,由於heap表構造是寄存在現實數據庫途徑下的,不會主動刪除。重啟以後,heap將被清空,這時候候對heap的查詢成果都是空的。

4、假如heap是復制的某數據表,則復制以後一切主鍵、索引、自增等格局將不復存在,須要從新添加主鍵和索引,假如須要的話。

5、關於重啟形成的數據喪失,有以下的處理方法:

a、在任何查詢之前,履行一次簡略的查詢,斷定heap表能否存在數據,假如不存在,則把數據從新寫入,或許DROP表從新復制某張表。這須要多做一次查詢。不外可以寫成include文件,在須要用該heap表的頁面隨時挪用,比擬便利。
b、關於須要該heap表的頁面,在該頁面第一次且僅在第一次查詢該表時,對數據集成果停止斷定,假如成果為空,則須要從新寫入數據。如許可以節儉一次查詢。
c、更好的方法是在mysql每次從新啟動時主動寫入數據到heap,然則須要設置裝備擺設辦事器,進程比擬龐雜,通用性遭到限制。

6、一些預期能夠用到的sql語句

//假如表存在,則刪除
DROP TABLE IF EXISTS `abc`;
//復制整張表xyz為heap表abc(包括一切數據)
CREATE TABLE `abc` type=heap select * from `xyz`;
//添加主鍵id
ALTER TABLE `abc` ADD PRIMARY KEY (`id`);
//添加索引username
ALTER TABLE `abc` ADD INDEX `abc` (`username`);

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved