作者:杨涛涛
尽管临时表在实际在线场景中很少会去显式使用,但在某些运维场景还是需要到的,在MySQL5.7中,专门针对临时表做了些优化,下面这篇文章我们来一起深入的解析MySQL 5.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的初始化,在执行这个脚本之后,mysql里就会出现名为mysql的库。解决方法如下:
1、首先连接到mysql数据库,查看默认所有数据库信息,如下图所示。
2、因为user表存在于mysql数据库中,可以通过use命令来切换数据库。
3、切换数据库之后通过show命令可以查看数据库中所有的数据表,在最后可以看到user数据表。
4、通过desc命令可以查看user表的结构信息,因为User表所包含的信息比较多所以结构信息也比较多。
5、在默认没有创建其它用户的情况下,只有超级管理员的信息。
6、另外如何想要查直接查看超级管理员的权限可以通过show grants来进行查看。
假设你的表名为table,日期型字段为date, 把下面语句中的'YYYY-MM-DD HHMMSS'换成实际的日期即可:select * from table where date >(DATE_ADD('YYYY-MM-DD HHMMSS', INTERVAL 5 DAY))
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)