Welcome 微信登录

首页 / 数据库 / MySQL / 在内存中建立 MySQL 的临时目录

MySQL 系统会在内存(MEMORY)和磁盘(MyISAM)中建立临时表,如何能知道在磁盘中建立了多少临时表以及在内存中建立多少临时表呢?你可以通过下面命令获知:mysql> SHOW GLOBAL STATUS LIKE "Created_tmp%tables";
+-------------------------+----------+
| Variable_name         | Value    |
+-------------------------+----------+
| Created_tmp_disk_tables | 49094    |
| Created_tmp_tables      | 37842181 |
+-------------------------+----------+很显然,在内存中的临时表的性能要比在磁盘中好得多得多,因此我们希望尽可能的在内存中建立临时表。为了实现这个要求,我们先检查下临时表的配置大小:mysql> SHOW GLOBAL VARIABLES 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:shell> mkdir -p /mnt/ramdisk
shell> chown mysql:mysql /mnt/ramdisk
shell> mount -t tmpfs -o size=512M tmpfs /mnt/ramdisk为了在系统下次启动时自动创建,我们可以将下列脚本置于 /etc/fstab 文件中:tmpfs         /mnt/ramdisk   tmpfs rw,mode=1777    0     0MySQL 还是将数据写到默认的磁盘,可通过下面命令来检查:mysql> SHOW GLOBAL VARIABLES LIKE "tmpdir";
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| tmpdir        | /tmp  |
+---------------+-------+你可以修复 my.cnf 文件来改变这个路径,然后重启数据库。英文原文,OSCHINA原创翻译ORA-01033: ORACLE initialization or shutdown in progress一个InnoDB 加锁的案例相关资讯      MySQL基础教程  MySQL临时目录 
  • MySQL基础教程:关于varchar(N)  (01月22日)
  • MySQL SELECT同时UPDATE同一张表  (02/19/2013 07:20:18)
  • Linux修改MySQL最大并发连接数  (02/15/2013 15:37:21)
  • 高性能MySQL(第3版) 中文PDF带目  (10/26/2014 10:03:50)
  • 如何在MySQL中的获取IP地址的网段  (02/18/2013 12:23:33)
  • C++和C#访问MySQL的简单代码示例  (12/21/2012 09:04:10)
本文评论 查看全部评论 (0)
表情: 姓名: 字数

版权所有©石家庄振强科技有限公司2024 冀ICP备08103738号-5 网站地图