mysql5.7空间运算,深度解析MySQL5.7之临时表空间

临时表

临时表顾名思义,就是临时的,用完销毁掉的表。 数据既可以保存在临时的文件系统上,也可以保存在固定的磁盘文件系统上。

临时表有下面几种:

1、全局临时表

这种临时表从数据库实例启动后开始生效,在数据库实例销毁后失效。在MySQL里面这种临时表对应的是内存表,即memory引擎。

2、会话级别临时表

这种临时表在用户登录系统成功后生效,在用户退出时失效。在MySQL里的临时表指的就是以create temporary table这样的关键词创建的表。

3、事务级别临时表

这种临时表在事务开始时生效,事务提交或者回滚后失效。 在MySQL里面没有这种临时表,必须利用会话级别的临时表间接实现。

4、检索级别临时表

这种临时表在SQL语句执行之间产生,执行完毕后失效。 在MySQL里面这种临时表不是很固定,跟随MySQL默认存储引擎来变化。比如默认存储引擎是MyISAM,临时表的引擎就是MyISAM,并且文件生成形式以及数据运作形式和MyISAM一样,只是数据保存在内存里;如果默认引擎是INNODB,那么临时表的引擎就是INNODB,此时它的所有信息都保存在共享表空间ibdata里面。

MySQL 5.7之临时表空间

MySQL 5.7对于InnoDB存储引擎的临时表空间做了优化。在MySQL 5.7之前,INNODB引擎的临时表都保存在ibdata里面,而ibdata的贪婪式磁盘占用导致临时表的创建与删除对其他正常表产生非常大的性能影响。在MySQL5.7中,对于临时表做了下面两个重要方面的优化:

1、MySQL 5.7 把临时表的数据以及回滚信息(仅限于未压缩表)从共享表空间里面剥离出来,形成自己单独的表空间,参数为innodb_temp_data_file_path。

2、在MySQL 5.7 中把临时表的相关检索信息保存在系统信息表中:information_schema.innodb_temp_table_info. 而MySQL 5.7之前的版本想要查看临时表的系统信息是没有太好的办法。

需要注意的一点就是:虽然INNODB临时表有自己的表空间,但是目前还不能自己定义临时表空间文件的保存路径,只能是继承innodb_data_home_dir。此时如果想要拿其他的磁盘,比如内存盘来充当临时表空间的保存地址,只能用老办法,做软链。举个小例子:

我现在用的OS是 Ubuntu12.X,想用tmpfs文件系统充当临时表空间,

root@ytt-master-VirtualBox:/usr/local/mysql/data# ln -s/run/shm/ /usr/local/mysql/data/tmp_space2

root@ytt-master-VirtualBox:/usr/local/mysql/data#ls -l | grep 'shm'

lrwxrwxrwx1 root root 9 Nov 13 10:28tmp_space2 -> /run/shm/

然后把innodb_temp_data_file_path=tmp_space2/ibtmp2:200M:autoextend添加到my.cnf里的[mysqld]下面一行, 重启MySQL服务后:

mysql>select @@innodb_temp_data_file_path\G

***************************1. row ***************************

@@innodb_temp_data_file_path:tmp_space2/ibtmp2:200M:autoextend

1 rowin set (0.00 sec)

先写一个批量创建临时表的存储过程:

DELIMITER$$

USE`t_girl`$$

DROPPROCEDURE IF EXISTS `sp_create_temporary_table`$$

CREATEDEFINER=`root`@`localhost` PROCEDURE `sp_create_temporary_table`(

IN f_cnt INT UNSIGNED )

BEGIN

DECLARE i INT UNSIGNED DEFAULT 1;

WHILE i <= f_cnt

DO

SET @stmt = CONCAT('create temporarytable tmp',i,' ( id int, tmp_desc varchar(60));');

PREPARE s1 FROM @stmt;

EXECUTE s1;

SET i = i + 1;

END WHILE;

DROP PREPARE s1;

END$$

DELIMITER;

现在来创建10张临时表:

mysql>call sp_create_temporary_table(10);

QueryOK, 0 rows affected (0.07 sec)

如果在以前,我们只知道创建了10张临时表,但是只能凭记忆或者手工记录下来临时表的名字等信息。

现在可以直接从数据字典里面检索相关数据。

mysql> select * frominformation_schema.innodb_temp_table_info;

+----------+--------------+--------+-------+----------------------+---------------+

|TABLE_ID | NAME | N_COLS | SPACE| PER_TABLE_TABLESPACE | IS_COMPRESSED |

+----------+--------------+--------+-------+----------------------+---------------+

| 56 | #sql1705_2_9 | 5 | 36 | FALSE |FALSE |

| 55 | #sql1705_2_8 | 5 | 36 | FALSE |FALSE |

| 54 | #sql1705_2_7 | 5 | 36 | FALSE |FALSE |

| 53 | #sql1705_2_6 | 5 | 36 | FALSE |FALSE |

| 52 | #sql1705_2_5 | 5 | 36 | FALSE |FALSE |

| 51 | #sql1705_2_4 | 5 | 36 | FALSE |FALSE |

| 50 | #sql1705_2_3 | 5 | 36 | FALSE |FALSE |

| 49 | #sql1705_2_2 | 5 | 36 | FALSE |FALSE |

| 48 | #sql1705_2_1 | 5 | 36 | FALSE |FALSE |

| 47 | #sql1705_2_0 | 5 | 36 | FALSE |FALSE |

+----------+--------------+--------+-------+----------------------+---------------+

10rows in set (0.00 sec)

总结

功能性我就写到这里,大家性能方面如果有兴趣可以找时间去测试。希望本文的内容对大家学习或者使用mysql5.7能带来一定的帮助,如果有疑问大家可以留言交流。

您可能感兴趣的文章:MySQL中临时表的基本创建与使用教程

MySQL中关于临时表的一些基本使用方法

MySQL两种临时表的用法详解

MySQL使用临时表加速查询的方法

解析Mysql临时表及特点

浅谈MySQL临时表与派生表

mysql复制中临时表的运用技巧

MySQL中Update、select联用操作单表、多表,及视图与临时表的区别

MySQL问答系列之什么情况下会用到临时表

MySQL 5.7临时表空间如何玩才能不掉坑里详解

关于JDBC与MySQL临时表空间的深入解析

mysql临时表用法分析【查询结果可存在临时表中】

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/549956.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【RTOS】基于V7开发板的最新版FreeRTOS V10.2.0程序模板,含MDK和IAR,支持串口打印任务执行情况...

模板下载&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1N32Hx7cTbDoRinuzTUB3zw 提取码&#xff1a;6aox 1、MDK使用MDK5.26及其以上版本。 2、IAR使用IAR8.30及其以上版本。 3、教程直可以先看之前发布的&#xff0c;除了新增的一些功能&#xff0c;其它功能基本…

难忘的考研岁月

难忘的考研岁月 ——代腾飞 昼夜周而复始地轮回&#xff0c;太阳每天更新着光辉&#xff0c;当时光平平仄仄地走过一段长长的路途&#xff0c;许多异彩纷呈的心绪已在不断怀想中清淡成渐行渐远的 风景抑或无足轻重的点缀。唯有那铭心刻骨的考研岁月未被崭新的氛围和徒劳的奔波所…

自动图片轮播php源码,js实现自动图片轮播代码

本文实例为大家分享了轮播的具体代码&#xff0c;自动轮播&#xff0c;居中显示&#xff0c;供大家参考&#xff0c;具体内容如下#div1{width: 192px;height: 120px;border: 1px solid gray;margin: 0 auto;position: relative;overflow: hidden;}#div1 img{position: absolute…

【Open vSwitch】Open vSwitch使用案例扩展实验

实验参考&#xff1a; Open vSwitch使用案例扩展实验 实验步骤&#xff1a; 1. 实验任务一。 1.创建新文件ovsSingleBr.py并编辑以下内容&#xff1a; 1 #!/usr/bin/python2 3 from mininet.net import Mininet4 from mininet.node import Node5 from mininet.link import Lin…

php里面的 n算是,用PHP中的bcmath计算第N个根

好吧,似乎PHP和BC lib有一些限制,在网上搜索后我发现这个interesting article/code:所以你应该使用这个功能&#xff1a;function NRoot($num, $n) {if ($n<1) return 0; // we want positive exponentsif ($num<0) return 0; // we want positive numbersif ($num<2)…

【Open vSwitch】Open vSwitch的GRE隧道实验网络

实验参考&#xff1a; Open vSwitch的GRE隧道实验网络 实验步骤&#xff1a; 1. 配置VM: 1. 本次要实现的拓扑如下&#xff1a; 先验证虚拟机VM1的OvS服务是否被启动好&#xff1a; 2. 在VM1中创建两个bridge&#xff1a; 1 # ovs-vsctl add-br br0 2 # ovs-vsctl add-br br1 3…

电子政务项目风险管理(上)

风险管理是项目管理中非常重要的环节。电子政务项目由于受到政府预算体系、领导个人意志、层层审批决策机制以及实施方对政府业务特点把握能力等多种客观因素的影响&#xff0c;风险种类更多&#xff0c;如果不能很好地进行管理&#xff0c;会对整个项目的进展造成严重影响&…

php web音视频通话,实现音视频通话(Web)

实现音视频通话(Web)网易云信音视频通话产品的基本功能包括高质量的实时音视频通话。当您成功初始化 SDK 之后&#xff0c;您可以简单体验本产品的基本业务流程。本文档为您展示音视频通话提供的基本业务流程。前提条件请确认您已完成以下操作&#xff1a;快速跑通Sample Code注…

【Open vSwitch】Open vSwitch的VxLAN隧道网络实验

验参考&#xff1a; Open vSwitch的VxLAN隧道网络实验 实验步骤&#xff1a; 1. 预先配置: 1. 验证两虚拟机的OvS服务是否被启动好&#xff1a; # ps –ef|grep ovs 2. 登陆两台安装Mininet的虚拟机&#xff0c;分别查看IP地址&#xff1a; VM1&#xff08;192.168.0.102&#…

centos oracle创建库,CentOS Oracle安装必要的软件创建数据库

CentOS Oracle安装系统的特性&#xff0c;既可作为高校计算机专业CentOS Oracle安装学习&#xff0c;也可以作为CentOS系统开源爱好者、CentOS系统用户CentOS Oracle安装系统的特性&#xff0c;&#xff0c;既可作为高校计算机专业CentOS Oracle安装学习&#xff0c;也可以作为…

(转载)windows server 2003的注意事项

Windows Server 2003需要注意的地方Windows Server 2003分为4个版本&#xff1a;标准版、企业版、Datacenter 版和 Web版&#xff0c;对硬件系统的最小要求为&#xff1a;最小CPU速度 133MHz&#xff0c;推荐CPU速度 550MHz最小内存要求 128M&#xff0c;推荐最小内存 256M安装…

【Open vSwitch】Open vSwitch流表应用实战

实验参考&#xff1a; Open vSwitch流表应用实战 如何在ubuntu系统下搭建一个opendaylight Beryllium版本环境 实验步骤&#xff1a; 1. 前期准备。 1.创建2个虚拟机&#xff0c;一个是选择OpenDaylight镜像的虚拟机作为控制器&#xff08;注&#xff1a;内存大于2G&#xff09…

oracle sql loop merge,Oracle之存储过程和MERGE INTO语句

一、MERGE INTO语句1、merge into语句的功能&#xff1a;我们操作数据库的时候&#xff0c;有时候会遇到insert或者Update这种需求。我们操纵代码时至少需要写一个插入语句和更新语句并且还得单独写方法效验数据是否存在&#xff0c;这种操作完全可以用merge into语句代替&…

七月暴雨

狼是弱者 是生命无从着落的弱者 是黯然神伤的异族 它们此刻在星光月夜里 悲情地凝望厮守缠绵过的故园 在逡巡的感伤里作别 为了生命 为了延续 选择死亡或者选择离去 就像时间无意从指间滑过一样 悄悄的溜走 没有…

【OpenFlow】OpenFlow1.3协议基于Mininet部署与验证

实验参考&#xff1a; OpenFlow1.3协议基于Mininet部署与验证 实验步骤&#xff1a; 1. 安装mininet&#xff0c;具体步骤请看实验参考。 2. Mininet创建拓扑后连接支持OpenFlow1.3的控制器&#xff1a; 在连接前&#xff0c;可以通过命令确认控制器的端口号&#xff1a; 3. 进…

oracle gets/exec 单位,ORACLE AWR使用基础

ORACLE AWR使用基础Oracle Database 10g 提供了一个显著改进的工具&#xff1a;自动工作负载信息库(AWR)。Oracle 建议用户用这个取代Statspack。AWR 实质上是一个Oracle 的内置工具&#xff0c;它采集与性能相关的统计数据&#xff0c;并从那些统计数据中导出性能量度&#xf…

思科(Cisco)IOS 12.3特性分析[ZT]

cisco的ios 12.3和其子版本不仅包含增加的基本变化和漏洞修复。一起来近距离体验12个最有用的变化&#xff0c;包括网络准入控制&#xff08;nac&#xff09;&#xff0c;最优边缘路由&#xff0c;动态多点***&#xff0c;ipsec全状态故障恢复等。      可能会有少数网络工…

【OpenFlow】OpenFlow1.0协议分析

实验参考&#xff1a; OpenFlow1.0协议分析 实验步骤&#xff1a; Coming soon... 转载于:https://www.cnblogs.com/ptolemy/p/11257083.html

vs连接oracle数据库报错,用VS连接oracle数据库时ORA-12504错误

Android中的AlertDialog使用示例二(普通选项对话框)在Android开发中,我们经常会需要在Android界面上弹出一些对话框,比如询问用户或者让用户选择.这些功能我们叫它Android Dialog对话框,AlertDialog实现方法为建造者模式. ...OpenCV2学习笔记05&#xff1a;矩阵翻转对图像进行翻…