今年以來将我們以前托管或者租用的服務器全面轉向阿裡雲,除了采用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程序來實現大批量轉換。
评论