日韩欧乱色一区二区三区在线_久久―日本道色综合久久_欧美日本一区二区_网曝91综合精品门事件在线

千鋒教育-做有情懷、有良心、有品質(zhì)的職業(yè)教育機(jī)構(gòu)

手機(jī)站
千鋒教育

千鋒學(xué)習(xí)站 | 隨時隨地免費(fèi)學(xué)

千鋒教育

掃一掃進(jìn)入千鋒手機(jī)站

領(lǐng)取全套視頻
千鋒教育

關(guān)注千鋒學(xué)習(xí)站小程序
隨時隨地免費(fèi)學(xué)習(xí)課程

當(dāng)前位置:首頁  >  技術(shù)干貨  > mysql update主鍵更新很慢會是什么原因?

mysql update主鍵更新很慢會是什么原因?

來源:千鋒教育
發(fā)布人:xqq
時間: 2023-10-13 18:30:50 1697193050

一、mysql update主鍵更新很慢的原因

Analyze Table

MySQL 的Optimizer(優(yōu)化元件)在優(yōu)化SQL語句時,首先需要收集一些相關(guān)信息,其中就包括表的cardinality(可以翻譯為“散列程度”),它表示某個索引對應(yīng)的列包含多少個不同的值——如果cardinality大大少于數(shù)據(jù)的實際散列程度,那么索引就基本失效了。

我們可以使用SHOW INDEX語句來查看索引的散列程度:

SHOW INDEX FROM PLAYERS;

TABLE KEY_NAME COLUMN_NAME CARDINALITY

PLAYERS PRIMARY PLAYERNO 14

因為此時PLAYER表中不同的PLAYERNO數(shù)量遠(yuǎn)遠(yuǎn)多于14,索引基本失效。

下面我們通過Analyze Table語句來修復(fù)索引:

ANALYZE TABLE PLAYERS;

SHOW INDEX FROM PLAYERS;

結(jié)果是:

TABLE KEY_NAME COLUMN_NAME CARDINALITY

PLAYERS PRIMARY PLAYERNO 1000

此時索引已經(jīng)修復(fù),查詢效率大大提高。

需要注意的是,如果開啟了binlog,那么Analyze Table的結(jié)果也會寫入binlog,我們可以在analyze和table之間添加關(guān)鍵字local取消寫入。

Checksum Table

數(shù)據(jù)在傳輸時,可能會發(fā)生變化,也有可能因為其它原因損壞,為了保證數(shù)據(jù)的一致,我們可以計算checksum(校驗值)。

使用MyISAM引擎的表會把checksum存儲起來,稱為live checksum,當(dāng)數(shù)據(jù)發(fā)生變化時,checksum會相應(yīng)變化。

在執(zhí)行Checksum Table時,可以在最后指定選項qiuck或是extended;quick表示返回存儲的checksum值,而extended會重新計算checksum,如果沒有指定選項,則默認(rèn)使用extended。

Optimize Table

經(jīng)常更新數(shù)據(jù)的磁盤需要整理碎片,數(shù)據(jù)庫也是這樣,Optimize Table語句對MyISAM和InnoDB類型的表都有效。

如果表經(jīng)常更新,就應(yīng)當(dāng)定期運(yùn)行Optimize Table語句,保證效率。

與Analyze Table一樣,Optimize Table也可以使用local來取消寫入binlog。

Check Table

數(shù)據(jù)庫經(jīng)常可能遇到錯誤,譬如數(shù)據(jù)寫入磁盤時發(fā)生錯誤,或是索引沒有同步更新,或是數(shù)據(jù)庫未關(guān)閉MySQL就停止了。

遇到這些情況,數(shù)據(jù)就可能發(fā)生錯誤:

Incorrect key file for table: ’ ‘. Try to repair it.

此時,我們可以使用Check Table語句來檢查表及其對應(yīng)的索引。

譬如我們運(yùn)行

CHECK TABLE PLAYERS;

結(jié)果是

TABLE OP MSG_TYPE MSG_TEXT

TENNIS.PLAYERS check status OK

MySQL會保存表最近一次檢查的時間,每次運(yùn)行check table都會存儲這些信息:

執(zhí)行

SELECT TABLE_NAME, CHECK_TIME

FROM INFORMATION_SCHEMA.TABLES

WHERE TABLE_NAME = ‘PLAYERS’

AND TABLE_SCHEMA = ‘TENNIS’; /TENNIS是數(shù)據(jù)庫名/

結(jié)果是

TABLE_NAME CHECK_TIME

PLAYERS 2006-08-21 16:44:25

Check Table還可以指定其它選項:

UPGRADE:用來測試在更早版本的MySQL中建立的表是否與當(dāng)前版本兼容。

QUICK:速度非常快的選項,在檢查各列的數(shù)據(jù)時,不會檢查鏈接(link)的正確與否,如果沒有遇到什么問題,可以使用這個選項。

FAST:只檢查表是否正常關(guān)閉,如果在系統(tǒng)掉電之后沒有遇到嚴(yán)重問題,可以使用這個選項。

CHANGED:只檢查上次檢查時間之后更新的數(shù)據(jù)。

MEDIUM:默認(rèn)的選項,會檢查索引文件和數(shù)據(jù)文件之間的鏈接正確性。

EXTENDED:最慢的選項,會進(jìn)行全面的檢查。

Repair Table

用于修復(fù)表,只對MyISAM和ARCHIVE類型的表有效。

這條語句同樣可以指定選項:

QUICK:非常快的選項,只修復(fù)索引樹。

EXTENDED:最慢的選項,需要逐行重建索引。

USE_FRM:只有當(dāng)MYI文件丟失時才使用這個選項,全面重建整個索引。

與Analyze Table一樣,Repair Table也可以使用local來取消寫入binlog。

延伸閱讀:

二、Navicat是什么

Navicat是一套快速、可靠和全面的數(shù)據(jù)庫管理工具,專門用于簡化數(shù)據(jù)庫管理和降低管理成本。Navicat圖形界面直觀,提供簡便的管理方法,設(shè)計和操作MySQL、MariaDB、SQL Server、Oracle、PostgreSQL和SQLite的數(shù)據(jù)。

Navicat提供一個直觀和設(shè)計完善的用戶界面,用于創(chuàng)建、修改和管理資料庫的所有對象,例如表、視圖、函數(shù)或過程、索引、觸發(fā)器和序列。我們的表設(shè)計器幫助用戶創(chuàng)建和修改數(shù)據(jù)庫的表,讓設(shè)置高級選項,如關(guān)系、限制、觸發(fā)器和更多。

使用Navicat瀏覽和修改數(shù)據(jù),插入、編輯、刪除數(shù)據(jù)或復(fù)制和粘貼記錄到數(shù)據(jù)表形式的數(shù)據(jù)編輯器,Navicat將運(yùn)行相應(yīng)的命令(例如INSERT或UPDATE),免除寫復(fù)雜的SQL。廣泛的數(shù)據(jù)編輯工具令編輯工作更為方便,例如外鍵查找、set/enum選擇器和記錄篩選。

聲明:本站稿件版權(quán)均屬千鋒教育所有,未經(jīng)許可不得擅自轉(zhuǎn)載。
10年以上業(yè)內(nèi)強(qiáng)師集結(jié),手把手帶你蛻變精英
請您保持通訊暢通,專屬學(xué)習(xí)老師24小時內(nèi)將與您1V1溝通
免費(fèi)領(lǐng)取
今日已有369人領(lǐng)取成功
劉同學(xué) 138****2860 剛剛成功領(lǐng)取
王同學(xué) 131****2015 剛剛成功領(lǐng)取
張同學(xué) 133****4652 剛剛成功領(lǐng)取
李同學(xué) 135****8607 剛剛成功領(lǐng)取
楊同學(xué) 132****5667 剛剛成功領(lǐng)取
岳同學(xué) 134****6652 剛剛成功領(lǐng)取
梁同學(xué) 157****2950 剛剛成功領(lǐng)取
劉同學(xué) 189****1015 剛剛成功領(lǐng)取
張同學(xué) 155****4678 剛剛成功領(lǐng)取
鄒同學(xué) 139****2907 剛剛成功領(lǐng)取
董同學(xué) 138****2867 剛剛成功領(lǐng)取
周同學(xué) 136****3602 剛剛成功領(lǐng)取
相關(guān)推薦HOT
teradata與greenplum的區(qū)別?

一、teradata與greenplum的區(qū)別 1、架構(gòu)不同:Teradata是一種對稱多處理(Symmetric Multiprocessing,SMP)架構(gòu),而Greenplum是一種以共享無阻塞詳情>>

2023-10-13 20:07:18
arcgis的mdb數(shù)據(jù)庫怎么轉(zhuǎn)成db數(shù)據(jù)庫?

一、arcgis的mdb數(shù)據(jù)庫轉(zhuǎn)成db數(shù)據(jù)庫的方法1、導(dǎo)出mdb數(shù)據(jù)庫中的數(shù)據(jù)表使用ArcGIS中的Export功能將MDB數(shù)據(jù)庫中的數(shù)據(jù)表導(dǎo)出為CSV或Excel格式的文...詳情>>

2023-10-13 20:04:31
怎么分析判斷一個網(wǎng)站的后臺數(shù)據(jù)庫管理系統(tǒng)是什么?

一、分析判斷一個網(wǎng)站的后臺數(shù)據(jù)庫管理系統(tǒng)是什么的方法1、根據(jù)網(wǎng)頁編程語言去判斷結(jié)合網(wǎng)頁編程語言和后臺數(shù)據(jù)庫系統(tǒng)的常見搭配可以判斷出該網(wǎng)...詳情>>

2023-10-13 20:00:20
MYSQL的幻讀和我們平常說的幻讀有什么區(qū)別?

一、MYSQL的幻讀和我們平常說的幻讀有什么區(qū)別平常說的幻讀:事務(wù)1查詢id詳情>>

2023-10-13 19:58:38
怎么確保mysql數(shù)據(jù)庫主從數(shù)據(jù)一定是一樣的?

一、確保mysql數(shù)據(jù)庫主從數(shù)據(jù)一定是一樣的方法1、確保同步狀態(tài)正常主從數(shù)據(jù)庫的同步狀態(tài)正常是保證主從數(shù)據(jù)一致性的前提,需要定期監(jiān)控主從同步...詳情>>

2023-10-13 19:55:29
快速通道
主站蜘蛛池模板: 共和县| 勐海县| 化州市| 阳江市| 泽库县| 临泉县| 北碚区| 株洲市| 神农架林区| 武清区| 嘉义市| 防城港市| 河间市| 宁国市| 扶绥县| 平顶山市| 铅山县| 靖州| 玉门市| 新民市| 理塘县| 读书| 嫩江县| 卢氏县| 卓尼县| 宝兴县| 乌鲁木齐县| 荔波县| 遂溪县| 永吉县| 施秉县| 双城市| 额尔古纳市| 观塘区| 博罗县| 中宁县| 侯马市| 丹东市| 多伦县| 隆回县| 洪洞县|