兩種簡單分析和優化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 海量資料的 5 種分頁方法和優化技巧MySql優化
- mysql資料庫連表查詢的幾種方法MySql資料庫
- MySQL資料庫優化MySql資料庫優化
- MySQL資料庫優化分析MySql資料庫優化
- Mysql多欄位大表的幾種優化方法MySql優化
- 解決MySQL的主從資料庫沒有同步的兩種方法MySql資料庫
- MYSQL資料庫------SQL優化MySql資料庫優化
- 在大資料情況下MySQL的一種簡單分頁最佳化方法大資料MySql
- 資料庫優化之臨時表優化資料庫優化
- MySQL防止delete命令刪除資料的兩種方法MySqldelete
- MySQL資料庫的基本使用簡單易懂MySql資料庫
- php簡單操作mysql資料庫的類PHPMySql資料庫
- 在ABAP裡取得一個資料庫表記錄數的兩種方法資料庫
- MySQL 資料庫與 SQL 優化MySql資料庫優化
- 【資料庫】MySQL查詢優化資料庫MySql優化
- MySQL兩種儲存引擎: MyISAM和InnoDB 簡單總結MySql儲存引擎
- MySql的資料庫優化到底優化啥了都(3)MySql資料庫優化
- Mysql資料庫大表最佳化方案和Mysql大表最佳化步驟MySql資料庫
- mysql 資料庫效能分析工具簡介MySql資料庫
- 8種手動和自動備份MySQL資料庫的方法MySql資料庫
- MySQL優化學習手札(四) 單表訪問方法MySql優化
- Linux 搜尋檔案和資料夾的 4 種簡單方法Linux
- 簡單介紹mysql中資料庫覆蓋匯入的幾種方式MySql資料庫
- Django 構建模板form表單的兩種方法DjangoORM
- Mysql資料庫使用from與join兩表查詢的方法區別總結MySql資料庫
- 資料庫——關係型資料庫MySQL--簡單使用資料庫MySql
- 資料庫表連線的簡單解釋資料庫
- MySql的資料庫優化到底優啥了都??(2)MySql資料庫優化
- 4種更快更簡單實現Python資料視覺化的方法Python視覺化
- Dedecms資料庫恢復與備份的兩種方法資料庫
- 教你兩種資料庫覆蓋式資料匯入方法資料庫
- 簡單介紹mysql如何刪除資料表和關聯的資料表刪除詳情MySql
- 安全快速修改Mysql資料庫名的5種方法MySql資料庫
- MySQL—-MySQL資料庫入門—-第二章 資料庫和表的基本操作MySql資料庫
- 新手必看!最簡單的MySQL資料庫詳解MySql資料庫
- mysql,sqlserver資料庫單表資料過大的處理方式MySqlServer資料庫
- 簡單介紹MySQL開啟事務的兩種方式MySql