程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> 將MySQL的暫時目次樹立在內存中的教程

將MySQL的暫時目次樹立在內存中的教程

編輯:MySQL綜合教程

將MySQL的暫時目次樹立在內存中的教程。本站提示廣大學習愛好者:(將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 文件來轉變這個途徑,然後重啟數據庫。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved