内存表与临时表区别

临时表,一般是人手动创建。 内存表,是mysql自动创建和销毁的。

内存表,指的是使用Memory引擎的表,建表语法:create table ... engine = memeory

表的数据存在内存里,系统重启后会被清空,但是表的结构还在。

临时表,可以使用各种引擎类型。如果使用的是InnoDB或者MyISAM引擎,写数据是写在磁盘上的。当然临时表也可以使用Memory引擎。

临时表特性

1、一个临时表只能被创建它的session访问,对于其他线程不可见,当此session结束时,会自动删除临时表

2、临时表可以与普通表同名。如果同一个session里有同名的临时表和普通表,使用show create语句以及增删改查语句,访问的是临时表

3、show tables命令不显示临时表

临时表的应用

由于不用担心线程之间的重名冲突,临时表经常被用在复杂查询的优化过程中。其中,分库分表系统的跨库查询就是一个典型的使用场景。

查询语句到所有的分库中查找满足条件的行,然后统一做order by操作。

可以把各个分库拿到的数据汇总到一个MySQL实例的一个表中,然后在这个汇总实例上做逻辑操作。如下:

至于临时表的存储位置,可以放在分库中的某一个。

另外一个使用场景就是使用union(如果使用的是union all就不需要用了)。系统会先创建一个内部临时表,执行第一个子查询的结果放到临时表中,执行第二个子查询的结果先看看插入是否成功,成功则插入。最后从临时表中按行取数据,然后返回结果,删除临时表。

临时表可以重名的原因

无论是普通表还是临时表,一个表都会对应一个table_def_def

  • 一个普通表的table_def_def的值由"库名+表名"得到。所以在同一个库下创建两个同名的普通表,会由重复性错误。
  • 对于临时表,table_def_def在“库名+表名”的基础上还加上了“server_id + thread_id”

在实现上,每个线程都维护了自己的临时表链表,每次session内操作表的时候,先遍历链表,检查是否有这个名字的的临时表,有就优先操作,否则再操作普通表。

session结束时,对链表中的每个临时表,执行drop操作。这个操作也会被写道binlog里用于主备复制。

临时表的主备同步

row格式的binlog不会记录临时表相关语句,只有statement或者mixed格式才会记录。

创建临时表的语句会传到备库执行,因此备库的同步线程就会创建这个临时表。主库在线程退出的时候会自动删除临时表,但是备库同步线程还是在运行的,所以主库还需要写个DROP TEMPORARY TABLE传给备库。

当主库上两个session创建了同名临时表t1,这两个语句被传给备库上。

主库执行语句的线程id会被写道binlog中,备库可以用线程id构造临时表的table_def_key:

备库名 + t1 + “主库的serverid” + “session的thread_id”,所以两个表在备库的应用线程不会冲突。

《MySQL——临时表》相关推荐

  1. ComeFuture英伽学院——2020年 全国大学生英语竞赛【C类初赛真题解析】(持续更新)

    视频:ComeFuture英伽学院--2019年 全国大学生英语竞赛[C类初赛真题解析]大小作文--详细解析 课件:[课件]2019年大学生英语竞赛C类初赛.pdf 视频:2020年全国大学生英语竞赛 ...

  2. ComeFuture英伽学院——2019年 全国大学生英语竞赛【C类初赛真题解析】大小作文——详细解析

    视频:ComeFuture英伽学院--2019年 全国大学生英语竞赛[C类初赛真题解析]大小作文--详细解析 课件:[课件]2019年大学生英语竞赛C类初赛.pdf 视频:2020年全国大学生英语竞赛 ...

  3. 信息学奥赛真题解析(玩具谜题)

    玩具谜题(2016年信息学奥赛提高组真题) 题目描述 小南有一套可爱的玩具小人, 它们各有不同的职业.有一天, 这些玩具小人把小南的眼镜藏了起来.小南发现玩具小人们围成了一个圈,它们有的面朝圈内,有的 ...

  4. 信息学奥赛之初赛 第1轮 讲解(01-08课)

    信息学奥赛之初赛讲解 01 计算机概述 系统基本结构 信息学奥赛之初赛讲解 01 计算机概述 系统基本结构_哔哩哔哩_bilibili 信息学奥赛之初赛讲解 02 软件系统 计算机语言 进制转换 信息 ...

  5. 信息学奥赛一本通习题答案(五)

    最近在给小学生做C++的入门培训,用的教程是信息学奥赛一本通,刷题网址 http://ybt.ssoier.cn:8088/index.php 现将部分习题的答案放在博客上,希望能给其他有需要的人带来 ...

  6. 信息学奥赛一本通习题答案(三)

    最近在给小学生做C++的入门培训,用的教程是信息学奥赛一本通,刷题网址 http://ybt.ssoier.cn:8088/index.php 现将部分习题的答案放在博客上,希望能给其他有需要的人带来 ...

  7. 信息学奥赛一本通 提高篇 第六部分 数学基础 相关的真题

    第1章   快速幂 1875:[13NOIP提高组]转圈游戏 信息学奥赛一本通(C++版)在线评测系统 第2 章  素数 第 3 章  约数 第 4 章  同余问题 第 5 章  矩阵乘法 第 6 章 ...

  8. 信息学奥赛一本通题目代码(非题库)

    为了完善自己学c++,很多人都去读相关文献,就比如<信息学奥赛一本通>,可又对题目无从下手,从今天开始,我将把书上的题目一 一的解析下来,可以做参考,如果有错,可以告诉我,将在下次解析里重 ...

  9. 信息学奥赛一本通(C++版) 刷题 记录

    总目录详见:https://blog.csdn.net/mrcrack/article/details/86501716 信息学奥赛一本通(C++版) 刷题 记录 http://ybt.ssoier. ...

  10. 最近公共祖先三种算法详解 + 模板题 建议新手收藏 例题: 信息学奥赛一本通 祖孙询问 距离

    首先什么是最近公共祖先?? 如图:红色节点的祖先为红色的1, 2, 3. 绿色节点的祖先为绿色的1, 2, 3, 4. 他们的最近公共祖先即他们最先相交的地方,如在上图中黄色的点就是他们的最近公共祖先 ...

最新文章

  1. 一文介绍机器学习中的三种特征选择方法
  2. Line上半年扭亏为盈 用户及营收遇瓶颈
  3. oracle 数据库日常巡检:数据库基本状况、oracle资源使用、数据备份结果、性能、cpu等、数据安全、归档日志、会话、SGA/PGA使用情况
  4. Mr.J-- jQuery学习笔记(三十一)--事件操作方法(onoff)
  5. fastreport打印指定路径图片显示不出来_报表工具中图片文件怎么展示---本地图片--网络图片--数据库图片...
  6. [转载] python中pass的使用_Python pass详细介绍及实例代码
  7. c++编写手机小游戏代码_24个c++游戏源码
  8. 惊爆:「文言文」编程语言,可谓年度最骚语言也
  9. 关于单链表结构体定义结点时 LNode *LinkList的理解
  10. 数字孪生城市优秀案例汇编(2021年) 附下载
  11. 贝壳财报图解:年营收808亿增长15% 经调整利润23亿
  12. SpringBoot快速整合Quartz动态管理定时任务
  13. TCP/IP详解(卷1)勘误表
  14. 推荐系统实践读书笔记-08评分预测问题
  15. 用微信小程序做H5游戏尝试
  16. 工作2年的java程序员怎么提高技术?
  17. 打印机之——G3800故障维修
  18. STC15双串口printf调试输出案例
  19. Linux下mysql5.7修改密码的坑
  20. 0x00007FFF77912079 (ucrtbased.dll)处(位于 Demo.exe 中)引发的异常: 0xC0000005: 写入位置 0x000000108FD40000 时发生访问冲突

热门文章

  1. react学习路线图,学习react就是有捷径
  2. gorm 密码字段隐藏_KeeWeb for mac(密码管理工具)
  3. php怎么把字符转成大写,php怎么把字符串转换为大写
  4. html比赛项目,趣味运动会最新个人比赛项目
  5. React后台管理系统-品类的增加、修改和查看
  6. 【留言板】可编辑输入框操作总结
  7. Effeckt.css – CSS3 Transitions Animations 精妙应用
  8. jpg、gif、png-8、png-24的区别
  9. On Comparing Side-Channel Preprocessing Techniques for Attacking RFID Devices
  10. Asp.net页面生存周期