真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

如何深入揭秘DBbrain智能優(yōu)化引擎-創(chuàng)新互聯(lián)

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

創(chuàng)新互聯(lián)公司是一家專(zhuān)注于成都網(wǎng)站設(shè)計(jì)、成都做網(wǎng)站與策劃設(shè)計(jì),岳麓網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)公司做網(wǎng)站,專(zhuān)注于網(wǎng)站建設(shè)十年,網(wǎng)設(shè)計(jì)領(lǐng)域的專(zhuān)業(yè)建站公司;建站業(yè)務(wù)涵蓋:岳麓等地區(qū)。岳麓做網(wǎng)站價(jià)格咨詢(xún):13518219792

DBbrain的SQL優(yōu)化原理和實(shí)現(xiàn)。

前言

在之前的幾期診斷日的分享中,分別介紹了如何使用DBbrain自助處理數(shù)據(jù)庫(kù)主從復(fù)制延遲、CPU使用率過(guò)高、字符集不匹配的場(chǎng)景。本期的將為大家分享DBbrain的SQL優(yōu)化原理和實(shí)現(xiàn)。主要看點(diǎn)如下:

1.深入揭秘DBbrain智能優(yōu)化引擎架構(gòu)及原理

2.DBbrain推出業(yè)內(nèi)首個(gè)SQL優(yōu)化效果對(duì)比功能

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

基于規(guī)則和代價(jià)估算的SQL優(yōu)化建議

DBbrain的SQL優(yōu)化引擎獨(dú)立于數(shù)據(jù)庫(kù),避免對(duì)原生數(shù)據(jù)庫(kù)引擎進(jìn)行侵入。它的主要組件包括SQL解析和校驗(yàn)、基于規(guī)則的SQL重寫(xiě)、查詢(xún)條件選擇度/代價(jià)估算、SQL子句檢查以及建議生成器。除此之外,Connector組件負(fù)責(zé)與目標(biāo)數(shù)據(jù)庫(kù)交互,同步SQL優(yōu)化所需配置和表結(jié)構(gòu)定義相關(guān)信息以及SQL代價(jià)估算。

如何深入揭秘DBbrain智能優(yōu)化引擎

1.SQL解析和校驗(yàn)

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

2.SQL重寫(xiě)

數(shù)據(jù)庫(kù)優(yōu)化器都具有重寫(xiě)組件。它一般在選擇索引,生成執(zhí)行計(jì)劃之前,通過(guò)對(duì)原SQL語(yǔ)句進(jìn)行無(wú)語(yǔ)義差別的變換,使得SQL語(yǔ)句更加簡(jiǎn)潔,方便后續(xù)組件更好的選擇執(zhí)行計(jì)劃。執(zhí)行計(jì)劃選擇是在當(dāng)前給定條件下盡力選擇最佳執(zhí)行路徑,而SQL重寫(xiě)、增加合適的索引則是為執(zhí)行計(jì)劃選擇創(chuàng)造更好物理?xiàng)l件。數(shù)據(jù)庫(kù)自身具有一定重寫(xiě)功能,因此SQL優(yōu)化建議也需要識(shí)別這些規(guī)則,并通過(guò)變換將查詢(xún)條件和實(shí)際庫(kù)表進(jìn)行關(guān)聯(lián)。下面舉個(gè)例子來(lái)說(shuō)明一下SQL 重寫(xiě)的原理:SQL在數(shù)據(jù)庫(kù)中的執(zhí)行路徑往往和開(kāi)發(fā)人員在寫(xiě)的結(jié)構(gòu)不太相同,比如開(kāi)發(fā)人員看到的如下SQL語(yǔ)句:

如何深入揭秘DBbrain智能優(yōu)化引擎

在數(shù)據(jù)庫(kù)中的視圖卻是如下的執(zhí)行流程:

如何深入揭秘DBbrain智能優(yōu)化引擎

DBbrain的SQL優(yōu)化功目的就是幫助數(shù)據(jù)庫(kù)尋找最佳執(zhí)行路徑,將其執(zhí)行路徑優(yōu)化成更為簡(jiǎn)潔和高效的視圖。從SQL解析上看,查詢(xún)條件字段"value"是和a關(guān)聯(lián),但a僅僅是子查詢(xún)的別名。從無(wú)語(yǔ)義差別的角度,該查詢(xún)條件是可以下推到子查詢(xún),和庫(kù)表dbbrain_1直接關(guān)聯(lián)。

如何深入揭秘DBbrain智能優(yōu)化引擎

但是數(shù)據(jù)庫(kù)自身重寫(xiě)功能通常具有片面性,實(shí)現(xiàn)并不完善。在某些特定場(chǎng)景下,顯示的更改SQL語(yǔ)句,可以大幅度提高執(zhí)行性能。比如:條件下推聚合子查詢(xún),exists變換為join,條件合并等。實(shí)現(xiàn)SQL變化的大前提條件是無(wú)語(yǔ)義差別的,保證查詢(xún)結(jié)果正確。這些變化是基于預(yù)先設(shè)定好的規(guī)則。

3.選擇度計(jì)算

條件選擇度計(jì)算是索引建議核心,它決定了索引字段順序以及驅(qū)動(dòng)表的選擇。條件字段的選擇度計(jì)算依賴(lài)于表的統(tǒng)計(jì)信息,并需要對(duì)庫(kù)表進(jìn)行數(shù)據(jù)抽樣。DBbrain會(huì)默認(rèn)隨機(jī)抽取200~1000條數(shù)據(jù)。這些數(shù)據(jù)是應(yīng)用了crc32函數(shù)的校驗(yàn)碼,避免獲取用戶(hù)原始數(shù)據(jù),用戶(hù)不必?fù)?dān)心數(shù)據(jù)安全問(wèn)題。

4.條件/子句檢查

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

5.SQL優(yōu)化建議生成

SQL優(yōu)化建議包括索引優(yōu)化建議和SQL重新優(yōu)化建議。

優(yōu)化前后的執(zhí)行計(jì)劃對(duì)比及效果評(píng)估

傳統(tǒng)的手動(dòng)優(yōu)化SQL,極度考驗(yàn)DBA的知識(shí)儲(chǔ)備和實(shí)戰(zhàn)經(jīng)驗(yàn)積累,優(yōu)化后一般只能通過(guò)explain的改變來(lái)預(yù)估SQL優(yōu)化效果,而大多數(shù)研發(fā)和運(yùn)維目前使用的市面上的SQL優(yōu)化工具更是只能根據(jù)理論分析得出優(yōu)化結(jié)果。這樣一來(lái)我們?nèi)绾?strong>精確驗(yàn)證SQL優(yōu)化的效果好壞?大多數(shù)情況下都只能通過(guò)執(zhí)行后觀察業(yè)務(wù)延遲的表象來(lái)判斷(也可以采用較為復(fù)雜的測(cè)試環(huán)境變更,旁路流量的方式驗(yàn)證),但這樣的驗(yàn)證方式不僅效率低下,而且在變更前、變更中、變更后均對(duì)數(shù)據(jù)庫(kù)性能存在極高的風(fēng)險(xiǎn)。

但這些已經(jīng)是過(guò)去式了,現(xiàn)在不用擔(dān)心啦!騰訊云數(shù)據(jù)庫(kù)DBbrain團(tuán)隊(duì)歷經(jīng)多年的技術(shù)探索和研發(fā)后,終于推出了業(yè)內(nèi)第一款基于執(zhí)行代價(jià)分析的SQL性能優(yōu)化效果對(duì)比功能,能夠在未執(zhí)行變更前對(duì)變更效果進(jìn)行預(yù)估,讓用戶(hù)能預(yù)知變更的優(yōu)化效果,更加放心的根據(jù)優(yōu)化建議進(jìn)行變更,同時(shí)也通過(guò)此類(lèi)技術(shù)的結(jié)果反饋不斷優(yōu)化自身SQL優(yōu)化引擎的精準(zhǔn)性。

在不更改用戶(hù)數(shù)據(jù)庫(kù)的前提下,DBbrain智能優(yōu)化引擎能夠?qū)o出的SQL優(yōu)化建議進(jìn)行效果評(píng)估。SQL代價(jià)估算引擎在該功能中起到主要作用。通過(guò)分析SQL相關(guān)庫(kù)表的統(tǒng)計(jì)信息、OPTIMIZER_SWITCH配置、以及索引字段區(qū)分度估算,對(duì)優(yōu)化后的SQL語(yǔ)句待機(jī)進(jìn)行整體代價(jià)估計(jì)。下面我們通過(guò)一個(gè)現(xiàn)網(wǎng)真實(shí)案例進(jìn)行展示:

1、優(yōu)化效果提前預(yù)知

DBbrain智能優(yōu)化引擎通過(guò)代價(jià)對(duì)比,直觀呈現(xiàn)出SQL優(yōu)化后降低99.19%的效果,也可通過(guò)優(yōu)化前后的執(zhí)行計(jì)劃比對(duì)進(jìn)一步驗(yàn)證優(yōu)化的效果

如何深入揭秘DBbrain智能優(yōu)化引擎

2、智能建議省時(shí)省力

DBbrain智能優(yōu)化引擎給出的SQL重寫(xiě)+增加索引相結(jié)合的建議對(duì)SQL進(jìn)行性能優(yōu)化

如何深入揭秘DBbrain智能優(yōu)化引擎

3、輔助用戶(hù)理解優(yōu)化

為了輔助用戶(hù)更好的理解優(yōu)化,DBbrain還提供表結(jié)構(gòu)信息的展示,讓信息更加直觀明了。

基于全量審計(jì)日志負(fù)載評(píng)估和優(yōu)化

一般對(duì)實(shí)際系統(tǒng)的優(yōu)化需要全局的把握,而不是僅僅針對(duì)有一個(gè)SQL語(yǔ)句,雖然增加索引可以提高查詢(xún)性能,但同時(shí)也會(huì)增加磁盤(pán)開(kāi)銷(xiāo),降低寫(xiě)入性能。針對(duì)不同SQL語(yǔ)句,可能給出針對(duì)某一個(gè)表的重復(fù)索引;同時(shí)我們還需要考慮SQL的執(zhí)行頻度,對(duì)系統(tǒng)的整體負(fù)載影響,有時(shí)候單個(gè)SQL的掃描行數(shù)不高,但是因頻率過(guò)高也會(huì)成為主要問(wèn)題點(diǎn)。

如何深入揭秘DBbrain智能優(yōu)化引擎

而DBbrain的評(píng)估優(yōu)化是基于全量審計(jì)日志的負(fù)載,實(shí)時(shí)計(jì)算SQL掃描行數(shù),定位主要問(wèn)題SQL語(yǔ)句并給出優(yōu)化建議,因此優(yōu)化是整體的,全方位的。

新功能速遞

最后,也為大家進(jìn)行一下DBbrain的新功能速遞。DBbrain正式發(fā)布新版,新功能包括:

1.全面支持只讀實(shí)例、災(zāi)備實(shí)例,涵蓋所有性能診斷和優(yōu)化功能;

2.新增多種主從復(fù)制故障、異常、隱患的排查和優(yōu)化;

3.全面優(yōu)化用戶(hù)體驗(yàn),提供“用戶(hù)級(jí)”和“實(shí)例級(jí)”功能;

  • 用戶(hù)級(jí)功能:實(shí)例概覽、實(shí)例管理(實(shí)例列表、告警匯總)、全實(shí)例監(jiān)控;

  • 實(shí)例級(jí)功能:異常診斷、實(shí)時(shí)會(huì)話、慢SQL分析、SQL優(yōu)化、空間分析、健康報(bào)告、審計(jì)日志分析。

4.SQL優(yōu)化能力持續(xù)升級(jí)。

看完上述內(nèi)容,你們對(duì)如何深入揭秘DBbrain智能優(yōu)化引擎有進(jìn)一步的了解嗎?如果還想了解更多知識(shí)或者相關(guān)內(nèi)容,請(qǐng)關(guān)注創(chuàng)新互聯(lián)-成都網(wǎng)站建設(shè)公司行業(yè)資訊頻道,感謝大家的支持。


分享名稱(chēng):如何深入揭秘DBbrain智能優(yōu)化引擎-創(chuàng)新互聯(lián)
網(wǎng)頁(yè)地址:http://weahome.cn/article/dhjddh.html

其他資訊

在線咨詢(xún)

微信咨詢(xún)

電話咨詢(xún)

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部