天天看點

阿裡雲mysql資料庫引擎_在阿裡雲RDS資料庫伺服器中将MySQL InnoDB引擎表轉為壓縮格式...

今年以來将我們以前托管或者租用的伺服器全面轉向阿裡雲,除了采用ECS伺服器以外,還有一項重要的是采用了RDS資料庫伺服器,這對于服務的穩定性、各項名額的監控、調優等都有幫助。

不過随着近期更多資料庫轉到RDS上,空間的占用、IOPS的升高等問題也越來越明顯,增加RDS空間、更新RDS規格肯定是有用的,但一味這樣做的話,費用會明顯飙升,還是得想辦法優化。

前一陣子也《試用阿裡雲RDS的MySQL壓縮存儲引擎TokuDB》,但因為檔案數太多超過系統限制而放棄,也嘗試過MyISAM引擎和InnoDB引擎的壓縮方式,但阿裡雲客服說MyISAM已經不支援,是以剩下壓縮這種方式現在又拿出來嘗試。

進過幾個RDS近一周的測試,對我們這種資料庫讀取量遠大于寫入量的應用來說,InnoDB表進行壓縮有很明顯的效果,空間占用大約為原來的50%左右,進而讓磁盤讀寫參數IOPS也有明顯下降,真是一舉兩得!從RDS監控資料看,記憶體也有下降,CPU按理說應該上升,但也不是很明顯。

單個表轉換的SQL語句為:

ALTER TABLE $tableName ENGINE=InnoDB ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=8;

多個表可以用php編寫一個循環來查出所有的表(可參考我以前寫的《列出MySQL資料庫伺服器上所有庫和表及引擎屬性》),進而批量轉換。而對于多個庫來說則可以寫一個.sh腳本多次調用php程式來實作大批量轉換。