簡體   English   中英

更改架構時,如何加快MySQL中的表重建速度?

[英]How can I speed-up the table reconstruction in MySQL when altering the schema?

我有一個相對較大的MySQL InnoDB表(已壓縮),有時我需要更改其架構(增加列大小或添加字段)。

具有數百萬行的500 MB表大約需要1個小時,但是服務器似乎並不很忙(CPU @ 5%,未使用太多RAM,並且I / O為2.5 MB / s)。

該表未在生產中使用,因此沒有同時存在的並發請求。 只有一個主索引(在前5列上)和一個外鍵約束。

您對如何加快表格更改過程有任何建議嗎?

在InnoDB被“修復”之前,改變存儲引擎(向TokuDB之類的新一代引擎)似乎是必須的。

了解確切的表和主鍵/索引定義會有所幫助,並且次要的是,將行數精確到最接近的百萬,盡管我猜想因為表只有500mb,所以可能少於2000萬行。 另外,更改表的方法-是創建新的架構並將其插入其中,還是使用alter table等。

我曾經在這方面取得過成功,例如

  • 更改索引鍵組成,添加唯一鍵
  • 首先刪除索引,然后更改表,然后再添加索引。 如果獨立索引受到更改的影響,有時它們可​​能是真正的性能殺手。
  • 優化表結構以刪除不需要或過大的列
  • 分離出不會改變的數據(通常是列,但在某些情況下可以垂直分區)和可能改變的核心結構,因此您只需要攪動表的一小部分

暫無
暫無

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

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