国产成人精品18p,天天干成人网,无码专区狠狠躁天天躁,美女脱精光隐私扒开免费观看

MySQL慢SQL語(yǔ)句常見(jiàn)原因是什么

發(fā)布時(shí)間:2021-07-11 22:08 來(lái)源:億速云 閱讀:0 作者:小新 欄目: Mysql 歡迎投稿:712375056

這篇文章主要為大家展示了“慢SQL語(yǔ)句常見(jiàn)原因是什么”,內容簡(jiǎn)而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習一下“MySQL慢SQL語(yǔ)句常見(jiàn)原因是什么”這篇文章吧。

1. 無(wú)索引、索引失效導致慢查詢(xún)

如果在一張幾千萬(wàn)數據的表中以一個(gè)沒(méi)有索引的列作為查詢(xún)條件,大部分情況下查詢(xún)會(huì )非常耗時(shí),這種查詢(xún)毫無(wú)疑問(wèn)是一個(gè)慢SQL查詢(xún)。所以對于大數據量的查詢(xún),需要建立適合的索引來(lái)優(yōu)化查詢(xún)。

雖然很多時(shí)候建立了索引,但在一些特定的場(chǎng)景下,索引還有可能會(huì )失效,所以索引失效也是導致慢查詢(xún)的主要原因之一。

2. 鎖等待

常用的存儲引擎有 InnoDB 和 MyISAM,前者支持行鎖和表鎖,后者只支持表鎖。

如果數據庫操作是基于表鎖實(shí)現的,試想下,如果一張訂單表在更新時(shí),需要鎖住整張表,那么其它大量數據庫操作(包括查詢(xún))都將處于等待狀態(tài),這將嚴重影響到系統的并發(fā)性能。

這時(shí),InnoDB 存儲引擎支持的行鎖更適合高并發(fā)場(chǎng)景。但在使用 InnoDB 存儲引擎時(shí),要特別注意行鎖升級為表鎖的可能。在批量更新操作時(shí),行鎖就很可能會(huì )升級為表鎖。

MySQL認為如果對一張表使用大量行鎖,會(huì )導致事務(wù)執行效率下降,從而可能造成其它事務(wù)長(cháng)時(shí)間鎖等待和更多的鎖沖突問(wèn)題發(fā)生,致使性能?chē)乐叵陆?,所以MySQL會(huì )將行鎖升級為表鎖。還有,行鎖是基于索引加的鎖,如果在更新操作時(shí),條件索引失效,那么行鎖也會(huì )升級為表鎖。

因此,基于表鎖的數據庫操作,會(huì )導致SQL阻塞等待,從而影響執行速度。在一些更新操作(insert\update\delete)大于或等于讀操作的情況下,MySQL不建議使用MyISAM存儲引擎。

除了鎖升級之外,行鎖相對表鎖來(lái)說(shuō),雖然粒度更細,并發(fā)能力提升了,但也帶來(lái)了新的問(wèn)題,那就是死鎖。因此,在使用行鎖時(shí),要注意避免死鎖。

3. 不恰當的SQL語(yǔ)句

使用不恰當的SQL語(yǔ)句也是慢SQL最常見(jiàn)的誘因之一。例如,習慣使用<SELECT *>,<SELECT COUNT(*)> SQL語(yǔ)句,在大數據表中使用<LIMIT M,N>分頁(yè)查詢(xún),以及對非索引字段進(jìn)行排序等等。

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng )、來(lái)自本網(wǎng)站內容采集于網(wǎng)絡(luò )互聯(lián)網(wǎng)轉載等其它媒體和分享為主,內容觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如侵犯了原作者的版權,請告知一經(jīng)查實(shí),將立刻刪除涉嫌侵權內容,聯(lián)系我們QQ:712375056,同時(shí)歡迎投稿傳遞力量。

国产乱来乱子视频| 免费无码中文字幕A级毛片| 中文字幕精品亚洲无线码一区| 蜜臀AV无码精品人妻色欲| 亚洲中文无码卡通动漫3D| 西西444WWW大胆无码视频|