<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          阿里云面試官:如果是MySQL引起的CPU消耗過大,你會(huì)如何優(yōu)化?

          共 1525字,需瀏覽 4分鐘

           ·

          2020-03-26 23:27

          點(diǎn)擊上方SQL數(shù)據(jù)庫開發(fā),關(guān)注獲取SQL視頻教程


          SQL專欄

          SQL數(shù)據(jù)庫基礎(chǔ)知識(shí)匯總

          SQL數(shù)據(jù)庫高級(jí)知識(shí)匯總

          作者:jiaxin_12

          cnblogs.com/YangJiaXin/p/10933458.html

          目錄

          誰在消耗cpu?
          禍?zhǔn)资钦l?
          • 用戶
          • IO等待
          • 產(chǎn)生影響
          如何減少CPU消耗?
          • 減少等待
          • 減少計(jì)算
          • 升級(jí)cpu

          誰在消耗CPU?

          用戶+系統(tǒng)+IO等待+軟硬中斷+空閑24a5d43eb8de304cce54c51bc9ab04c2.webp02c01fb19afb7e01343b0a26a887645b.webp

          禍?zhǔn)资钦l?

          用戶

          用戶空間CPU消耗,各種邏輯運(yùn)算
          正在進(jìn)行大量tps
          函數(shù)/排序/類型轉(zhuǎn)化/邏輯IO訪問…
          用戶空間消耗大量cpu,產(chǎn)生的系統(tǒng)調(diào)用是什么?那些函數(shù)使用了cpu周期?

          IO等待

          等待IO請(qǐng)求的完成
          此時(shí)CPU實(shí)際上空閑
          如vmstat中的wa 很高。但I(xiàn)O等待增加,wa也不一定會(huì)上升(請(qǐng)求I/O后等待響應(yīng),但進(jìn)程從核上移開了)1b0625a8b2d5204de92c512a3fbc73cd.webpe1820e3b1bf98670824d4c43ee3c352f.webp

          產(chǎn)生影響

          用戶和IO等待消耗了大部分cpu
          • 吞吐量下降(tps)
          • 查詢響應(yīng)時(shí)間增加
          • 慢查詢數(shù)增加
          • 對(duì)mysql的并發(fā)陡增,也會(huì)產(chǎn)生上訴影響

          269ef010ded409308f76b3b3b02975f2.webp

          如何減少CPU消耗?

          減少等待

          減少IO量SQL/index,使用合適的索引減少掃描的行數(shù)(需平衡索引的正收益和維護(hù)開銷,空間換時(shí)間)提升IO處理能力加cache/加磁盤/SSD

          611611d48b44e2631080819bea7e03be.webp

          減少計(jì)算

          減少邏輯運(yùn)算量

          • 避免使用函數(shù),將運(yùn)算轉(zhuǎn)移至易擴(kuò)展的應(yīng)用服務(wù)器中
            如substr等字符運(yùn)算,dateadd/datesub等日期運(yùn)算,abs等數(shù)學(xué)函數(shù)

          • 減少排序,利用索引取得有序數(shù)據(jù)或避免不必要排序
            如union all代替 union,order by 索引字段等

          • 禁止類型轉(zhuǎn)換,使用合適類型并保證傳入?yún)?shù)類型與數(shù)據(jù)庫字段類型絕對(duì)一致
            如數(shù)字用tiny/int/bigint等,必需轉(zhuǎn)換的在傳入數(shù)據(jù)庫之前在應(yīng)用中轉(zhuǎn)好

          • 簡單類型,盡量避免復(fù)雜類型,降低由于復(fù)雜類型帶來的附加運(yùn)算。更小的數(shù)據(jù)類型占用更少的磁盤、內(nèi)存、cpu緩存和cpu周期

          • ….

          減少邏輯IO量
          • index,優(yōu)化索引,減少不必要的表掃描
            如增加索引,調(diào)整組合索引字段順序,去除選擇性很差的索引字段等等
          • table,合理拆分,適度冗余
            如將很少使用的大字段拆分到獨(dú)立表,非常頻繁的小字段冗余到“引用表”
          • SQL,調(diào)整SQL寫法,充分利用現(xiàn)有索引,避免不必要的掃描,排序及其他操作
            如減少復(fù)雜join,減少order by,盡量union all,避免子查詢等
          • 數(shù)據(jù)類型,夠用就好,減少不必要使用大字段
            如tinyint夠用就別總是int,int夠用也別老bigint,date夠用也別總是timestamp
          • ….

          303e0fa66192a4581171fb4cd1067728.webp

          減少query請(qǐng)求量(非數(shù)據(jù)庫本身)

          • 適當(dāng)緩存,降低緩存數(shù)據(jù)粒度,對(duì)靜態(tài)并被頻繁請(qǐng)求的數(shù)據(jù)進(jìn)行適當(dāng)?shù)木彺?br style="font-size:inherit;color:inherit;" />如用戶信息,商品信息等
          • 優(yōu)化實(shí)現(xiàn),盡量去除不必要的重復(fù)請(qǐng)求
            如禁止同一頁面多次重復(fù)請(qǐng)求相同數(shù)據(jù)的問題,通過跨頁面參數(shù)傳遞減少訪問等
          • 合理需求,評(píng)估需求產(chǎn)出比,對(duì)產(chǎn)出比極端底下的需求合理去除
          • ….

          6304a7e25ab5120bae2636209001797d.webp

          升級(jí)cpu

          若經(jīng)過減少計(jì)算和減少等待后還不能滿足需求,cpu利用率還高T_T

          是時(shí)候拿出最后的殺手锏了,升級(jí)cpu,是選擇更快的cpu還是更多的cpu了?

          • 低延遲(快速響應(yīng)),需要更快的cpu(每個(gè)查詢只能使用一個(gè)cpu)
          • 高吞吐,同時(shí)運(yùn)行很多查詢語句,能從多個(gè)cpu處理查詢中收益

          參考

          《高性能MySQL》
          《圖解性能優(yōu)化》
          大部分整理自《MySQL Tuning For CPU Bottleneck》


          ——End——

          推薦閱讀


          點(diǎn)擊「閱讀原文」了解SQL訓(xùn)練營

          讓我知道你 “在看561ae6657b5cea99a18744caa40ee0c3.webp

          瀏覽 73
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  蜜桃AV成人 | 亚洲国产精品福利一区 | 夜夜天天日日肏 | 啪啪啪在线网站 | 女人一区 |