当前位置: 首页 > 编程笔记 >

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

龙高歌
2023-03-14
本文向大家介绍将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    0

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

mysql> SHOW GLOBAL VARIABLES LIKE 'tmpdir';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| tmpdir    | /tmp |
+---------------+-------+

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

 类似资料:
  • 问题内容: 我正在尝试在Android的SD卡上建立一个名为“ images”的目录。这是我的代码,但是不起作用?谁能给我一些建议? 问题答案: 更新: 自Android 10,11 Storage更新以来 ,Google已通过标准编程语言文件操作来限制对Storage的访问。 对于仅针对Android 10(API 29)及更高版本的应用程序,您需要在Android清单文件中声明“ reques

  • 本文向大家介绍MySQL中临时表的基本创建与使用教程,包括了MySQL中临时表的基本创建与使用教程的使用技巧和注意事项,需要的朋友参考一下 当工作在非常大的表上时,你可能偶尔需要运行很多查询获得一个大量数据的小的子集,不是对整个表运行这些查询,而是让MySQL每次找出所需的少数记录,将记录选择到一个临时表可能更快些,然后在这些表运行查询。 创建临时表很容易,给正常的CREATE TABLE语句加上

  • [编辑]我已经将所有文件保存在一个单独的文件中,但是springboot将文件保存在临时目录中,直到上传完成,然后我才可以访问该文件

  • 问题内容: 我目前正在为一家餐馆开发门户应用程序。使用的后端数据库是Mysql,而我正在使用Spring JDBC支持来编写数据访问逻辑。 我的某些DAO充满了多个查询,并且正获得多达数千行的代码。我认为我可以通过将一些逻辑移到SQL- PSM过程中来减少大小和复杂性(因为Java中的数据绑定和粘合代码是令人讨厌的事情)。 但是,我对Db没有DDL权限,因此无法创建该过程。 我想知道是否有一种方法

  • 本文向大家介绍SQL 创建临时表或内存表,包括了SQL 创建临时表或内存表的使用技巧和注意事项,需要的朋友参考一下 示例 PostgreSQL和SQLite 要创建会话本地的临时表: SQL服务器 要创建会话本地的临时表: 创建对所有人可见的临时表: 要创建一个内存表:            

  • 问题内容: 是否存在在Java应用程序中创建临时目录的标准可靠方法?Java的问题数据库中有一个条目,注释中包含一些代码,但是我想知道在一个常用的库(Apache Commons等)中是否可以找到一种标准的解决方案? 问题答案: 如果你使用的是JDK 7,请使用新的Files.createTempDirectory类创建临时目录。 在JDK 7之前,应该这样做: 如果需要,可以提出更好的异常(IO