將MySQL的臨時目錄建立在內存中的教程_MySQL教程

      編輯Tag賺U幣
      教程Tag:暫無Tag,歡迎添加,賺取U幣!

      推薦:介紹使用WordPress時10個常用的MySQL查詢
      大多數使用 WordPress 搭建的網站,其后臺都是 MySQL 數據庫,經常我們需要定制 WordPress 的功能,這里我們列表 10 個最有用的 WordPress 的數據庫查詢,你需要一個數據庫的管理工具,例如 phpMyAdmin 或者 Navicat 等來執行這些 SQL 語句。 1. 將所有文件的作者改為

         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中的集合操作
      啥是集合操作? 通常來說,將聯接操作看作是表之間的水平操作,因為該操作生成的虛擬表包含兩個表中的列。而我這里總結的集合操作,一般將這些操作看作是垂直操作。MySQL數據庫支持兩種集合操作:UNION DISTINCT和UNION ALL。 與聯接操作一樣,集合操作也是對兩個輸入進

      來源:模板無憂//所屬分類:MySQL教程/更新時間:2015-05-23
      相關MySQL教程