溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

mysql優(yōu)化的小提示有哪些

發(fā)布時(shí)間:2021-12-06 09:14:12 來(lái)源:億速云 閱讀:113 作者:柒染 欄目:MySQL數(shù)據(jù)庫(kù)

這期內(nèi)容當(dāng)中小編將會(huì)給大家?guī)?lái)有關(guān)mysql優(yōu)化的小提示有哪些,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

SQL性能提示

特定查詢性能提示(有關(guān)索引的提示,請(qǐng)參見(jiàn)數(shù)據(jù)庫(kù)設(shè)計(jì)提示):

1.使用EXPLAIN分析查詢執(zhí)行計(jì)劃

使用解釋查看查詢執(zhí)行的計(jì)劃

2.使用慢速查詢?nèi)罩荆ㄊ冀K打開!)

使用慢速查詢?nèi)罩?慢查詢?nèi)罩?

3.當(dāng)您已經(jīng)或可能使用分組方式時(shí),不要使用DISTINCT

當(dāng)你能或正在使用分組時(shí)不要使用 不同的

4.插入性能

插入性能

1.批量插入和替換

使用批量插入

2.使用加載數(shù)據(jù)而不是插入

用加載數(shù)據(jù)代替插入

5.限制m,n可能沒(méi)有聽(tīng)起來(lái)那么快

極限m,n可能并沒(méi)有聽(tīng)起來(lái)那么的快

6.如果您有>~2K條記錄,請(qǐng)不要使用ORDER BY RAND()

如果你的記錄大于2000條,請(qǐng)不要使用 蘭德訂單()

7.選擇頻繁更新的數(shù)據(jù)或大型數(shù)據(jù)集時(shí),請(qǐng)使用SQL\u NO\u緩存

當(dāng)你在查詢經(jīng)常更新和大數(shù)據(jù)集的數(shù)據(jù)時(shí),使用SQL\u無(wú)\u緩存

8.避免在LIKE查詢開始時(shí)使用通配符

避免在喜歡查詢的變量的頭字符中使用通配符

9.避免相關(guān)子查詢和in select和where子句(盡量避免in)

避免相關(guān)子查詢..

10.無(wú)計(jì)算比較--隔離索引列

不使用計(jì)算后的比較------可使索引列仍然有效

11.按順序和限制使用等式和覆蓋索引進(jìn)行最佳工作

訂購(gòu)人和 限度在有索引和等于條件時(shí)效率更高

12.將文本/blob與元數(shù)據(jù)分開,如果不需要,不要將文本/blob放入結(jié)果中

把文本/斑點(diǎn)這兩種數(shù)據(jù)分開,如果不需要的話,不要包含在結(jié)果中

13.派生表(FROM子句中的子查詢)可用于檢索BLOB而無(wú)需對(duì)其進(jìn)行排序。(如果第一部分找到ID并使用then獲取其余ID,則自連接可加快查詢速度)

14.ALTER TABLE…ORDER BY可以按時(shí)間順序?qū)?shù)據(jù)進(jìn)行排序,并按不同的字段對(duì)其重新排序--這可以使該字段上的查詢運(yùn)行得更快(可能這會(huì)在索引中進(jìn)行?)

15.知道何時(shí)拆分復(fù)雜查詢并連接較小的查詢

知道什么時(shí)候分割復(fù)雜查詢和合并簡(jiǎn)單查詢

16.如果可以,一次刪除少量

17.使類似查詢保持一致,以便使用緩存

把相似的查詢改為一摸一樣的查詢,這樣可以使用隱藏物

18.具有良好的SQL查詢標(biāo)準(zhǔn)

19.不要使用不推薦的功能

不要使用未得認(rèn)可得特性

20.將多個(gè)索引字段(<5.0)轉(zhuǎn)換或打開為UNION可能會(huì)加快速度(有限制),在5.0之后,索引合并應(yīng)該會(huì)加快速度。

在多索引列,把或改為協(xié)會(huì)可使速度加快(在5版本以下),

21.不要在Innodb表上每次搜索都使用COUNT*,可以重復(fù)幾次和/或匯總表,或者如果需要對(duì)行總數(shù)使用COUNT*,請(qǐng)使用SQL_CALC_FOUND_rows并選擇Find_rows()

不要在每一個(gè)搜索中使用計(jì)數(shù)*(在Innodb表中),可以使用SQL\u計(jì)算\u找到\u行和 選擇已找到的行()代替他們

22.在重復(fù)密鑰更新時(shí)使用INSERT…(插入忽略)以避免必須選擇

23.使用groupwise maximum而不是子查詢

擴(kuò)展性能提示:

1.使用基準(zhǔn)測(cè)試

2.隔離工作負(fù)載—不要讓管理工作干擾客戶的性能。(即備份)

3.調(diào)試糟透了,測(cè)試石頭!

4.隨著數(shù)據(jù)的增長(zhǎng),索引可能會(huì)發(fā)生變化(基數(shù)和選擇性會(huì)發(fā)生變化)。結(jié)構(gòu)可能會(huì)發(fā)生變化。使您的模式與代碼一樣模塊化。使您的代碼能夠擴(kuò)展。計(jì)劃并接受變化,并讓開發(fā)人員也這樣做。

網(wǎng)絡(luò)性能提示:

1.通過(guò)只獲取您需要的內(nèi)容來(lái)最小化流量。

通過(guò)查詢你需要得數(shù)據(jù)來(lái)減少通信流量

1.分頁(yè)/分塊數(shù)據(jù)檢索限制

2.不要使用選擇*

不要使用 選擇*

3.如果長(zhǎng)時(shí)間的查詢效率更高,那么要小心大量小的快速查詢

2.在適當(dāng)情況下使用multi_查詢以減少往返

操作系統(tǒng)性能提示:

1.使用適當(dāng)?shù)臄?shù)據(jù)分區(qū)

1.對(duì)于集群。在需要集群之前,就開始考慮集群

2.保持?jǐn)?shù)據(jù)庫(kù)主機(jī)盡可能干凈。您真的需要該服務(wù)器上的窗口系統(tǒng)嗎?

3.利用操作系統(tǒng)的優(yōu)勢(shì)

4.縮減cron腳本

5.創(chuàng)建一個(gè)測(cè)試環(huán)境

6.源代碼管理架構(gòu)和配置文件

7.對(duì)于LVM innodb備份,請(qǐng)還原到不同的MySQL實(shí)例,以便innodb可以前滾

8.適當(dāng)劃分

9.在擁有真實(shí)數(shù)據(jù)時(shí)對(duì)數(shù)據(jù)庫(kù)進(jìn)行分區(qū)——在擁有真實(shí)數(shù)據(jù)之前,不要假設(shè)您知道自己的數(shù)據(jù)集

MySQL服務(wù)器總體提示:

1.innodb_flush_commit=0可以幫助從機(jī)延遲

2.優(yōu)化數(shù)據(jù)類型,使用一致的數(shù)據(jù)類型。使用過(guò)程分析()幫助確定滿足您需要的最小數(shù)據(jù)類型。

3.使用樂(lè)觀鎖,而不是悲觀鎖。嘗試使用共享鎖,而不是獨(dú)占鎖。共享模式與更新模式

4.如果可以,壓縮文本/水滴

5.壓縮靜態(tài)數(shù)據(jù)

6.不要經(jīng)常備份靜態(tài)數(shù)據(jù)

7.如果合適,啟用并增加查詢和緩沖區(qū)緩存

8.配置參數(shù)--http://docs.cellblue.nl/2007/03/17/easy-mysql-performance-tweaks/ 這是一個(gè)很好的參考

9.配置變量和提示:

1.使用提供的配置文件之一

2.密鑰緩沖區(qū)、unix緩存(保留一些RAM空閑)、每個(gè)連接變量、innodb內(nèi)存變量

3.注意全局變量與每個(gè)連接變量

4.檢查顯示狀態(tài)和顯示變量(5.0及以上版本中的全局|會(huì)話)

5.注意交換,特別是與Linux的交換,“交換”(對(duì)于innodb數(shù)據(jù)文件,繞過(guò)操作系統(tǒng)文件緩存,如果可能,innodb_flush_method=O_DIRECT(這也是操作系統(tǒng)特有的))

6.整理表碎片,重建索引,進(jìn)行表維護(hù)

7.如果您使用innodb_flush

上述就是小編為大家分享的mysql優(yōu)化的小提示有哪些了,如果剛好有類似的疑惑,不妨參照上述分析進(jìn)行理解。如果想知道更多相關(guān)知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI