MySQL 中的myisam内部临时表

  • 时间:
  • 浏览:4
  • 来源:神彩大发幸运飞艇_彩神大发幸运飞艇官方

一种一种的问題在官方文档描述参考:

8.4.4 Internal Temporary Table Use in MySQL

我能 不越多描述了,执行计划一般会出先 use temporary字样,当然都没办法 先 一种可能 使用内内外部临时表,自行参考。

而对于是有无磁盘文件则如下描述:

亲们发现这里的临时表名字为#sql_bec0_14.MYD等打开函数亲们可不时要在如下代码中找到为一种一种命名最好的办法:

当然create_tmp_table函数代码包含一种一段逻辑如下来证明里边的描述,这段代码一块儿标记了internal_tmp_disk_storage_engine参数的作用,如下:

实际上一种函数一种instantiate_tmp_table。在instantiate_tmp_table中也会都看如下逻辑:

其实最终的建立一种样的内内外部临时表一种通过instantiate_tmp_table函数进行判断的,不可能 有兴趣可不时要将断点放在去进行各种测试,我水平有限,也能抛砖引玉。一种从我要花费的测试来看建立内内外部临时表的情況比官方文档列出来的多得多比如:show table status,这是栈帧放在这里供以前参考一下:

不可能 对MySQL中的临时文件的种类和作用还是比较熟悉参考下文:

http://blog.itpub.net/7728585/viewspace-2146356/一种就有基于5.7写的,一种对一种文件其实没见过,一种回想起在5.7官方文档中描述过,5.7以前默认的内内外部临时表磁盘文件使用了innodb引擎,一种5.6中默认还是myisam引擎的。5.7中使用一种引擎由参数internal_tmp_disk_storage_engine控制,一种在内存中始终是memory引擎的内内外部表,删改参考5.7官方文档:

一种在测试的以前我将tmp_table_size设置得很小了,share->max_rows自然很小,一种还是也能磁盘内内外部临时表,很是纳闷,如下此人 加入的打印输出如下:

终止在tmp目录下都看如下文件

本文一种记录一下验证过程,源码比较繁杂,时间有限没仔细读过。如有误导请见谅。

实际上不可能 设置参数big_tables为TURE不可能 包含了大字段必然会使用磁盘临时表如下:

当然我对一种函数的认知还非常有限,以前再说吧。

一种一种亲们要花费明白:

而对于tmp_table_size和max_heap_table_size 的比较一种逻辑依然在create_tmp_table函数中如下:

作者微信:

得以证明。

有俩个亲们问我下面的tmp目录的文件是干一种的,一会就删除了。他的版本是5.6



我发现我的好多文章就有亲们问的一种的问題。^_^

为了一定出先 一种文件我设置和测试如下: