將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 文件來轉變這個途徑,然後重啟數據庫。