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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql数据库管理维护_(转)Mysql数据库管理 表的维护

發(fā)布時間:2025/3/12 数据库 13 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql数据库管理维护_(转)Mysql数据库管理 表的维护 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

原文:http://t.dbdao.com/archives/mysql%E6%95%B0%E6%8D%AE%E5%BA%93%E7%AE%A1%E7%90%86-%E8%A1%A8%E7%9A%84%E7%BB%B4%E6%8A%A4.html

一、目標(biāo)

完成本課程后,你應(yīng)該能夠:

認(rèn)識不同類型的表維護(hù)操作

執(zhí)行維護(hù)表的SQL語句

使用客戶端和實用程序維護(hù)表

根據(jù)具體的存儲引擎維護(hù)表

二、實施表的維護(hù)

表的維護(hù)操作對識別和解決數(shù)據(jù)庫問題非常有用,例如:

因服務(wù)器崩潰而損壞的表

表上查詢處理緩慢

許多工具可以執(zhí)行表的維護(hù)

MySQL Workbench(MySQL工作臺)

MySQL Enterprise Monitor(MySQL企業(yè)版監(jiān)視器)

SQL(DML)Maintenance statements(SQL 維護(hù)語句)

工具:

mysqlcheck

Myisamchk

Server auto-recovery(服務(wù)器自動恢復(fù))

三、使用SQL進(jìn)行表的維護(hù)操作

有多條SQL語句可以執(zhí)行表的維護(hù):

ANALYZE TABLE : 更新索引的統(tǒng)計信息

CHECK TABLE : 檢查表的完整性

CHECKSUM TABLE : 報告表數(shù)據(jù)的一致性檢測結(jié)果

REPAIR TABLE : 修復(fù)表

OPTIMIZE TABLE : 優(yōu)化表

每條語句需要一個或多個表名和可選關(guān)鍵字。

一條維護(hù)語句和輸出的樣例:

備注:

在執(zhí)行請求的操作之后,服務(wù)器返回操作的結(jié)果信息到客戶端。

結(jié)果信息以四列格式顯示:

Table : 標(biāo)示執(zhí)行操作的表

Op : 操作的名字(check,repair,analyze,或optimize)

Msg_type : 提供一個成功或失敗的指示器

Msg_text : 提供額外的信息

如果想獲取關(guān)于MySQL表維護(hù)的更多信息,可以參照文檔:

MySQL Reference Manual

一、ANALYZE TABLE(分析表)語句

分析并存儲表的鍵值分布統(tǒng)計信息

為執(zhí)行查詢提供更好的選擇

對使用InnoDB,NDB和MyISAM存儲引擎的表生效

支持分區(qū)表

ANALYZE TABLE選項:

NO_WRITE_TO_BINLOG或LOCAL : 不記錄二進(jìn)制日志

一條ANALYZE TABLE語句結(jié)果的樣例:

備注:

當(dāng)你執(zhí)行一個除常數(shù)之外的連接時,MySQL使用存儲的鍵值分布統(tǒng)計信息決定如何優(yōu)化表連接的順序。另外,鍵值分布決定了查詢中具體的表MySQL使用什么索引。

你可以執(zhí)行ANALYZE TABLE語句分析和存儲統(tǒng)計信息,或者你可以配置InnoDB,在數(shù)據(jù)變化后或者你查詢表或索引的元數(shù)據(jù)時,將會自動收集統(tǒng)計信息。

ANALYZE TABLE 的特點:

在分析過程中,MySQL在使用InnoDB和MyISAM引擎的表上加上一個只讀鎖

這條語句等價于使用mysql check –analyze語句

需要有表的SELECT和INSERT權(quán)限

支持分區(qū)表。你也可以使用ALTER TABLE …ANALYZE PARTITION來檢查一個或多個分區(qū)。

如果表自從上次執(zhí)行ANALYZE TABLE語句后沒有發(fā)生過改變,MySQL將不分析該表。

默認(rèn)情況下,MySQL將ANALYZE TABLE語句寫入二進(jìn)制日志并且將其復(fù)制到從庫。

使用可選的關(guān)鍵字NO_WRITE_TO_BINLOG或它的別名LOCAL來設(shè)置不記錄日志。

續(xù):備注:

你可以使用以下選項控制MySQL如何收集和存儲鍵值分布統(tǒng)計信息:

innodb_stats_persistent :

當(dāng)該選項設(shè)置為ON,MySQL將在新建的表上啟用STATS_PERSISTENT設(shè)置。你也可以在使用CREATE TABLE 或者 ALTER TABLE 語句時使用STATS_PERSISTENT。

默認(rèn)情況下,MySQL不會持續(xù)將鍵值分布的統(tǒng)計信息寫入磁盤,所以它們(統(tǒng)計信息)必須在某些時間(重新)生成,比如服務(wù)器重啟。當(dāng)(對某些表)啟用STATS_PERSISTENT時,MySQL將存儲這些表的鍵值分布統(tǒng)計信息至磁盤,這樣這些表將不需要再頻繁生成統(tǒng)計信息。這使得隨著時間的推移,優(yōu)化器可以創(chuàng)建更一致(穩(wěn)定)的查詢計劃。

innodb_stats_persistent_sample_pages :

MySQL通過對STATS_PERSISTENT表的索引頁采樣而非整張表重新生成統(tǒng)計信息。

默認(rèn)情況下,它對樣例的20頁進(jìn)行采樣,增加頁數(shù)可以提升生成的統(tǒng)計信息的準(zhǔn)確性和生成更精準(zhǔn)的查詢計劃。

減少頁數(shù)可以減少生成統(tǒng)計信息時I/O的消耗。

innodb_stats_transient_sample_pages :

當(dāng)STATS_PERSISTENT未設(shè)置的時候,該選項控制表上索引頁的采樣數(shù)量。

以下選項控制MySQL如何自動收集統(tǒng)計信息。

innodb_stats_auto_recalc :

啟用該選項時,當(dāng)STATS_PERSISTENT表自上次重新統(tǒng)計后,有10%行記錄改變時,MySQL將自動收集統(tǒng)計信息。

innodb_stats_on_metadata :

當(dāng)你執(zhí)行SHOW TABLE STATUS或其他元數(shù)據(jù)語句?,或當(dāng)你查詢INFOMATION_SCHEMA.TABLES時,啟用該選項將更新統(tǒng)計信息。

默認(rèn)情況下,該選項是禁用的。

一、CHECK TABLE(檢查表)語句

檢查表結(jié)構(gòu)和內(nèi)容的完整性

驗證視圖定義

支持分區(qū)表

對使用InnoDB,CSV,MyISAM和ARCHIVE(存儲引擎)的表生效

CHECK TABLE選項:

FOR UPGRADE : 檢查當(dāng)前服務(wù)器的表是否工作?

QUICK : 不掃描不正確鏈接的行

如果CHECK TABLE發(fā)現(xiàn)使用InnoDB存儲引擎的表有錯誤:

服務(wù)器將會被關(guān)閉以防止錯誤傳播

MySQL將會記錄錯誤到錯誤日志

備注:

CHECK TABLE特點:

對于使用MyISAM存儲引擎的表,鍵值統(tǒng)計信息也會被更新。

也可以檢查視圖的問題,例如表中引用的視圖定義并不存在。

支持分區(qū)表。你也可以使用ALTER TABLE…CHECK PARTITION來檢查一個或多個分區(qū)。

對于FOR UPGRADE子句,服務(wù)器檢查每個表以確認(rèn)表結(jié)構(gòu)是否與當(dāng)前版本的MySQL兼容。數(shù)據(jù)類型的存儲格式更改或者它的排序順序改變都可能導(dǎo)致不兼容。如果這里可能存在不兼容,服務(wù)器將在表上運行一個完整的檢查,如果完整檢查成功,服務(wù)器將會在表的.frm文件上標(biāo)記當(dāng)前MySQL版本的數(shù)字。標(biāo)記.frm文件可以確保該表未來做(與文件標(biāo)記)同樣版本服務(wù)器檢查時快速檢查。

在InnoDB,MyISAM和ARCHIVE存儲引擎上可使用FOR UPGRADE。

使用InnoDB和MyISAM存儲引擎的表上可使用QUICK。MyISAM支持更多選項。

續(xù):五、CHECK TABLE(檢查表)語句

一個好的CHECK TABLE結(jié)果樣例:

備注:

如果CHECK TABLE的輸出表明表有問題,修復(fù)該表。

例如,你可以在修復(fù)表之前使用CHECK TABLE語句檢測硬件問題(例如內(nèi)存錯誤或磁盤扇區(qū)損壞)。Msg_text輸出列正常顯示為“OK”。如果得到的(結(jié)果)不是“OK”或“Table is already up to date”,對表執(zhí)行修復(fù)。

如果表被標(biāo)記為“corrupted”或“not closed properly”,但CHECK TABLE沒有在表上發(fā)現(xiàn)任何錯誤,將會標(biāo)記表為“OK”。

一、CHECKSUM TABLE(校驗表)語句

報告表的checksum

(該語句)用來驗證表備份,回滾或者其他操作之前或之后內(nèi)容是否一致

讀取整個表逐行進(jìn)行校驗

默認(rèn)選項EXTENDED提供這種行為

QUICK選項在MyISAM表上可用。

MyISAM 上默認(rèn)選項為設(shè)置CHECKSUM=1。

一條CHECKSUM TABLE語句的樣例:

備注:

CHECKSUM TABLE特點:

CHECKSUM TABLE需要SELECT表的權(quán)限

對于不存在的表,CHECKSUM TABLE返回“NULL”并且生成一條警告

如果使用了EXTENDED選項,逐行讀取整張表,并且計算checksum的值。

如果使用QUICK選項:

如果表的在線checksum可用將會給出報告,否則報告(顯示)為“NULL”,這操作將會很快速。

你創(chuàng)建表時為MyISAM表指定CHECKSUM=1將會啟用在線checksum。

如果既沒有指定QUICK又沒有指定EXTENDED,MySQL設(shè)置選項為EXTENDED,除非MyISAM表CHECKSUM=1。

checksum的值取決于表的行記錄的格式,如果行記錄的格式改變,checksum也會改變。

比如,“VARCHAR”存儲類型在MySQL4.1之后發(fā)生了改變,所以如果你升級一張4.1版本的表到更新的版本,包含VARCHAR列的表的checksum值將會改變。

續(xù):備注:

注意:

如果兩張表的checksums值不同,這可能說明它們可能在某些方面不同。

自從CHECKSUM TABLE使用哈希函數(shù)后,不能保證沒有沖突,這將會有極小的可能導(dǎo)致兩張不同的表得到相同的checksum值。

一、OPTIMIZE TABLE(優(yōu)化表)語句

整理表的碎片

重建表和釋放未使用的空間以整理碎片

優(yōu)化過程中會鎖定表

更新索引統(tǒng)計信息

在一張永久的,數(shù)據(jù)密集/完全填充?的表上是比較好的

在InnoDB,MyISAM和ARCHIVE表上生效

支持分區(qū)表

OPTIMIZE TABLE選項:

NO_WRITE_TO_BINLOG或LOCAL:不記錄二進(jìn)制日志

備注:

OPTIMIZE TABLE特點:

對刪除、更新和接合記錄等引起的分散的,非連續(xù)的數(shù)據(jù)中涉及到的未使用的可回收空間進(jìn)行碎片整理

需要表的SELECT和INSERT權(quán)限

支持分區(qū)表。你可以使用ALTER TABLE…OPTIMIZE PARTITION檢查一個或多個分區(qū)。

例如,你可以在表的行記錄數(shù)發(fā)生大幅度修改后,使用OPTIMIZE TABLE語句在InnoDB中重建一個FULLTEXT(全文)索引。

在InnoDB表中,OPTIMIZE TABLE和ALTER TABLE類似,將重建表以更新索引統(tǒng)計信息和群集索引中空閑的未使用的空間?

InnoDB和其他存儲引擎產(chǎn)生碎片的方式不同,所以你不需要經(jīng)常(在InnoDB上)使用OPTIMIZE TABLE。

在ARCHIVE存儲引擎上使用OPTIMIZE TABLE可以壓縮表。

使用SHOW TABLE STATUS語句查看ARCHIVE表行數(shù)產(chǎn)生的結(jié)果往往比較準(zhǔn)確。在執(zhí)行優(yōu)化操作時會產(chǎn)生一個.ARN文件。

續(xù):七、OPTIMIZE TABLE(優(yōu)化表)語句

以下OPTIMIZE TABLE語句優(yōu)化了兩張mysql數(shù)據(jù)庫中數(shù)據(jù)密集/完全填充?的表:

備注:

對于MyISAM表,在對表的大部分?jǐn)?shù)據(jù)刪除或者在可變長度行記錄(包含VARCHAR,VARBINARY,BLOB或TEXT列)做出修改后,使用OPTIMIZE TABLE語句。

被刪除的行都保存在一個鏈接列表中,并且隨后的INSERT(插入)操作重復(fù)使用舊的行的位置。

OPTIMIZE TABLE在完全填充且數(shù)據(jù)很少改變的表上有較好的優(yōu)化小故宮。當(dāng)數(shù)據(jù)變化比較多時優(yōu)化效果變差,并且你不得不經(jīng)常進(jìn)行優(yōu)化。

一、REPAIR TABLE(修復(fù)表)語句

修復(fù)可能已經(jīng)損壞的MyISAM或ARCHIVE表

不支持InnoDB

優(yōu)化過程中會鎖定表

支持分區(qū)表

REPAIR TABLE選項:

QUICK : 僅僅修復(fù)索引樹

EXTENDED : 逐行創(chuàng)建索引(替代以排序方式一次創(chuàng)建一個索引)

USE_FRM : 使用.FRM文件重新創(chuàng)建 .MYI 文件

NO_WRITE_TO_BINLOG或LOCAL:不記錄二進(jìn)制日志

備注:

REPAIR TABLE特點:

QUICK 選項:

僅僅嘗試對索引而非數(shù)據(jù)文件進(jìn)行修復(fù)。這個修復(fù)選項和myisamchk –recover –quick 接近。

EXTENDED選項:

MySQL逐行創(chuàng)建索引而非以排序方式一次創(chuàng)建一個索引。這種類型修復(fù)與myisamchk ???? –safe-recover接近。

USE_FRM選項不能在分區(qū)表上使用。

需要表上的SELECT和INSERT權(quán)限。

支持分區(qū)表。你可以使用ALTER TABLE…REPAIR PARTITION來檢查一個或多個分區(qū)。

最好在隊標(biāo)執(zhí)行修復(fù)操作之前對表進(jìn)行備份,在某些情況下,該操作可能會導(dǎo)致數(shù)據(jù)丟失。可能會引起(但是不限于)數(shù)據(jù)文件錯誤。

如果在執(zhí)行REPAIR TABLE操作期間服務(wù)器崩潰,你必須在服務(wù)器重啟之后執(zhí)行其他任何操作之前再次執(zhí)行REPAIR TABLE指令來避免進(jìn)一步的錯誤。

如果你需要頻繁的執(zhí)行REPAIR TABLE語句來修復(fù)某張故障表,嘗試去找出底層原因來預(yù)防類似錯誤并且消除使用REPAIR TABLE的需求。

續(xù):八、REPAIR TABLE(修復(fù)表)語句

一個REPAIR TABLE語句樣例:

一、mysqlcheck客戶端程序

mysqlcheck是一條檢查,修復(fù),分析和優(yōu)化表的客戶端命令行

可以更方便的執(zhí)行一條SQL語句

對InnoDB,MyISAM和ARCHIVE存儲引擎的表生效

三個檢查級別:

指定表

指定數(shù)據(jù)庫

指定所有數(shù)據(jù)庫

一些mysqlcheck維護(hù)選項:

–analyze : 執(zhí)行一條ANALYZE TABLE語句

–check : 執(zhí)行一條CHECK TABLE語句(該選項為默認(rèn)選項)

–optimize : 執(zhí)行一條OPTIMIZE TABLE語句

–repair : 執(zhí)行一條REPAIR TABLE語句

備注:

在某些情況下,mysqlcheck可以更方便直接地執(zhí)行SQL語句。

例如日,如果你將數(shù)據(jù)庫名作為參數(shù),mysqlcheck會對該數(shù)據(jù)庫中包含的所有表和問題語句都進(jìn)行處理?你不需要提供明確的表名作為參數(shù)。

同樣的,由于mysqlcheck是一個命令行程序,你可以方便地使用它在操作系統(tǒng)作業(yè)上執(zhí)行計劃管理。

續(xù):九、mysqlcheck客戶端程序

Oracle建議(為什么不是Mysql建議⊙﹏⊙)先不加選項執(zhí)行myqlcheck命令。如果需要修復(fù)再次執(zhí)行它。

一些mysqlcheck限制選項:

–repair –quick : 嘗試執(zhí)行一次快速修復(fù)

–repair : 常規(guī)修復(fù)(如果快速修復(fù)失敗)

–repair –force : 強制執(zhí)行一次修復(fù)

mysqlcheck樣例:

備注:

默認(rèn)情況下,mysqlcheck將第一個非選項參數(shù)解讀為數(shù)據(jù)庫名,并且檢查數(shù)據(jù)庫中所有表。如果在數(shù)據(jù)庫名參數(shù)后有其他參數(shù),將被作為表名,并且僅僅檢查這些表。

上圖展示的mysqlcheck 樣例說明了以下內(nèi)容:

第一條帶選項的指令僅僅檢查world_innodb數(shù)據(jù)庫中的City和Country表。

帶有–database(或 -B)選項的樣例中,mysqlcheck會將該參數(shù)作為數(shù)據(jù)庫名,并且檢查名為world_innodb和test數(shù)據(jù)庫中的表。

帶有–all-database(或 -A)選項時,mysqlcheck檢查所有數(shù)據(jù)庫中的所有表。

一、myisamchk 工具

myisamchk 是一個檢查MyISAM引擎表的非客戶端實用工具

myisamchk 和mysqlcheck工具有以下差異:

它可以啟用和禁用索引

它可以不通過服務(wù)器直接訪問表文件

這避免了并發(fā)表查詢

一些myisamchk 的選項:

–recover : 修復(fù)一張表

–safe-recover : 修復(fù)一張不能使用–recover選項修復(fù)的表?

myisamchk樣例:

備注:

從概念上看,myisamchk和mysqlcheck在功能上很相似。然而,myisamchk并不和MySQL服務(wù)器通信。相反的,它直接從文件訪問表。

在執(zhí)行表維護(hù)時使用myisamchk可以避免表的并發(fā)訪問:

確保在服務(wù)器工作時不能訪問表。保障的方法是鎖定表或者停止服務(wù)器。

在命令提示符中,將當(dāng)前目錄更改為數(shù)據(jù)庫中存放表的路徑。 這是具有和數(shù)據(jù)庫包含的將要被檢查的表有同樣名字的服務(wù)器的數(shù)據(jù)目錄的子目錄?(切換目錄的原因是可以更方便的查看表文件)

使用選項調(diào)用myismchk指明將要執(zhí)行的操作,跟在myismchk指令后的參數(shù)指定將要被操作的表名。每個參數(shù)都可以是表名或表上索引文件的名字。索引文件名和表名一致,并添加.MYI后綴。因此,一張表可以被寫作table_name(表名)或MYI(該表的索引文件名)。

重啟服務(wù)器。

注意:

先使用–recover,inwei–safe-recover會慢許多。

一、mysqlcheck和myisamchk的選項

控制維護(hù)執(zhí)行類型的選項:

備注:

myisamchk和mysqlcheck都有多個控制表維護(hù)操作類型的選項。

上圖的表中列舉了一些常用的選項,其中大部分可以在兩個程序(mysqlcheck和myisamchk)中使用。除了這種情況外,(其余情況)將在相關(guān)選項說明中指出。?

–analyze :

分析表中鍵值分布。這可以提高基于索引查找的查詢語句速度的性能。

–auto-repair :

如果檢查操作發(fā)現(xiàn)問題,自動修復(fù)表。

–check 或 -c :

檢查表的問題。當(dāng)沒有指定其他選項時,該選項為默認(rèn)動作。

–check-only-changed 或 -c :

跳過表查詢,除非表自從上次檢查后發(fā)生了改變或者沒有正確關(guān)閉。后者可能在表打開時服務(wù)器崩潰的情況下發(fā)生。

–fast 或 -F :

跳過表檢查除非表沒有被正確關(guān)閉。

–extended,–extend-check,或 -e :

運行擴展的表檢查。

對于mysqlcheck,當(dāng)該選項和repair(修復(fù))選項一起使用時,將會比單獨使用repair?????? (修復(fù))選項時進(jìn)行更全面徹底的修復(fù)。就是說,使用–repair –extended選項比使用???? –repair選項執(zhí)行更徹底的修復(fù)操作。

續(xù):十一、mysqlcheck和myisamchk的選項

–extended,–extend-check,或 -e :

運行中級表檢查

–quick或-q :

對mysqlcheck指令,使用–quick選項不使用repair(修復(fù))選項,僅僅只有索引文件被檢查,而不檢查數(shù)據(jù)文件。對于兩個程序(mysqlcheck和myisamchk),使用–quick選項和repair(修復(fù))選項,僅僅只有索引文件被檢查,而不檢查數(shù)據(jù)文件。

–repair,–recover,或 -r :

運行一個表修復(fù)操作。

一、InnoDB表維護(hù)

InnoDB引擎表在故障發(fā)生后自動修復(fù)

使用CHECK TABLE或者一個客戶端程序找出不一致、不兼容和其他問題。

使用mysqldump語句通過導(dǎo)出還原一張表:

然后刪除它并且從導(dǎo)出的文件重新創(chuàng)建表。

為了在(服務(wù)器)崩潰后恢復(fù)表,使用–innodb_force_recovery選項啟動服務(wù)器,或者從一個備份復(fù)原表。

使用ALTER TABLE重建表和釋放在群集索引中未使用的空間以進(jìn)行優(yōu)化

備注:

如果表檢查顯示有問題,使用mysqldump指令通過導(dǎo)出還原表到一致性狀態(tài),刪除它,然后再從導(dǎo)出的文件重建表。

萬一發(fā)生數(shù)據(jù)庫運行的主機或者服務(wù)器崩潰,使用InnoDB存儲引擎的表可能額處于不一致的狀態(tài)。作為(服務(wù)器)啟動的一個步驟,InnoDB存儲引擎將執(zhí)行自動恢復(fù)。

極少見的情況下,可能服務(wù)器由于錯誤的自動恢復(fù)不能啟動。如果遇到這樣的情況,可以嘗試以下的過程:

重啟服務(wù)器時,將–innodb_force_recovery選項值設(shè)置為1 – 6。

這個值表明避免崩潰警告的增進(jìn)級別和恢復(fù)表時寬限表可能不一致的增進(jìn)級別。

建議值從4開始,可以防止insert buffer(插入緩沖區(qū))合并操作發(fā)生。

當(dāng)服務(wù)器以參數(shù)–innodb_force_recovery選項設(shè)置為非零值啟動時,InnoDB阻止INSERT,UPDATE或DELETE操作。因此,當(dāng)該選項生效時你需要導(dǎo)出InnoDB表,然后刪除表。然后,再去掉–innodb_force_recovery選項啟動服務(wù)器,當(dāng)服務(wù)器啟動后,從導(dǎo)出的文件恢復(fù)表。

如果前面描述的步驟都失敗了,從以前的備份還原表。

一、MyISAM表維護(hù)

使用CHECK TABLE…MEDIUM(該選項為默認(rèn)選項)

使用客戶端程序運行myisamchk:

表損壞使用通常發(fā)生在索引中,標(biāo)記這些檢查將會很有用。

當(dāng)表損壞時,該工具修復(fù)表。

設(shè)置服務(wù)器運行檢查并且自動修復(fù)表。

使用 –myisam-recover選項啟用自動修復(fù)

服務(wù)器在啟動后第一次訪問是檢查每一張MyISAM表,以確保上一次是正常關(guān)閉。

根據(jù)“config”文件強制恢復(fù)MyISAM表。

備注:

默認(rèn)的CHECK TABLE(檢查表)檢查類型是為動態(tài)與靜態(tài)格式的表執(zhí)行MEDIUM(中級)檢查。

如果一個靜態(tài)格式表類型設(shè)置為CHANGED或FAST,則默認(rèn)值為QUICK。

對于CHANGED和FAST值將會跳過行掃描,因為這些行很少會出現(xiàn)損壞。

如果表被標(biāo)記為“corrupted”或“not closed ”,CHECK TABLE將修改表。

如果沒有發(fā)現(xiàn)表上有任何問題,將會被標(biāo)記為“up to date”。

如果表有損壞,問題多數(shù)出現(xiàn)在索引而不是數(shù)據(jù)上。

選項 –myisam-recover可以包含以下一個或多個以逗號分割的列表:

DEFAULT : 默認(rèn)檢查

BACKUP : 告訴服務(wù)器對必須改變的表進(jìn)行備份

FORCE : 即使丟失超過一行數(shù)據(jù),仍然執(zhí)行表恢復(fù)

QUICK :

執(zhí)行一次快速恢復(fù)。恢復(fù)跳過刪除或更新的行沒有間隔(known as“holes”?)的表。

續(xù):備注:

例如,告知服務(wù)器對發(fā)現(xiàn)有問題的MyISAM表進(jìn)行強制恢復(fù),但要對表改變的部分做一個備份,添加以下內(nèi)容到你的選項文件:

[mysqld]

Myisam-recover=FORCE,BACKUP

一、內(nèi)存表維護(hù)

當(dāng)使用一條..WHERE語句刪除行記錄時,MEMORY(內(nèi)存)表不釋放內(nèi)存。

為了釋放內(nèi)存,你必須執(zhí)行一條空ALTER TABLE操作。

為了查看MEMORY(內(nèi)存)表的存儲要求,執(zhí)行SHOW TABLE STATUS并且添加Data_length和Index_length列。

如果刪除行沒有重復(fù)值,Data_free列為非零。

備注:

以下是一條SHOW TABLE STATUS語句在world_innodb數(shù)據(jù)庫City表副本CityCopy表上執(zhí)行的輸出結(jié)果。

CityCopy表使用MEMORY存儲引擎:

mysql> SHOW TABLE STATUS LIKE ‘CityCopy’\G

*************************** 1. row ***************************

Name: CityCopy

Engine: MEMORY

Version: 10

Row_format: Fixed

Rows: 4079

Avg_row_length: 67

Data_length: 383072

Max_data_length: 10808373

Index_length: 253984

Data_free: 0

…:

1 row in set (0.00 sec)

The total memory the CityCopy table occupies can be calculated as follows:

Data_length (383072) + Index_length (253984) = 637056 bytes

二、ARCHIVE表維護(hù)

ARCHIVE壓縮問題:

數(shù)據(jù)插入時表的行記錄被壓縮。

進(jìn)行檢索時?,行記錄可以根據(jù)需要不壓縮、

一些SELECT語句可能導(dǎo)致壓縮惡化?

使用OPTIMIZE TABLE或REPAIR TABLE可以實現(xiàn)更好的壓縮。

OPTIMIZE TABLE在表沒有被訪問(讀或?qū)?時生效。

三、總結(jié)

在本課程中,你已經(jīng)學(xué)習(xí)到如何:

認(rèn)識表維護(hù)操作的類型

執(zhí)行SQL語句維護(hù)表

使用客戶端和工具程序維護(hù)表

根據(jù)具體的存儲引擎維護(hù)表

實踐13-1概覽:

測驗?–?維護(hù)表

在本測驗中,你需要回答關(guān)于MySQL表維護(hù)的問題。

實踐13-2概覽:

使用維護(hù)表的SQL語句

在本測驗中,你使用SQL語句檢查和優(yōu)化表。

實踐13-3概覽:

使用表維護(hù)工具

在本測驗中,你使用MySQL命令行工具檢查并修復(fù)一張表。

總結(jié)

以上是生活随笔為你收集整理的mysql数据库管理维护_(转)Mysql数据库管理 表的维护的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。