最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MySQL數(shù)據(jù)庫性能優(yōu)化介紹

 更新時間:2021年12月27日 09:06:57   作者:weixin_38012558  
大家好,本篇文章主要講的是MySQL數(shù)據(jù)庫性能優(yōu)化介紹,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽

為什么做優(yōu)化??

因為數(shù)據(jù)量太多了,項目部署上線再到用戶使用,每天數(shù)據(jù)增長幾十萬條,給服務(wù)器帶來非常大的負擔(dān),互聯(lián)網(wǎng)一直追求高性能,可是隨著業(yè)務(wù)規(guī)模變大,用戶數(shù)量變多,服務(wù)器的性能越來越差,因此我們不得不對數(shù)據(jù)庫有更高要求。

從哪些方面入手??

第一,是查詢的速度,我們期望數(shù)據(jù)量到達TB級別仍然能夠?qū)崿F(xiàn)百萬級別查詢速度。

第二、是并發(fā)量,我們對它的要求能夠同時處理幾千甚至上萬的并發(fā)訪問,還要配合Redis、MQ等。??

第三,高可用,隨著業(yè)務(wù)規(guī)模不斷變大,我們要隨時準備對服務(wù)器進行擴展,可能由原來幾十臺服務(wù)器擴展到上百臺甚至上千臺服務(wù)器,所以我們要搭載MySQL集群。

第四,事務(wù)的安全性,當(dāng)業(yè)務(wù)出現(xiàn)高并發(fā)訪問,怎么保證讀寫一致性???保證事務(wù)的安全性???? 參考多線程的思路。。?

解決方案是什么???

第一個思考的是應(yīng)該用什么樣的存儲引擎,因為存儲引擎決定著它的性能,好比你是用汽車、飛機還是坦克, 每個引擎都有它特殊的作用。 業(yè)務(wù)上常用的是兩種,INNODB和MYISAM。

?要怎樣選擇???

當(dāng)我們對業(yè)務(wù)沒有過多的讀寫要求,以查詢?yōu)橹?,使用MyISAM,當(dāng)我們對事務(wù)完整性要求較高,并發(fā)要求高,增刪頻繁,經(jīng)常進行讀寫操作,使用INNODB更好。

第二個我們要給加快查詢速度, 所以要給表特殊字段添加索引,索引的原理是改變數(shù)據(jù)的存儲結(jié)構(gòu),這里分為兩種:第一是BTree,第二是B+Tree。 我們業(yè)務(wù)上一般使用的是B+Tree,BTree有一個特點,是根節(jié)點和葉子節(jié)點都會存放數(shù)據(jù),這會造成比如查詢最底層葉子節(jié)點,會一層一層讀根節(jié)點的數(shù)據(jù),會增加磁盤I/O次數(shù),無形當(dāng)中又會增加數(shù)據(jù)庫的壓力。 所以要用B+Tree

第三實現(xiàn)高可用方案, 這里我們會為數(shù)據(jù)庫服務(wù)搭載主從結(jié)構(gòu)集群,緩解讀和寫的壓力?

第四是安全問題,這里可以參考線程的安全問題,比如怎么解決高并發(fā)訪問??如何能保證事務(wù)的完整性??? 像RocketMQ也涉及事務(wù)消息,? 如何避免這類問題, 我們可以上鎖。 以下是鎖的分類。

SQL優(yōu)化

1、查詢盡量避免全表掃描,首先考慮在where、order by字段上添加索引

2、避免在where字段上使用NULL值,所以在設(shè)計表時盡量使用NOT NULL約束,有些數(shù)據(jù)會默認為NULL,可以設(shè)置默認值為0或者-1

3、避免在where子句中使用!=或<>操作符,Mysql只對<,<=,=,>,>=,BETWEEN,IN,以及某些時候的LIKE使用索引

4、避免在where中使用OR來連接條件,否則可能導(dǎo)致引擎放棄索引來執(zhí)行全表掃描,可以使用UNION進行合并查詢

? ? ? select id from t where num = 30 union select id from t where num = 40;

5、盡量避免在where子句中進行函數(shù)或者表達式操作

6、最好不要使用select * from t,用具體的字段列表代替"*",不要返回用不到的任何字段

7、in 和 not in 也要慎用,否則會導(dǎo)致全表掃描,如

select id from t where num IN(1,2,3)如果是連續(xù)的值建議使用between and,select id from t where between 1 and 3;

8、select id from t where col like %a%;模糊查詢左側(cè)有%會導(dǎo)致全表檢索,如果需要全文檢索可以使用全文搜索引擎比如es,slor

9、limit offset rows關(guān)于分頁查詢,盡量保證不要出現(xiàn)大的offset,比如limit 10000,10相當(dāng)于對已查詢出來的行數(shù)棄掉前10000行后再取10行,完全可以加一些條件過濾一下(完成篩選),而不應(yīng)該使用limit跳過已查詢到的數(shù)據(jù)。這是一個==offset做無用功==的問題。對應(yīng)實際工程中,要避免出現(xiàn)大頁碼的情況,盡量引導(dǎo)用戶做條件過濾

總結(jié)

到此這篇關(guān)于MySQL數(shù)據(jù)庫性能優(yōu)化介紹的文章就介紹到這了,更多相關(guān)MySQL性能優(yōu)化內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 關(guān)于MySQL中datetime和timestamp的區(qū)別解析

    關(guān)于MySQL中datetime和timestamp的區(qū)別解析

    在MySQL中一些日期字段的類型選擇為datetime和timestamp,那么對于這兩種類型不同的應(yīng)用場景是什么呢,這篇文章主要介紹了關(guān)于MySQL中datetime和timestamp的區(qū)別解析,需要的朋友可以參考下
    2023-06-06
  • mysql?分組函數(shù)和分組查詢使用詳解

    mysql?分組函數(shù)和分組查詢使用詳解

    分組函數(shù)用作統(tǒng)計使用,又稱聚合函數(shù),統(tǒng)計函數(shù),組函數(shù),這篇文章主要介紹了mysql分組函數(shù)分組查詢的操作代碼,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2024-01-01
  • MySQL使用B+Tree當(dāng)索引的優(yōu)勢有哪些

    MySQL使用B+Tree當(dāng)索引的優(yōu)勢有哪些

    這篇文章主要介紹了MySQL使用B+Tree當(dāng)索引有哪些優(yōu)勢,幫助大家更好的理解和學(xué)習(xí)使用MySQL,感興趣的朋友可以了解下
    2021-03-03
  • mysql授權(quán)、啟動、啟動服務(wù)常用命令

    mysql授權(quán)、啟動、啟動服務(wù)常用命令

    本篇文章給大家分享了mysql授權(quán)、啟動、啟動服務(wù)常用命令總結(jié),希望我們整理的內(nèi)容對大家有用。
    2018-03-03
  • MySQL深入淺出掌握觸發(fā)器用法

    MySQL深入淺出掌握觸發(fā)器用法

    觸發(fā)器是SQLserver提供給程序員和數(shù)據(jù)分析員來保證數(shù)據(jù)完整性的一種方法,它是與表事件相關(guān)的特殊的存儲過程,事件是在 MySQL 5.1后引入的,有點類似操作系統(tǒng)的計劃任務(wù),但是周期性任務(wù)是內(nèi)置在MySQL服務(wù)端執(zhí)行的
    2022-05-05
  • MySQL查詢優(yōu)化--調(diào)整內(nèi)部變量的詳解

    MySQL查詢優(yōu)化--調(diào)整內(nèi)部變量的詳解

    本篇文章是對MySQL查詢優(yōu)化中的調(diào)整內(nèi)部變量進行了詳細的分析介紹,需要的朋友參考下
    2013-06-06
  • mysql學(xué)習(xí)之引擎、Explain和權(quán)限的深入講解

    mysql學(xué)習(xí)之引擎、Explain和權(quán)限的深入講解

    這篇文章主要給大家介紹了關(guān)于mysql學(xué)習(xí)之引擎、Explain和權(quán)限的相關(guān)資料,文中通過示例代碼將引擎、Explain和權(quán)限介紹的非常詳細,對大家學(xué)習(xí)或者使用mysql具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-06-06
  • MySQL取消了Query Cache的原因

    MySQL取消了Query Cache的原因

    這篇文章主要介紹了MySQL取消了Query Cache的原因,幫助大家更好的理解和使用MySQL數(shù)據(jù)庫,感興趣的朋友可以了解下
    2020-10-10
  • 允許任意IP訪問mysql數(shù)據(jù)庫的方法詳解

    允許任意IP訪問mysql數(shù)據(jù)庫的方法詳解

    MYSQL默認只能本地連接,即127.0.0.1和localhost,其他主機IP無法訪問數(shù)據(jù)庫,那么如何允許任意IP訪問mysql數(shù)據(jù)庫,所以本文小編將給大家介紹允許任意IP訪問mysql數(shù)據(jù)庫的方法,文中通過代碼示例介紹的非常詳細,需要的朋友可以參考下
    2024-01-01
  • SQL中日期與字符串互相轉(zhuǎn)換操作實例

    SQL中日期與字符串互相轉(zhuǎn)換操作實例

    我們經(jīng)常出于某種目的需要使用各種各樣的日期格式,當(dāng)然我們可以使用字符串操作來構(gòu)造各種日期格式,下面這篇文章主要給大家介紹了關(guān)于SQL中日期與字符串互相轉(zhuǎn)換操作的相關(guān)資料,需要的朋友可以參考下
    2022-10-10

最新評論

石柱| 常宁市| 鄂州市| 朔州市| 澄江县| 石林| 和平县| 定西市| 苍南县| 阿拉善右旗| 嘉禾县| 定边县| 宁南县| 巧家县| 隆回县| 遵义市| 陵川县| 平安县| 青海省| 得荣县| 拜城县| 广安市| 巨野县| 绥棱县| 股票| 云南省| 伊宁县| 本溪| 湘西| 定陶县| 佛学| 财经| 合江县| 高青县| 射阳县| 秦皇岛市| 寿宁县| 澄城县| 兴国县| 囊谦县| 涟水县|