最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

30分鐘帶你熟練性能優(yōu)化的那點兒事兒(案例說明)

2023-04-04 15:31 作者:java大能蟲  | 我要投稿

前言
  性能優(yōu)化是數(shù)據(jù)庫運維人員和中、高級軟件開發(fā)人員的必備技能,很多時候老司機和新司機的區(qū)別就在寫出的東西是否優(yōu)化。

  博主接觸過近千家客戶的系統(tǒng),這些系統(tǒng)都存在著各種各樣的性能問題。那么如何透徹的了解我們的數(shù)據(jù)庫性能問題?今天就用一個案例來說明性能優(yōu)化的那點兒事兒。

  PS:很多技術人員對優(yōu)化有一套自己的理解,在閱讀本文前請放下你自己的理解。

了解系統(tǒng)環(huán)境
  優(yōu)化首先要知道數(shù)據(jù)庫在一個什么樣的硬件/軟件環(huán)境下運行?配置是怎么樣的?內存、CPU這些是否能完全被應用?數(shù)據(jù)庫體量多大?

  首先我們先看一下系統(tǒng)的配置:

  軟件層面,我們要知道我們的操作系統(tǒng)版本,SQL Server版本,以及對應版本的硬件限制(如32位系統(tǒng)不開AWE無法使用超過4G內存、server 2008 標準版最大支持32G內存等)



  本例中我們可以看出,系統(tǒng)環(huán)境沒有異常問題,SQL Server的補丁不是最新的,CPU資源不充足,可能CPU會成為系統(tǒng)的瓶頸。

全局層面看性能


  全局層面看問題主要指綜合服務器的各種指標表象定位系統(tǒng)的瓶頸或問題,在性能優(yōu)化中最忌諱的就是看到一個指標馬上就下手,針對一個指標的判斷是盲目的,很可能使問題偏離本身的根本原因,也可能使優(yōu)化根本無法解決根本問題而只是表象得到了緩解。

 
性能計數(shù)器
  CPU:在大量時間內CPU的使用率達到100%,說明CPU已經(jīng)成為瓶頸。


  內存:內存計數(shù)器生命周期在11點時已經(jīng)降到0,惰性寫入器也彪高,說明內存也存在壓力,而且比較嚴重。


  磁盤:磁盤的平均隊列很高(一般系統(tǒng)最佳情況隊列應該低于2),并且讀隊列和寫隊列都很高。由于內存存在壓力,所以現(xiàn)在無法判斷磁盤的壓力是由于內存不足引起的還是磁盤速度不能滿足需要。




  其他計數(shù)器:

  可以看到系統(tǒng)中全表掃面的次數(shù)比較多,這表明很多查詢沒有應用索引。


  系統(tǒng)在11點左右和11點24左右發(fā)生大量鎖等待,并且等待時間很長(超過150s)


  通過很多類計數(shù)器能綜合看出系統(tǒng)的問題。這里不一一細說了


系統(tǒng)等待

  等待是另一個可以全局層面看系統(tǒng)的指標,系統(tǒng)運行的卡慢問題很大部分是因為等待而引起的,那么等待的類型也是可以很直觀的反映出系統(tǒng)的問題。

  幾個主要等待:  

  ASNC_NETWORK_IO:一般反應出有部分查詢可能返回大量數(shù)據(jù),請加查具體的等待語句是否需要返回如此多的數(shù)據(jù)。

  WAITFOR :可能是配置了CDC發(fā)布訂閱或程序中使用了語句waitfor delay

  CXPACKET:CPU的調度等待。

  LCK_M_U :更新語句之間的語句阻塞。

  WRITELOG:說明程序中有循環(huán)的插入跟新操作而頻繁的寫入日志,磁盤速度不能滿足寫入頻率而造成。

綜合分析

  綜合系統(tǒng)等待和性能計數(shù)器,我們基本可以判定出來系統(tǒng)存在以下問題:

  系統(tǒng)的CPU、內存、磁盤均存在較大的壓力,尤其CPU負荷接近100%,系統(tǒng)中存在大量表掃面可能缺失比多索引。系統(tǒng)中有的語句可能要返回大量的不必要數(shù)據(jù),系統(tǒng)鎖情況嚴重,等待時間很長,語句執(zhí)行時間也必然很長。

  語句執(zhí)行的整體情況:由于上述的問題影響,那么系統(tǒng)中必然存在大量的長時間語句!


解決問題

  問題的定義是很重要的一步,從全局的多項指標綜合分析,讓所有問題無所遁形。定位問題后我們先來看一下解決這些問題的基本步驟。

  本案例是自己模擬的一個情況,所以雖然在表象上來看資源壓力很大,但實際在運行的語句不多,場景也有限,但在生產系統(tǒng)如果存在這樣的表象,那么說明你的系統(tǒng)性能問題非常嚴重急需一次詳細的優(yōu)化了。

  那么下面也介紹一下生產系統(tǒng)遇到這樣的問題應該怎么優(yōu)化,有哪些必要的步驟。

步驟一 針對系統(tǒng)問題對數(shù)據(jù)庫進行全面的優(yōu)化,提升整體效率

  很多人優(yōu)化可能直奔語句,認為語句就可以解決性能的所有問題,其實這樣的觀點是不全面的,系統(tǒng)的配置,數(shù)據(jù)庫的配置,索引的規(guī)劃等都是解決性能的必要步驟。

  例如:系統(tǒng)中的語句都是最佳的,數(shù)據(jù)庫運行還是很慢,可能就是因為你的CHECKDB配置的問題,也有可能因為你自動收縮沒有關閉而導致的性能問題。

優(yōu)化操作系統(tǒng)配置
  針對服務器進行配置檢查,查看是否有配置不合理或可以優(yōu)化的配置項,比如是否配置了虛擬內存?服務器層面是否限制的資源使用?服務器是否高性能模式運行?

優(yōu)化數(shù)據(jù)庫層面的配置
  針對數(shù)據(jù)庫參數(shù)進行合理配置使硬件充分發(fā)揮硬件功能,優(yōu)化不合理配置,降低對數(shù)據(jù)庫造成沖擊的可能性。比如:最大并行度?最大內存?


是否大量缺失索引

  大量索引缺失必然導致語句性能不佳,并且消耗大量的系統(tǒng)資源,很可能就會造成上面服務器高壓力的表象


刪除無用索引

  針對數(shù)據(jù)庫中無用的索引進行刪除。提升更新操作的時間。


刪除重復索引

  針對數(shù)據(jù)庫中重復的索引進行刪除。提升更新操作的時間。


對重點語句建索引

  針對系統(tǒng)中消耗大的語句或執(zhí)行次數(shù)多的語句進行分析,評估語句性能問題,并建立合適的索引提,降低語句的資源消耗,升語句運行效率。


解決阻塞

  解決語句間的阻塞,這需要分析語句的阻塞鏈,到底語句被什么樣的操作阻塞了,為什么會阻塞?

  很多新手經(jīng)常問的問題:為什么我有的時候查很快有的時候查就很慢? 答:大多數(shù)情況就是你的語句被阻塞了。


優(yōu)化TempDB

  針對TempDB調優(yōu),減少TempDB資源爭用導致的壓力。本例中可以死看到有TempDB的爭用等待,所以對TempDB的優(yōu)化也是必要的。


優(yōu)化日志碎片

  針對日志增大,帶來的日志碎片問題進行優(yōu)化。

清除索引碎片

  檢查系統(tǒng)的索引維護情況,并針對碎片過大的表進行碎片清除操作。主要體現(xiàn)在系統(tǒng)中有老化的索引,索引的老化導致索引的性能不高或失效。

一階段預期效果

  一階段的優(yōu)化是對性能的整體提升,性能提升也會很明顯,針對不同系統(tǒng)提升一般在2-3倍。

步驟二 處理熱點問題

  處理熱點問題主要是在階段一的基本優(yōu)化后針對重點的語句進行調優(yōu),可能包含創(chuàng)建索引,修改寫法,查詢提示,計劃向導等等。

  在語句調優(yōu)中請主要關注:是否有缺失索引,是否存在隱式轉換,語句的執(zhí)行時間、CPU、邏輯讀寫量、物理讀寫量、占用TempDB空間等信息。

  例:這樣一條語句經(jīng)過第一階段的優(yōu)化并沒有太大的提升,而且資源消耗依然很大,那么我們可以針對這條語句進行詳細的二階段優(yōu)化。


簡單的優(yōu)化一下



  只是簡單的改了下語句的寫法時間有7秒變成1秒,內存消耗從300+MB 變成 1MB

二階段預期效果

階段二的優(yōu)化屬于細致的優(yōu)化步驟,要針對更為具體的語句、具體的情況。經(jīng)過本階段優(yōu)化可以使系統(tǒng)中大部分語句從寫法、配置、運行指標都趨于優(yōu)化值。

步驟三 針對業(yè)務

  這個步驟需要配合開發(fā)人員,到底哪些功能依然慢?執(zhí)行了哪些語句?是領導用的功能?還是一般可以慢的功能?如果大領導用的功能,那可能你就需要多花些心思了。這部分這里就不展開說了。

三階段預期效果

第三階段屬于最細致的階段,可以結合業(yè)務真正點對點的消滅系統(tǒng)中存在問題。

導圖

  針對性能優(yōu)化奉上幾個圖希望能幫助數(shù)據(jù)庫從業(yè)者梳理一下優(yōu)化的思路(個人思路僅供參考,不完善的地方也請見諒)

CPU:


  內存:


  磁盤:


  等待:


總結

  在性能優(yōu)化中最忌諱的就是看到一個指標馬上就下手,針對一個指標的判斷是盲目的,很可能使問題偏離本身的根本原因,也可能使優(yōu)化根本無法解決根本問題而只是表象得到了緩解。

  本文只是通過一個例子簡述一下優(yōu)化的基本思路,希望幫助更多數(shù)據(jù)庫從業(yè)者,了解性能優(yōu)化。

  本文只闡述了思路,具體的各部分解決方式請參見我的系列文章:SQL SERVER全面優(yōu)化-------Expert for SQL Server 診斷系列

  性能的調優(yōu)是一個持續(xù)性的工作,不是一次解決了問題以后就可以高枕無憂了,定期的巡檢也是數(shù)據(jù)庫從業(yè)者必要的工作之一,做到及早發(fā)現(xiàn)及早解決。



30分鐘帶你熟練性能優(yōu)化的那點兒事兒(案例說明)的評論 (共 條)

分享到微博請遵守國家法律
河间市| 西城区| 繁峙县| 恩施市| 天门市| 鄂温| 广德县| 岚皋县| 黄石市| 土默特左旗| 宁波市| 白银市| 晋江市| 娱乐| 崇义县| 桃源县| 吴忠市| 翁牛特旗| 南川市| 抚顺县| 扎赉特旗| 阿尔山市| 芦溪县| 德安县| 麟游县| 九龙县| 稻城县| 郴州市| 四子王旗| 阜城县| 太原市| 昭通市| 康定县| 鄂伦春自治旗| 蒙山县| 会理县| 大兴区| 余姚市| 琼结县| 洛阳市| 常山县|