您好,登錄后才能下訂單哦!
這期內(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è)資訊頻道。
免責(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)容。