Chinaunix

标题: MySQL的里所说的临时表就是内存表吧?! [打印本页]

作者: linuxkumao    时间: 2008-02-26 14:03
标题: MySQL的里所说的临时表就是内存表吧?!
MySQL里是不是没有用像Oracle里的那种用templete关键字创建的临时表?
MySQL的里所说的临时表指的就是内存表,对吧?
谢谢!
作者: yueliangdao0608    时间: 2008-02-26 14:31
http://www.itpub.net/thread-944861-1-1.html
作者: showsa    时间: 2008-02-26 15:49
临时表并不是都放在内存里面
这个根据你的配置和临时表的大小决定,如果临时表的容量超过配置中设置的最大临时表容量,那么将以文件形式存储。
作者: yueliangdao0608    时间: 2008-02-26 16:14
原帖由 showsa 于 2008-2-26 15:49 发表
临时表并不是都放在内存里面
这个根据你的配置和临时表的大小决定,如果临时表的容量超过配置中设置的最大临时表容量,那么将以文件形式存储。



呵呵,没有提到这个参数的设置。
作者: linuxkumao    时间: 2008-02-26 16:28
谢谢两位!

这个参数叫什么?
临时表和内存表(默认)是会话级的,还是全局级的?也能使用session或global关键字吗?

谢谢!

[ 本帖最后由 linuxkumao 于 2008-2-26 17:47 编辑 ]
作者: wildlily980    时间: 2008-02-26 20:02
临时表是会话级的,断开连接就消失。内存表是“全局级”的,重启机器就消失,对其它用户可见。
作者: linuxkumao    时间: 2008-02-27 08:47
谢谢楼上的朋友!

http://www.itpub.net/thread-944861-1-1.html


作者: showsa    时间: 2008-02-27 09:08
原帖由 yueliangdao0608 于 2008-2-26 16:14 发表



呵呵,没有提到这个参数的设置。


由max_heap_table_size和tmp_table_size共同决定
temporar table 默认是heap表,如果超过上述2个参数中的最小值,那么它将自动转换成myisam,以文件方式存储。
作者: showsa    时间: 2008-02-27 09:34
更正我在8楼的发言

经试验
在默认引擎为innodb的情况下,数据是存放在tmp目录下的(存在.frm和.ibd 文件),而并不是手册上说的myisam
作者: yueliangdao0608    时间: 2008-02-27 15:32
原帖由 showsa 于 2008-2-27 09:34 发表
更正我在8楼的发言

经试验
在默认引擎为innodb的情况下,数据是存放在tmp目录下的(存在.frm和.ibd 文件),而并不是手册上说的myisam






欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2