将MySQL的临时目录建立在内存中的教程

作者:goldensun 时间:2024-01-25 20:42:40 

 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    0

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


mysql> SHOW GLOBAL VARIABLES LIKE 'tmpdir';

+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| tmpdir    | /tmp |
+---------------+-------+

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

标签:MySQL
0
投稿

猜你喜欢

  • python 自定义异常和异常捕捉的方法

    2022-09-10 12:06:31
  • Go开发Gin项目添加jwt功能实例详解

    2024-04-26 17:31:00
  • 基于PHP的登录和注册的功能的实现

    2024-04-30 08:48:04
  • Python实现设置windows桌面壁纸代码分享

    2022-03-23 03:52:46
  • javascript、php关键字搜索函数的使用方法

    2024-05-08 10:10:19
  • 在主机商的共享服务器上部署Django站点的方法

    2021-03-20 22:41:34
  • mysql处理添加外键时提示error 150 问题的解决方法

    2024-01-19 03:40:27
  • 用SQL语句删除重复记录的四种方法

    2011-05-03 09:25:00
  • python调用百度语音识别实现大音频文件语音识别功能

    2023-11-29 00:59:53
  • python字典如何获取最大和最小value对应的key

    2021-07-10 11:14:22
  • Python使用RPC例子

    2021-04-11 23:26:51
  • Python爬虫库BeautifulSoup获取对象(标签)名,属性,内容,注释

    2022-06-01 11:09:45
  • 如何在Python中用好短路机制

    2022-04-23 16:56:42
  • SQLServer 2000 数据库同步详细步骤[两台服务器]

    2024-01-21 11:18:03
  • ASP函数过滤数组中重复数据方法

    2010-01-02 20:32:00
  • Django Form 实时从数据库中获取数据的操作方法

    2024-01-23 14:35:54
  • YOLOv5车牌识别实战教程(五)字符分割与识别

    2022-04-07 07:38:25
  • Java中正则表达式的使用和详解(下)

    2022-07-28 13:40:14
  • python生成不重复随机数和对list乱序的解决方法

    2023-09-24 01:17:59
  • apache集成php7.3.5的详细步骤

    2023-08-20 16:31:05
  • asp之家 网络编程 m.aspxhome.com