[MySQL] 兩個優化數據庫表的簡單方法--18.3


  這里介紹兩個簡單的優化MySQL數據庫表的方法

一、定期分析表和檢查表

1.分析表語法如下:

  alalyze [local|no_write_to_binlog] table table_name1[,table_name2]...

  用於分析和存儲表的關鍵字分布,分析后可以使系統等到更准確的統計信息,

使得SQL能夠生成正確的執行計划。在分析表期間,使用一個讀取鎖定對表進行鎖定。

對於MyISAM、BDB、和InnoDB表有用。

 

2.檢查表語法如下:

  check table table_name[,table_name2]...[option]...option={QUICK|FAST|MEDIUM|EXTENDED|CHANGED}

  檢查表的作用是檢查一個或者多個表是否有錯誤。也可以檢查視圖是否有錯誤。check table 對MyISAM和

InnoDB有作用。

 

二、定期優化表

  優化表的語法如下:

  optimize [local|no_write_to_binlog] table table_name1[,table_name2]...

  如果刪除了表的一大部分,或者對含有可變長度列的表(含有varchar、blob、text列的表)進行了很多更改,

則應該使用optimize table 命令來進行表優化。optimize 可以合並表中的空間碎片,消除由於刪除或者更新造成的

空間浪費。該命令只對MyISAM、BDB、InnoDB表起作用。

 

  對於InnoDB表來說,可以設置innodb_file_per_table參數,設置InnoDB為獨立表空間模式,這樣每個數據庫的的每個

表都會生成一個獨立的ibd文件,用戶存儲表的數據可和索引。這樣可以一定程度上減輕InnoDB表空間的回收問題。

  另外,再刪除大量數據后,InnoDB可以通過alter table 但不修改存儲引擎的方式回收不用的空間。

alter table table_name engine=innodb;

 

注意:analyze、check、optimize、alter table 執行期間都會鎖表,因此要在數據庫不繁忙的時候執行相關操作。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM