2014-07-25 76 views
0

在用於IO密集數據庫的SQL Server或通常用於VLDB的數據庫中,我們創建多個數據庫文件並將它們放在單獨的Disks/Luns上,以分散IO工作負載。mySQL數據庫可以有多個文件來分散IO嗎?

我不能看到mySQL是如何實現的,因爲默認情況下所有的數據庫都是在實例目錄下創建的,沒有選項可以將它們放置在別處或創建多個文件。我錯過了什麼?

回答

0

大多數人使用RAID來分散IO工作負載。

如果您確實需要,可以將每個數據庫的子目錄作爲另一個磁盤卷的符號鏈接。但這通常不是必需的。

您也可以將重做日誌,二進制日誌和查詢日誌移動到數據目錄之外的另一個目錄。這些文件具有相當高的IO使用率,因此這可以作爲平衡IO負載的一種方式。


回覆您的評論:

MySQL沒有對 「文件組」,由該名稱的任何選項。但是您可以將給定的表移動到它自己的數據庫中。 MySQL上的數據庫非常簡單,將它們視爲表格的名稱空間。訪問多個數據庫不需要單獨的登錄,只需在查詢中限定表名即可。

如果您希望給定的數據庫在Windows上擁有自己的物理磁盤,我將使用Windows磁盤管理器至mount a disk to an empty directory而不是獨立的驅動器號。因此,您可以將MySQL數據目錄下的一個子目錄映射到專用物理磁盤。因此,該子目錄下的數據和索引文件將位於其自己的磁盤上。

有一些數據文件是MySQL在數據庫特定的子目錄之外管理的。例如,日誌以及中央InnoDB表空間(即使您配置innodb_file_per_table,這也很重要)。其中的每一個都允許您指定路徑,以便您可以在文件系統的任何位置找到它們。但是,您無法將每個表或每個數據庫的寫入分開。

MySQL是與Microsoft SQL Server(或Oracle等)不同的產品,您不應該期望SQL Server的每個功能都在MySQL中具有直接模擬功能。

+0

雖然Raid通常不是一個選項。如果你有一個非常高的利用表,它可以是有用的給它自己的存儲。在SQL Server中,我只是創建一個新的文件組,在專用存儲上的文件,然後在該文件組上建立表索引。 Presto - 帶有專用磁盤的表格。我認爲這在所有的RDBMS上都是可以實現的,但是我正在努力研究如何使用mySQL。 –

相關問題