如何在内存中建立MySQL的临时目录?_MySQL, Oracle及数据库讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  MySQL, Oracle及数据库讨论区 »
总帖数
1
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 2093 | 回复: 0   主题: 如何在内存中建立MySQL的临时目录?        下一篇 
tngou
注册用户
等级:中校
经验:2433
发帖:192
精华:15
注册:2014-4-28
状态:离线
发送短消息息给tngou 加好友    发送短消息息给tngou 发消息
发表于: IP:您无权察看 2015-3-25 17:00:06 | [全部帖] [楼主帖] 楼主   主页

MySQL 系统会在内存(MEMORY)和磁盘(MyISAM)中建立临时表,如何能知道在磁盘中建立了多少临时表以及在内存中建立多少临时表呢?你可以通过下面命令获知:


1

2

3

4

5

6

7

mysql> SHOW GLOBALSTATUS LIKE'Created_tmp%tables';

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

Variable_name           Value   

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

Created_tmp_disk_tables 49094   

Created_tmp_tables      37842181

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

很显然,在内存中的临时表的性能要比在磁盘中好得多得多,因此我们希望尽可能的在内存中建立临时表。

为了实现这个要求,我们先检查下临时表的配置大小:


1

2

3

4

5

6

7

mysql> SHOW GLOBALVARIABLES LIKE'%table_size';

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

Variable_name       Value   

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

max_heap_table_size 25165824

tmp_table_size      25165824

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

如果临时表的大小比上述值小,则放于内存中的 MEMORY 表;如果比上述值大则存放于磁盘中的 MyISAM 表。

但还有一个其他的因素会导致存放到磁盘的 MyISAM 表,那就是 MEMORY 表不能处理 TEXT 和 BLOG 类型数据。这种情况下 MySQL 会直接写入磁盘中的 MyISAM,并算作是 Created_tmp_disk_tables 的值。

如果临时表已经开始导致严重的 I/O 性能问题,那么你就要考虑使用磁盘内存映射来代替物理磁盘。

在 Linux 上我们有两种方法在内存中建立 RAM-Disk,分别是 ramfs 和 tmpfs。

这里我们推荐使用 tmpfs。

可通过如下命令来创建 RAM-disk:


1

2

3

shell> mkdir-p /mnt/ramdisk

shell> chownmysql:mysql /mnt/ramdisk

shell> mount-t tmpfs -o size=512M tmpfs /mnt/ramdisk

为了在系统下次启动时自动创建,我们可以将下列脚本置于 /etc/fstab 文件中:


1

tmpfs           /mnt/ramdisktmpfs   rw,mode=1777    0       0

MySQL 还是将数据写到默认的磁盘,可通过下面命令来检查:


1

2

3

4

5

6

mysql> SHOW GLOBALVARIABLES LIKE'tmpdir';

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

Variable_name Value

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

tmpdir        /tmp 

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

你可以修复 my.cnf 文件来改变这个路径,然后重启数据库。




赞(0)    操作        顶端 
总帖数
1
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论