bl双性强迫侵犯h_国产在线观看人成激情视频_蜜芽188_被诱拐的少孩全彩啪啪漫画

如何深入揭秘DBbrain智能優化引擎

今天就跟大家聊聊有關如何深入揭秘DBbrain智能優化引擎,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。

松溪網站建設公司創新互聯建站,松溪網站設計制作,有大型網站制作公司豐富經驗。已為松溪超過千家提供企業網站建設服務。企業網站搭建\外貿網站建設要多少錢,請找那個售后服務好的松溪做網站的公司定做!

DBbrain的SQL優化原理和實現。

前言

在之前的幾期診斷日的分享中,分別介紹了如何使用DBbrain自助處理數據庫主從復制延遲、CPU使用率過高、字符集不匹配的場景。本期的將為大家分享DBbrain的SQL優化原理和實現。主要看點如下:

1.深入揭秘DBbrain智能優化引擎架構及原理

2.DBbrain推出業內首個SQL優化效果對比功能

為了便于大家理解DBbrain的SQL優化功能的使用場景和設計背景,先簡單聊一聊SQL性能較差與數據庫性能聯系——我們通常把性能較差的SQL稱之為慢SQL,一般我們可通過設置slow_query_log參數設置為ON,來捕獲執行時間超過一定數值(由long_query_time參數控制)的SQL語句。表現上來理解就是執行時間過長的SQL,但廣義上消耗資源過多、執行計劃不夠優秀的SQL同樣具有影響數據庫性能的潛在隱患,可能只是因為資源足夠空閑(緊急升配往往能夠臨時掩蓋性能問題)或者數據量不夠大,所以這幾類SQL的執行時間并沒有太長,但在特定場景下卻會放大其對數據庫性能的影響。而一般80%的數據庫性能問題都是由于SQL性能所導致的,所以如何進行SQL的優化、SQL優化的效果就成為了數據庫性能提升的關鍵因素。那么接下來就為大家揭秘,DBbrain的智能優化引擎是如何進行SQL優化的。

基于規則和代價估算的SQL優化建議

DBbrain的SQL優化引擎獨立于數據庫,避免對原生數據庫引擎進行侵入。它的主要組件包括SQL解析和校驗、基于規則的SQL重寫、查詢條件選擇度/代價估算、SQL子句檢查以及建議生成器。除此之外,Connector組件負責與目標數據庫交互,同步SQL優化所需配置和表結構定義相關信息以及SQL代價估算。

如何深入揭秘DBbrain智能優化引擎

1.SQL解析和校驗

負責解析輸入SQL語句,將提取涉及到的庫表交給Connector組件獲取表定義,并校驗相關字段名、類型以及字符集(出于性能考慮,DBbrain不支持MyISAM表以及視圖)。

2.SQL重寫

數據庫優化器都具有重寫組件。它一般在選擇索引,生成執行計劃之前,通過對原SQL語句進行無語義差別的變換,使得SQL語句更加簡潔,方便后續組件更好的選擇執行計劃。執行計劃選擇是在當前給定條件下盡力選擇最佳執行路徑,而SQL重寫、增加合適的索引則是為執行計劃選擇創造更好物理條件。數據庫自身具有一定重寫功能,因此SQL優化建議也需要識別這些規則,并通過變換將查詢條件和實際庫表進行關聯。下面舉個例子來說明一下SQL 重寫的原理:SQL在數據庫中的執行路徑往往和開發人員在寫的結構不太相同,比如開發人員看到的如下SQL語句:

如何深入揭秘DBbrain智能優化引擎

在數據庫中的視圖卻是如下的執行流程:

如何深入揭秘DBbrain智能優化引擎

DBbrain的SQL優化功目的就是幫助數據庫尋找最佳執行路徑,將其執行路徑優化成更為簡潔和高效的視圖。從SQL解析上看,查詢條件字段"value"是和a關聯,但a僅僅是子查詢的別名。從無語義差別的角度,該查詢條件是可以下推到子查詢,和庫表dbbrain_1直接關聯。

如何深入揭秘DBbrain智能優化引擎

但是數據庫自身重寫功能通常具有片面性,實現并不完善。在某些特定場景下,顯示的更改SQL語句,可以大幅度提高執行性能。比如:條件下推聚合子查詢,exists變換為join,條件合并等。實現SQL變化的最大前提條件是無語義差別的,保證查詢結果正確。這些變化是基于預先設定好的規則。

3.選擇度計算

條件選擇度計算是索引建議核心,它決定了索引字段順序以及驅動表的選擇。條件字段的選擇度計算依賴于表的統計信息,并需要對庫表進行數據抽樣。DBbrain會默認隨機抽取200~1000條數據。這些數據是應用了crc32函數的校驗碼,避免獲取用戶原始數據,用戶不必擔心數據安全問題。

4.條件/子句檢查

根據MySQL引擎規則,識別出order by/ aggregate條件、project(輸出字段),并合理利用索引;與此同時,識別出不合理條件或使用方式,提示用戶。比如非前置like匹配,數字作用于字符條件字段等。

5.SQL優化建議生成

SQL優化建議包括索引優化建議和SQL重新優化建議。

優化前后的執行計劃對比及效果評估

傳統的手動優化SQL,極度考驗DBA的知識儲備和實戰經驗積累,優化后一般只能通過explain的改變來預估SQL優化效果,而大多數研發和運維目前使用的市面上的SQL優化工具更是只能根據理論分析得出優化結果。這樣一來我們如何精確驗證SQL優化的效果好壞?大多數情況下都只能通過執行后觀察業務延遲的表象來判斷(也可以采用較為復雜的測試環境變更,旁路流量的方式驗證),但這樣的驗證方式不僅效率低下,而且在變更前、變更中、變更后均對數據庫性能存在極高的風險。

但這些已經是過去式了,現在不用擔心啦!騰訊云數據庫DBbrain團隊歷經多年的技術探索和研發后,終于推出了業內第一款基于執行代價分析的SQL性能優化效果對比功能,能夠在未執行變更前對變更效果進行預估,讓用戶能預知變更的優化效果,更加放心的根據優化建議進行變更,同時也通過此類技術的結果反饋不斷優化自身SQL優化引擎的精準性。

在不更改用戶數據庫的前提下,DBbrain智能優化引擎能夠對給出的SQL優化建議進行效果評估。SQL代價估算引擎在該功能中起到主要作用。通過分析SQL相關庫表的統計信息、OPTIMIZER_SWITCH配置、以及索引字段區分度估算,對優化后的SQL語句待機進行整體代價估計。下面我們通過一個現網真實案例進行展示:

1、優化效果提前預知

DBbrain智能優化引擎通過代價對比,直觀呈現出SQL優化后降低99.19%的效果,也可通過優化前后的執行計劃比對進一步驗證優化的效果

如何深入揭秘DBbrain智能優化引擎

2、智能建議省時省力

DBbrain智能優化引擎給出的SQL重寫+增加索引相結合的建議對SQL進行性能優化

如何深入揭秘DBbrain智能優化引擎

3、輔助用戶理解優化

為了輔助用戶更好的理解優化,DBbrain還提供表結構信息的展示,讓信息更加直觀明了。

基于全量審計日志負載評估和優化

一般對實際系統的優化需要全局的把握,而不是僅僅針對有一個SQL語句,雖然增加索引可以提高查詢性能,但同時也會增加磁盤開銷,降低寫入性能。針對不同SQL語句,可能給出針對某一個表的重復索引;同時我們還需要考慮SQL的執行頻度,對系統的整體負載影響,有時候單個SQL的掃描行數不高,但是因頻率過高也會成為主要問題點。

如何深入揭秘DBbrain智能優化引擎

而DBbrain的評估優化是基于全量審計日志的負載,實時計算SQL掃描行數,定位主要問題SQL語句并給出優化建議,因此優化是整體的,全方位的。

新功能速遞

最后,也為大家進行一下DBbrain的新功能速遞。DBbrain正式發布新版,新功能包括:

1.全面支持只讀實例、災備實例,涵蓋所有性能診斷和優化功能;

2.新增多種主從復制故障、異常、隱患的排查和優化;

3.全面優化用戶體驗,提供“用戶級”和“實例級”功能;

  • 用戶級功能:實例概覽、實例管理(實例列表、告警匯總)、全實例監控;

  • 實例級功能:異常診斷、實時會話、慢SQL分析、SQL優化、空間分析、健康報告、審計日志分析。

4.SQL優化能力持續升級。

看完上述內容,你們對如何深入揭秘DBbrain智能優化引擎有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注創新互聯行業資訊頻道,感謝大家的支持。

分享名稱:如何深入揭秘DBbrain智能優化引擎
本文網址:http://vcdvsql.cn/article20/gjodco.html

成都網站建設公司_創新互聯,為您提供網站制作動態網站Google定制網站網站導航移動網站建設

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

手機網站建設