Quantcast
Channel: IT社区推荐资讯 - ITIndex.net
Viewing all articles
Browse latest Browse all 11813

MySQL内存表与临时表

$
0
0

 

关于内存表

创建内存表SQL:

CREATE TABLE tmp_memory (i INT) ENGINE = MEMORY;

1、不同会话创建的临时表,所有会话是共享的。

1、data目录下只有tmp_memory.frm ,表结构放在磁盘上,数据放在内存中

2. mysql 重启或者关闭后内存表里的数据会丢失,但是表结构仍然存在

3. 可以创建索引,删除索引,支持唯一索引

4. 不影响主备,主库上插入的数据,备库也可以查到

5. show tables 看得到表

6、内存表不支持事务。

7、内存表是表锁,当修改频繁时,性能可能会下降。

8、不能包含TEXT,BLOB等字段。

9、内存表满后,会提示数据满错误。

10、所使用内存的大小可通过my.cnf中的max_heap_table_size指定,如max_heap_table_size=1024M

 

关于临时表

创建临时表SQL:

CREATE TEMPORARY TABLE tmp_table (name VARCHAR(10) NOT NULL,value INTEGER NOT NULL);

1. 不同会话创建的临时表仅限本会话使用,对其他会话是不可见的。

2. 表结构和数据都放在内存中

3. 会话消失表结构和数据都消失

4. 可以创建索引,删除索引

5. 主库创建的表,备库查不到,

6. show tables 看不到表

7、当数据超过临时表的最大值设定时,自动转为磁盘表,此时因需要进行IO操作,性能会大大下降。

8、最大所需内存需要通过tmp_table_size=1024M设定。

 

 

临时表和内存表都可以人工创建,但 临时表更多的作用是系统自己创建后,组织数据以提升性能,如子查询。

临时表和内存表的ENGINE 不同,临时表默认的是MyISAM,而内存表是MEMORY 

 

 

 

 

 



已有 0人发表留言,猛击->> 这里<<-参与讨论


ITeye推荐




Viewing all articles
Browse latest Browse all 11813

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>