bleer

欢迎你来到我的空间哦~

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

 

临时表

注意:我们下文讨论的临时表,都是外部临时表。

外部临时表 VS 内部临时表 

外部临时表:使用create temporary语句创建的临时表,可以和业务表同名,会话结束时临时表自动销毁。

内部临时表:mysql自身也会创建临时表,这个临时表对用户不可见,主要是为了性能目的,存储一些操作过程的结果。

 

什么是临时表?

create temporary table t,用这样的语句创建的表,就是临时表。

具体建表语法:

(1)直接创建:create temporary table t1(字段……);

(2)参考业务表创建:

  create temporary table t1 select [字段……] from 业务表;

  create temporary table t1 as t;

 

为什么叫临时表?

表的生命周期和会话一样,是临时的。

 

临时表是存在哪里的?

存在内存中。

 

临时表的销毁机制

参考:销毁说明,总结如下:

临时表分为2类,会话临时表、全局临时表。

会话临时表:当前会话结束(断开)时,临时表就销毁了。

全局临时表:如果会话A创建了临时表,之后会话B、C在访问该临时表,等会话A断开链接后,这个临时表已经不能访问了但并没有销毁,等B、C会话断开后,该临时表才销毁掉。

 

 

临时表的显性删除,是否有必要

 

临时表的大小

控制参数tmp_table_size,max_heap_table_size,这两个参数的最小值,来控制临时表的表空间上限。

 

临时表是存在哪里的?

存在内存中

 

临时表的特性,利弊

特性

1. 临时表仅当前会话可见

2. 临时表与业务表可以重名,如果重名时,会话访问的是临时表

3. show tables;查不到临时表

 

好处

 

弊端

 

临时表的使用场景

 

 


 

 内存表

建表语句

create table t1(字段……)engine=Memory;

 

数据存储在哪里

内存

 

特性与利弊

好处

1. 数据在内存,读写内存速度快

 

弊端

1. 数据不能持久化,只存在内存中

2. 锁粒度,只支持表锁

3. 内存表的容量有限,内存不能动态扩容,当容量不够时,数据会丢失

4. 数据丢失风险,当mysql服务不稳定重启等,数据面临丢失风险

5. 不支持数据类型:text,blob

6. 索引限制:除了hash索引,btree索引,其他索引不支持

7. 内存消耗:内存表的使用会消耗内存资源,影响到mysql服务的性能

 

存疑:

内存表数据不落磁盘,怎么同步到从库?如何保证主从一致?

 

 

 

 

 


 

参考:

https://blog.csdn.net/wang0907/article/details/126667792

https://www.zhihu.com/question/583630977/answer/2894831266?utm_id=0

 

posted on 2023-06-01 14:22  bleer  阅读(268)  评论(0编辑  收藏  举报