日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

MySQL 索引和數據表該如何維護

瀏覽:8日期:2023-10-03 09:40:12
目錄查找和修復數據表沖突更新索引統計查找和修復數據表沖突

數據表最糟糕的事情就是發生沖突。使用MyISAM存儲引擎時,通常因為崩潰導致沖突。然而,當存在硬件故障、MySQL內部Bug或操作系統Bug時,所有的存儲引擎都可能遭受索引沖突。

沖突的索引可能導致查詢返回錯誤的結果,在沒有重復值時的重復索引錯誤增加,甚至可能導致全表掃描或崩潰。如果你遇到過偶發的事件,例如一個你認為不會發生的錯誤,這個時候運行CHECK TABLE命令去檢測數據表是否有沖突(注意有些數據庫引擎不支持這個命令,有些則支持多種選項參數去指定如何檢測表)。通常,CHECK TABLE命令會捕獲大部分的數據表和索引錯誤。

你可以通過REPAIR TABLE命令修復數據表錯誤,但是也不是全部存儲引擎都支持這個命令。這個時候你需要執行一個“沒有操作”的ALTER語句,例如將一個數據表的引擎修改為和當前的引擎一樣,例如可以對InnoDB的數據表執行下面的語句:

ALTER TABLE innodb_tb1 ENGINE=INNODB;

相應地,你也可以使用一個存儲引擎指定的離線修復工具,例如myisamchk,或者導出數據再重新導入。然而,如果沖突發生在系統區,或者在數據表的數據行區域,而不是索引的話,你可能無法使用這些辦法。這種情況下,你可能需要從你的備份中恢復數據或從沖突的文件中恢復數據。

如果你在InnoDB中也遇到了沖突,這會是極其嚴重的錯誤,你需要使用正確的方法去分析問題。InnoDB通常不會發生沖突。它的設計對沖突處理很健壯。沖突會是硬件故障(如內存區錯誤或磁盤錯誤),DBA的操作錯誤(如在MySQL環境外操作了數據庫文件)或InnoDB自身的Bug (這種概率很低)的表現。通常的一個原因類似視圖使用rsync工具創建備份的錯誤。這時沒有可執行的查詢——由于這會引起InnoDB的數據沖突,而你認為這會避免。如果你通過一個有問題的查詢引起了InnoDB的數據沖突,那這并不是你的錯誤,這是InnoDB的Bug。

如果真的遇到了數據沖突,最重要的事情是搞清楚引起沖突的原因,在這之前不要簡單地修復數據,也許這個沖突會自動消失。你可以通過innodb_force_recovery參數將InnoDB修改為強制恢復模式來修復數據(可以查閱MySQL的操作手冊)。你也可以使用開源的Percona InnoDB數據恢復工具(www.percona.com/software/my…)從損壞的數據文件中提取數據。

更新索引統計

MySQL查詢優化器在決定如何使用索引前,會調用兩個API獲取索引值的分布。第一個是records_in_range方法,該方法接收一個范圍參數,然后返回該范圍的結果數量。對于MyISAM引擎來說返回結果是準確的,但是對于InnoDB來說是估計值。

第二個API是info方法,該方法返回多種類型的數據,包括索引候選者(即每個索引對應的記錄數量估計值)。

當存儲引擎給查詢優化器提供不太準確的數據行數信息,或查詢計劃過于復雜而無法估計準確的行數時,優化器使用索引統計去估計數據行數。MySQL優化器是基于查詢代價做出決策的,最主要的代價準則就是這次查詢會查找的數據量。如果索引統計從來沒有生成,或者是過期了,優化器可能會做出錯誤的決定。解決的方案是運行ANALYZE TABLE命令,該命令會重建索引統計。

每個存儲引擎實現索引統計的方式不同,因此你運行ANALUZE TABLE命令的頻率也會不同,運行該命令的代價也不同,典型的存儲引擎對索引統計處理方式如下:

Memory引擎不存儲索引統計。 MyISAM在磁盤存儲索引統計,并且ANALYZE TABLE在計算候選數據行的時候使用全索引掃描。整個表在這個過程中會被鎖定。 InnoDB在MySQL 5.5版本中不在磁盤存儲索引統計,而是通過隨機的索引采樣實現并且將結果存在內存中。

可以通過SHOW INDEX FROM命令檢查索引的候選者。例如:

MySQL 索引和數據表該如何維護

這個命令給了很多索引相關的信息,可以查閱MySQL的手冊了解具體細節。這里需要特別關注的是Cardinality列。該列展示了存儲引擎估計的索引對應了多少個不同的值。在MySQL 5.0及更新的版本中,也可以通過INFORMATION_SCHEMA.STATISTICS表中獲取這些信息,這十分方便。例如,你可以根據INFORMATION_SCHEMA查詢去找到那些低篩選性的索引。但是注意,對于數據量龐大的服務器,這些中間表可能會導致服務器的負荷大量增加。

InnoDB的統計值得深入研究。統計的結果是通過索引數據頁的隨機采樣計算得到的,這是假設剩余未被采樣到的數據也是類似的分布。在舊的InnoDB版本中,這個采樣的頁數是8,但最新版本的可以通過innodb_stats_sample_pages變量調整。將這個值設置為大于8有助于生成更具代表性的索引統計,尤其是對于大的數據表,但所需要花的代價也會不同。

InnoDB在數據表第一次打開,運行ANALUZE TABLE和數據表存儲大小顯著改變時(1/16的變化量或20億行的插入)會計算索引統計。

INFORMATION_SCHEMA表的某些查詢,運行SHOW TABLE STATUS,執行SHOW INDEX查詢或MySQL命令行客戶端啟用了自動完成設置,InnoDB也會計算索引統計。這實際會對大數據量,或I/O速度很慢的服務器造成嚴重的問題。客戶端程序或監控工具導致發生重新采樣會導致很多鎖和加重服務器負擔,也會影響終端用戶的啟動時間。由于SHOW INDEX命令會更新索引統計,而如果你不更改的話你無法觀測到索引統計。你可以通過禁用innodb_stats_on_metadata(默認是關閉的)選項去避免這些問題。下面的命令可以查出InnoDB索引統計相關的系統變量。

SHOW GLOBAL VARIABLES WHERE Variable_name like ’innodb_stats%’

如果使用的是包含了替換InnoDB的Percona XtraDB存儲引擎的Percona服務器,你可以做進一步的配置。innodb_stats_auto_update選項可以讓你禁止自動采樣,可以有效凍結自動統計計算,除非你手動運行ANALYZE TABLE。這可以讓你擺脫不穩定的查詢。這個特性是基于那些大型部署系統客戶的要求添加的。

為追求更高的查詢計劃穩定性和更快的系統啟動速度,你可以使用系統級的數據表存儲索引統計。這種方式在系統重啟或InnoDB第一次啟動打開數據表時不需要重新計算索引統計。這個特性在Percona 5.1版本已經得到支持,并且在標準的MySQL 5.6版本已經得到支持。Percona服務器這個特性是通過innodb_use_sys_stats_table選項啟用的。在MySQL 5.6版本后,是通過innodb_stats_persistent選項控制的,默認是ON。同時,還有一個變量控制單表的,innodb_stats_auto_recalc變量默認為ON,會在數據表變化量超過10%時重新統計該表的索引統計(手冊可以參考:dev.mysql.com/doc/refman/…)。

如果你沒有配置自動更新索引統計,你需要定期使用ANALYZE TABLE命令來更新索引統計,除非你知道不更新不會導致糟糕的查詢計劃。

以上就是MySQL 索引和數據表該如何維護的詳細內容,更多關于MySQL 索引和數據表維護的資料請關注好吧啦網其它相關文章!

標簽: MySQL 數據庫
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
日韩午夜视频在线| 欧美99久久| 欧美精品高清| 激情五月综合| 中文字幕在线视频网站| 久久久久久久久久久妇女| 国产精品腿扒开做爽爽爽挤奶网站| 亚洲少妇在线| 亚洲成人日韩| 国产模特精品视频久久久久| 亚洲一区免费| 午夜在线视频观看日韩17c| 日本亚洲最大的色成网站www| 日韩区一区二| 国产精品片aa在线观看| 久久精品国产在热久久| 成人av三级| 深夜福利一区| 国产欧洲在线| 99视频精品全国免费| 欧美日韩国产在线观看网站| 蜜臀av性久久久久蜜臀aⅴ流畅| 国产一区二区三区四区| 国产手机视频一区二区| 免费视频久久| 欧美伊人影院| 中文国产一区| 日韩欧美中文字幕电影| 国产精品网址| 日韩免费看片| 午夜一级久久| 国产精品主播| 性欧美videohd高精| 91久久中文| 高清一区二区三区av| 亚洲国产成人二区| 亚洲激情黄色| 国产精品欧美在线观看| 欧美羞羞视频| 蜜桃久久久久久| 国产一区二区三区四区五区 | 国产美女精品视频免费播放软件| 久久伊人国产| 青青草视频一区| 国产一区二区三区四区二区| 欧美精品激情| 麻豆精品少妇| 视频在线观看一区| 国产中文欧美日韩在线| 一本一道久久a久久精品蜜桃| 91精品日本| 久久国产亚洲| 日本午夜精品视频在线观看| 精品日韩一区| 国产精品99一区二区| 亚洲综合中文| 视频在线在亚洲| 老司机免费视频一区二区三区| 亚洲香蕉网站| 欧美aⅴ一区二区三区视频| 免费国产自久久久久三四区久久| 国产精品一区二区精品| 欧美.日韩.国产.一区.二区| 国产美女久久| 久久国产99| 日韩电影免费网址| 青青草国产成人99久久| 影视先锋久久| 麻豆国产精品| 老司机精品久久| sm捆绑调教国产免费网站在线观看 | 日本久久黄色| 精品中文字幕一区二区三区| 蜜臀av免费一区二区三区| 国产精品久久亚洲不卡| 国产欧美另类| 免费久久久久久久久| 久久精品国产亚洲一区二区三区| 美国欧美日韩国产在线播放| 国产成人黄色| 久久精品 人人爱| 国产精品蜜月aⅴ在线| 99热精品久久| 91综合网人人| 国产精品久久久久久久久久齐齐 | 日本久久二区| 欧美日韩免费观看一区=区三区| 精品视频高潮| 日韩av在线播放中文字幕| 99视频精品全国免费| 美女免费视频一区| 欧美一级网站| 亚洲精品福利| 爽爽淫人综合网网站| 久久国产中文字幕| 欧美黄色网页| 国产一区二区三区黄网站 | 一区二区三区四区日韩| 亚洲福利国产| 日韩高清成人| sm久久捆绑调教精品一区| 国产精品丝袜在线播放| 日本亚洲不卡| 免费在线观看成人| 亚洲精品电影| 久久久五月天| 99久久久国产精品美女| 欧美成人基地 | 久久久久伊人| 在线观看精品| 成人台湾亚洲精品一区二区| 国产精品videossex久久发布| 日韩精品成人| 欧美一区自拍| 欧美日一区二区三区在线观看国产免| 日韩中文字幕区一区有砖一区| 国产综合精品| 欧美a级一区| 午夜欧美视频| 久久亚洲图片| 亚洲视频国产精品| 中文无码久久精品| 日韩专区视频网站| 日本视频中文字幕一区二区三区| 奇米亚洲欧美| 久久国产视频网| 欧美激情福利| 成人午夜毛片| 日韩在线欧美| 免费久久精品| 久久不射中文字幕| 婷婷久久免费视频| 日韩福利视频导航| 国产高清日韩| 色乱码一区二区三区网站| 亚洲欧洲美洲av| 激情婷婷综合| 久久亚洲二区| 欧美伊人影院| 国产一区二区亚洲| 热三久草你在线| 亚洲国产日韩欧美在线| 老司机久久99久久精品播放免费| 最新国产精品| 久久福利在线| 日韩专区精品| 午夜日本精品| 日本久久二区| 国产一区二区三区亚洲综合| 日韩成人亚洲| 免费不卡在线视频| 欧美日韩夜夜| 国产精品不卡| 国产精品88久久久久久| 亚州精品视频| 国产精品嫩草影院在线看| 国产成人黄色| 亚洲一区中文| 国产亚洲精品精品国产亚洲综合| 91青青国产在线观看精品| 国产手机视频一区二区| 欧美日韩一区二区三区不卡视频 | 野花国产精品入口| 日本少妇一区二区| 国产精品专区免费| 久久都是精品| 国产精品成人一区二区网站软件| 精品国产亚洲一区二区三区在线| 99精品视频在线| 日韩二区三区四区| 日韩免费福利视频| 亚洲一区欧美| 国产一区二区三区成人欧美日韩在线观看 | 成人久久一区| 日韩精品亚洲专区在线观看| 日韩av二区| 日韩在线播放一区二区| 欧美精品成人| 国产精品美女久久久浪潮软件| 日本成人在线网站| 婷婷综合六月| 欧美精品观看| 亚洲国产日韩欧美在线| 国产精品一站二站| 免费精品国产| 久久99青青| 日韩精品一级中文字幕精品视频免费观看 | 国产一区2区| 男人的天堂久久精品| 精品国内亚洲2022精品成人| 久久亚洲一区| 高潮一区二区| 日本麻豆一区二区三区视频| 久久激情婷婷| 国产欧美一区二区三区国产幕精品| 亚洲二区免费| 美女国产一区二区三区| 久热综合在线亚洲精品| 乱一区二区av| 日韩精品免费视频人成|