位置: 编程技术 - 正文
推荐整理分享深度解析MySQL 5.7之临时表空间(深度解析桂附地黄丸),希望有所帮助,仅作参考,欢迎阅读内容。
文章相关热门搜索词:深度解析张艺谋《坚如磐石》,深度解析你也是个rapper,深度解析冯德伦最后为什么选了舒淇,深度解析东宫,深度解析101真相,深度解析桂附地黄丸,深度解析何以笙箫默,深度解析101真相,内容如对您有帮助,希望把文章链接给更多的朋友!
临时表
临时表顾名思义,就是临时的,用完销毁掉的表。 数据既可以保存在临时的文件系统上,也可以保存在固定的磁盘文件系统上。
临时表有下面几种:
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是 Ubuntu.X,想用tmpfs文件系统充当临时表空间,
然后把innodb_temp_data_file_path=tmp_space2/ibtmp2:M:autoextend添加到my.cnf里的[mysqld]下面一行, 重启MySQL服务后:
先写一个批量创建临时表的存储过程:
现在来创建张临时表:
如果在以前,我们只知道创建了张临时表,但是只能凭记忆或者手工记录下来临时表的名字等信息。
现在可以直接从数据字典里面检索相关数据。
总结
功能性我就写到这里,大家性能方面如果有兴趣可以找时间去测试。希望本文的内容对大家学习或者使用mysql5.7能带来一定的帮助,如果有疑问大家可以留言交流。
windows mysql 自动备份的几种方法汇总 基于之前的文章方法,加入批处理命令即可实现自动备份。只是由于批处理命令中对于备份文件的名字按照时间命名比较特别,所以特别整理一文。1、
详解MySQL的主从复制、读写分离、备份恢复 一、MySQL主从复制1、简介我们为什么要用主从复制?主从复制目的:可以做数据库的实时备份,保证数据的完整性;可做读写分离,主服务器只管写,
Mybatis报错: org.apache.ibatis.exceptions.PersistenceException解决办法 Mybatis报错:org.apache.ibatis.exceptions.PersistenceException解决办法一、问题描述写好配置文件用JUnit进行测试,一运行就报错:org.apache.ibatis.exceptions.PersistenceExcepti
标签: 深度解析桂附地黄丸
本文链接地址:https://www.jiuchutong.com/biancheng/349637.html 转载请保留说明!友情链接: 武汉网站建设