2016-12-29 57 views
0

在SQL服務器分區具有周期狀 表 - >上分區架構 - >上的文件組(F1,F2,F3,F4,...)文件組中MariaDB的

例如Oracle中:

SQL Server中的文件組與Oracle中的表空間類似,它是可以包含一個或多個OS文件的表和索引數據的邏輯存儲。

但是如何MariaDB它有文件組?

回答

0

不一樣。你想達到什麼目的?請記住,有些事情是因爲磁盤曾經比數據庫小。今天,很少有問題。此外,RAID控制器,SAN等消除了手動確定文件到哪裏的需要(甚至不需要)。即使在運行中,操作系統也可以連接多個卷。等等

MyISAM能夠說出數據的位置和索引文件的位置。但MyISAM幾乎沒有死。即使在那裏,將數據放在一個驅動器上並將索引放在另一個驅動器上也是愚蠢的。在執行查詢時,首先訪問索引,然後是數據。如果有任何表現獲得,那很少。簡單的RAID條帶可能會做得更好。

InnoDB有一種方法可以說明ibdata1,ibdata2等。這可以追溯到操作系統無法創建大於2GB或4GB的文件的日子。它今天基本上從未使用過。

InnoDB表可以全部位於ibdata1中,也可以分散在各個.ibd文件中。但我並不認爲這就是你所說的。使用這個「每個表文件」,小表被低效存儲。通過讓你在一個給定的「表空間」中放入多個表,類似於.ibd文件,MySQL 8.0會稍微改進。

InnoDB表空間包含給定表或表集合的所有數據索引。分區表,當file_per_table時,每個分區都存在於不同的.ibd文件中。這可能會隨着8.0而改變。

所有這些都不值得注意。我猜想只有1%的系統需要考慮這一點。簡單地讓MySQL/MariaDB做它想做的事情;這很好。

一件相關的事情......在上世紀80年代和90年代,一些供應商擁有「原始設備」訪問權限,因爲他們認爲他們可能比通過操作系統做得更好。同樣,操作系統已經改進,RAID控制器非常複雜,並且存在SAN。所以生吃不再重要。 (我認爲MySQL從來沒有這樣做過)。這對供應商來說肯定會有一個很大的開發和維護問題。

有多少DBA將tmpdir放在一個單獨的分區中,只是發現事情崩潰了,因爲它不夠大。 RAM盤的同上。

+0

即使使用優化語句,巨大的表和索引也會很慢 - 如果對錶進行分區,那麼讀取少量分區的語句會更快。如果您僅需要備份分區而不是整個表,備份可能會更快。 –

+0

我不認爲有任何「通過分區備份」,「分區」或磁盤分區。 –

+0

掃描少量分區的唯一時間可能是有利的,因爲您沒有像樣的索引,因此需要掃描整個分區。即便如此,索引可能足以模擬分區。 –