兩種簡單分析和優化MySQL資料庫表的方法
題外話
mysql版本為5.7.27,隔離級別為RR。
一、分析表和檢查表
1)alalyze
alalyze [local|no_write_to_binlog] table table_name1[,table_name2]...
用於分析和儲存表的關鍵字分佈,分析後可以使系統等到更準確的統計資訊,使得SQL能夠生成正確的執行計劃。在分析表期間,使用一個讀取鎖定對錶進行鎖定。對於MyISAM、BDB、和InnoDB表有用。
alalyze table xxx;
2)check
check table table_name[,table_name2]...[option]...option={QUICK|FAST|MEDIUM|EXTENDED|CHANGED}
檢查表的作用是檢查一個或者多個表是否有錯誤。也可以檢查檢視是否有錯誤。check table 對MyISAM和InnoDB有作用。
check table xxx;
二、優化表
1)optimize
optimize [local|no_write_to_binlog] table table_name1[,table_name2]...
如果刪除了表的一大部分,或者對含有可變長度列的表(含有varchar、blob、text列的表)進行了很多更改,
則應該使用optimize table 命令來進行表優化。optimize 可以合併表中的空間碎片,消除由於刪除或者更新造成的空間浪費。該命令只對MyISAM、BDB、InnoDB表起作用。
optimize table xxx;
2)alter table xxx engine=innodb;
對於InnoDB表來說,可以設定innodb_file_per_table引數,設定InnoDB為獨立表空間模式,這樣每個資料庫的的每個表都會生成一個獨立的ibd檔案,使用者儲存表的資料可和索引。這樣可以一定程度上減輕InnoDB表空間的回收問題。刪除大量資料後,InnoDB可以通過alter table 但不修改儲存引擎的方式回收不用的空間。alter table xxx engine=innodb;
**optimize優化原理**
對mysql進行大量增刪改操作,磁碟上的空間沒有被立即收回(資料空間、索引位),而是等待新的資料來填充空缺.這些空間可以被後續的insert操作利用,但如果記錄是變長的,那麼不是所有的空間都能被充分利用,形成碎片,影響磁碟IO.
optimize可以把分散(fragmented)儲存的資料重新挪到一起(defragmentation),清除碎片,回收閒置的資料庫空間.
對於MyISAM表,OPTIMIZE TABLE按如下方式操作:
1. 如果表已經刪除或分解了行,則修復表。
2. 如果未對索引頁進行分類,則進行分類。
3. 如果表的統計資料沒有更新(並且通過對索引進行分類不能實現修復),則進行更新。
三、總結
analyze、check、optimize、alter table 執行期間都會鎖表,因此要根據實際情況在資料庫不繁忙的時候執行相關操作。
哎喲,不錯噢! - - - - - - 歡迎指出有誤的地方以及補充更好的方法
相關文章
- 優化MySQL資料庫效能的八種方法優化MySql資料庫
- MySQL建立資料庫的兩種方法MySql資料庫
- Oracle資料的優化器有兩種優化方法:Oracle優化
- 50種優化資料庫的方法優化資料庫
- MySQL優化表和分析表MySql優化
- MySQL 海量資料的 5 種分頁方法和優化技巧MySql優化
- mysql資料庫連表查詢的幾種方法MySql資料庫
- MySQL資料庫效能優化之表結構優化(轉)MySql資料庫優化
- 五十種巧妙優化SQL Server資料庫的方法優化SQLServer資料庫
- Js提交表單的兩種方法JS
- mysql資料庫優化之表的設計和慢查詢定位MySql資料庫優化
- MySQL資料庫優化MySql資料庫優化
- MySQL資料庫的效能的影響分析及其優化MySql資料庫優化
- Mysql多欄位大表的幾種優化方法MySql優化
- 50種方法巧妙優化你的SQL Server資料庫優化SQLServer資料庫
- MySQL資料庫優化分析MySql資料庫優化
- 解決MySQL的主從資料庫沒有同步的兩種方法MySql資料庫
- 優化MySQL資料庫效能的八大方法優化MySql資料庫
- MongoDB資料庫的兩種正確停庫方法MongoDB資料庫
- MySQL兩千萬資料優化&遷移MySql優化
- MYSQL資料庫------SQL優化MySql資料庫優化
- resize和scroll事件優化簡單方法事件優化
- 在大資料情況下MySQL的一種簡單分頁最佳化方法大資料MySql
- 簡單說兩句 Like 的優化優化
- MYSQL資料表損壞的原因分析和修復方法MySql
- MySQL修復表的簡單分析MySql
- ASP建立SQL Server資料庫的兩種方法SQLServer資料庫
- MySQL資料庫的效能優化指南MySql資料庫優化
- MySQL單表百萬資料記錄分頁效能優化MySql優化
- 資料庫優化之臨時表優化資料庫優化
- 兩種簡單的方法Docker構建LANMPDocker
- MySQL防止delete命令刪除資料的兩種方法MySqldelete
- 連線MySQL資料庫的兩種方式介紹MySql資料庫
- Excel合併單元格的兩種簡單方法Excel
- 資料庫的優化和效率資料庫優化
- 在ABAP裡取得一個資料庫表記錄數的兩種方法資料庫
- MySQL兩種儲存引擎: MyISAM和InnoDB 簡單總結MySql儲存引擎
- 【資料庫】MySQL查詢優化資料庫MySql優化