日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql分析表命令_MySql分析整理命令

發布時間:2025/3/20 数据库 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql分析表命令_MySql分析整理命令 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Analyze Table 分析表------------------------------------------------------------MySQL 的Optimizer(優化元件)在優化SQL語句時,首先需要收集一些相關信息,其中就包括表的cardinality(可以翻譯為“散列程度”)。

它表示某個索引對應的列包含多少個不同的值——如果cardinality大大少于數據的實際散列程度,那么索引就基本失效了。我們可以使用SHOW INDEX語句來查看索引的散列程度:

mysql> SHOW INDEX FROM log_secretkey_download;

+------------------------+------------+-------------+--------------+---------------+-----------+-------------+----------+--------+------+------------+---------+

| Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment |

+------------------------+------------+-------------+--------------+---------------+-----------+-------------+----------+--------+------+------------+---------+

| log_secretkey_download | 0 | PRIMARY | 1 | id | A | 925508 | NULL | NULL | | BTREE | |

| log_secretkey_download | 1 | index_eu883 | 1 | download_time | A | NULL | NULL | NULL | | BTREE | |

| log_secretkey_download | 1 | index_sysid | 1 | sysid | A | NULL | NULL | NULL | | BTREE | |

+------------------------+------------+-------------+--------------+---------------+-----------+-------------+----------+--------+------+------------+---------+

3 rows in set因為此時log_secretkey_download表中,有兩個字段的Cardinality為null, 正常是應該有值的。

下面我們通過Analyze Table語句來修復索引:ANALYZE local TABLE log_secretkey_download;

完成后再看索引,正常了mysql> SHOW INDEX FROM log_secretkey_download;

+------------------------+------------+-------------+--------------+---------------+-----------+-------------+----------+--------+------+------------+---------+

| Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment |

+------------------------+------------+-------------+--------------+---------------+-----------+-------------+----------+--------+------+------------+---------+

| log_secretkey_download | 0 | PRIMARY | 1 | id | A | 925586 | NULL | NULL | | BTREE | |

| log_secretkey_download | 1 | index_eu883 | 1 | download_time | A | 231396 | NULL | NULL | | BTREE | |

| log_secretkey_download | 1 | index_sysid | 1 | sysid | A | 9 | NULL | NULL | | BTREE | |

+------------------------+------------+-------------+--------------+---------------+-----------+-------------+----------+--------+------+------------+---------+

3 rows in set此時索引已經修復,查詢效率大大提高。需要注意的是,如果開啟了binlog,那么Analyze Table的結果也會寫入binlog,我們可以在analyze和table之間添加關鍵字local取消寫入。Checksum Table--------------------------------------------------------------數據在傳輸時,可能會發生變化,也有可能因為其它原因損壞,為了保證數據的一致,我們可以計算checksum(校驗值)。使用MyISAM引擎的表會把checksum存儲起來,稱為live checksum,當數據發生變化時,checksum會相應變化。在執行Checksum Table時,可以在最后指定選項qiuck或是extended;quick表示返回存儲的checksum值,而extended會重新計算checksum,如果沒有指定選項,則默認使用extended。Optimize Table 整理表 --------------------------------------------------------------經常更新數據的磁盤需要整理碎片,數據庫也是這樣,Optimize Table語句對MyISAM和InnoDB類型的表都有效。如果表經常更新,就應當定期運行Optimize Table語句,保證效率。與Analyze Table一樣,Optimize Table也可以使用local來取消寫入binlog。

mysql> Optimize local Table log_secretkey_download;

+---------------------------------+----------+----------+----------------------------------------------------------------------------------------------------+

| Table | Op | Msg_type | Msg_text |

+---------------------------------+----------+----------+----------------------------------------------------------------------------------------------------+

| configdb.log_secretkey_download | optimize | Error | Table './configdb/log_secretkey_download' is marked as crashed and last (automatic?) repair failed |

| configdb.log_secretkey_download | optimize | Error | Table 'log_secretkey_download' is marked as crashed and last (automatic?) repair failed |

| configdb.log_secretkey_download | optimize | error | Corrupt |

+---------------------------------+----------+----------+----------------------------------------------------------------------------------------------------+

3 rows in set

Repair Table 修復表--------------------------------------------------------------用于修復表,只對MyISAM和ARCHIVE類型的表有效。這條語句同樣可以指定選項:QUICK:最快的選項,只修復索引樹。EXTENDED:最慢的選項,需要逐行重建索引。USE_FRM:只有當MYI文件丟失時才使用這個選項,全面重建整個索引。與Analyze Table一樣,Repair Table也可以使用local來取消寫入binlog。

mysql> Repair local Table log_secretkey_download;

+---------------------------------+--------+----------+----------------------------------------------+

| Table | Op | Msg_type | Msg_text |

+---------------------------------+--------+----------+----------------------------------------------+

| configdb.log_secretkey_download | repair | warning | Number of rows changed from 339826 to 925655 |

| configdb.log_secretkey_download | repair | status | OK |

+---------------------------------+--------+----------+----------------------------------------------+

2 rows in setCheck Table 檢查表--------------------------------------------------------------數據庫經常可能遇到錯誤,譬如數據寫入磁盤時發生錯誤,或是索引沒有同步更新,或是數據庫未關閉MySQL就停止了。遇到這些情況,數據就可能發生錯誤:Incorrect key file for table: ' '. Try to repair it.此時,我們可以使用Check Table語句來檢查表及其對應的索引。譬如我們運行mysql> CHECK TABLE log_secretkey_download;

+---------------------------------+-------+----------+----------+

| Table | Op | Msg_type | Msg_text |

+---------------------------------+-------+----------+----------+

| configdb.log_secretkey_download | check | status | OK |

+---------------------------------+-------+----------+----------+

1 row in setMySQL會保存表最近一次檢查的時間,每次運行check table都會存儲這些信息:執行SELECT TABLE_NAME, CHECK_TIMEFROM INFORMATION_SCHEMA.TABLESWHERE TABLE_NAME = 'PLAYERS'AND TABLE_SCHEMA = 'TENNIS'; /*TENNIS是數據庫名*/結果是TABLE_NAME CHECK_TIME---------- -------------------PLAYERS 2006-08-21 16:44:25Check Table還可以指定其它選項:UPGRADE:用來測試在更早版本的MySQL中建立的表是否與當前版本兼容。QUICK:速度最快的選項,在檢查各列的數據時,不會檢查鏈接(link)的正確與否,如果沒有遇到什么問題,可以使用這個選項。FAST:只檢查表是否正常關閉,如果在系統掉電之后沒有遇到嚴重問題,可以使用這個選項。CHANGED:只檢查上次檢查時間之后更新的數據。MEDIUM:默認的選項,會檢查索引文件和數據文件之間的鏈接正確性。EXTENDED:最慢的選項,會進行全面的檢查。

總結

以上是生活随笔為你收集整理的mysql分析表命令_MySql分析整理命令的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。