簡體   English   中英

在MySQL中使用ENGINE作為MRG_MYISAM有什么優勢

[英]Is there any advantage of using ENGINE as MRG_MYISAM in mysql

我正在做一個像google adwords這樣的跟蹤網站。 我只做修改。 在那個站點中,我看到他們正在為每個月創建表,並將該表合並為一個表,該表存儲了有關點擊和搜索詳細信息的信息以及合並后的表(具有記錄的部分)。在查詢中,他們僅使用了合並表,其中包含大量記錄。 使用這樣的表有什么好處嗎?查詢要花10多分鍾才能執行。

優點如下:如果您沒有獲得以下優點,請不要使用它。

輕松管理一組日志表。 例如,您可以將不同月份的數據放入單獨的表中,使用myisampack壓縮其中的一些數據,然后創建MERGE表以將它們用作一個表。

獲得更高的速度。 您可以根據某些條件拆分一個大型只讀表,然后將各個表放在不同的磁盤上。 以這種方式構造的MERGE表可能比使用單個大型表快得多。

執行更有效的搜索。 如果您確切知道要查找的內容,則可以僅在基礎表之一中搜索某些查詢,而在其他表中使用MERGE表。 您甚至可以擁有許多使用重疊表集的不同MERGE表。

執行更有效的維修。 修復映射到MERGE表的單個較小的表比修復單個大型表要容易。

立即將多個表映射為一個。 MERGE表不需要維護其自身的索引,因為它使用各個表的索引。 因此,MERGE表集合可以非常快速地創建或重新映射。 (即使沒有創建索引,在創建MERGE表時仍必須指定索引定義。)

如果您有一組表,可以根據需要從中創建一個大表,則可以根據需要從中創建一個MERGE表。 這快得多,並節省了大量磁盤空間。

超出了操作系統的文件大小限制。 每個MyISAM表都受此限制約束,但沒有MyISAM表的集合。

您可以通過定義映射到單個表的MERGE表來為MyISAM表創建別名或同義詞。 這樣做不會對性能造成任何明顯的影響(每次讀取僅需要進行兩次間接調用和memcpy()調用)。

您可以在基本信息鏈接優點和缺點鏈接上閱讀有關此內容的更多信息

MRG_MYISAM僅適用於MyISAM表,這些表本身並不是表的首選。 您通常會使用InnoDB表。

MRG_MYISAM引擎是在MySQL支持視圖和分區之前發明的。 范圍分區(例如每月分區)很可能是您想要的。

分區對用戶而言對查詢是透明的,但仍使用修剪功能,以便僅從所選分區中讀取查詢,從而對其進行優化。

我建議您使用InnoDB表,並檢查范圍分區 MRG_MYISAM和MyISAM仍在使用。 他們可以為您解決。 僅僅是MyISAM引入了很多麻煩(沒有崩潰恢復,表級鎖定等等),以至於無數次了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM