OceanBase SQL調(diào)優(yōu)概覽

2021-06-30 11:48 更新

SQL 調(diào)優(yōu)是指通過綜合分析 SQL 的執(zhí)行計(jì)劃、執(zhí)行監(jiān)控信息、系統(tǒng)配置、系統(tǒng)負(fù)載等多方面因素,調(diào)整 SQL 的執(zhí)行策略,以實(shí)現(xiàn)資源利用最大化。

SQL 調(diào)優(yōu)方式一般可分為單條 SQL 調(diào)優(yōu)和系統(tǒng) SQL 調(diào)優(yōu)。

單條 SQL 調(diào)優(yōu)

單一的 SQL 調(diào)優(yōu)的優(yōu)化主體是被調(diào)試的 SQL 執(zhí)行本身,一般調(diào)優(yōu)的目標(biāo)包括該 SQL 的執(zhí)行時(shí)間、試行期的資源消耗等。常見的調(diào)優(yōu)手段包括調(diào)整訪問路徑、執(zhí)行順序、邏輯改寫等。

針對單條 SQL 的執(zhí)行計(jì)劃性能調(diào)優(yōu)又可以分為單表訪問和多表訪問兩種場景。

場景

SQL 調(diào)優(yōu)的關(guān)注點(diǎn)

單表訪問

  • 訪問路徑是否開啟索引掃描:使用索引掃描可以減小數(shù)據(jù)的訪問量。

  • 是否創(chuàng)建合適的索引:使用索引排序以減少排序或聚合等耗時(shí)操作。

  • 分區(qū)裁剪是否正確:適當(dāng)?shù)姆謪^(qū)條件可以減少不必要的分區(qū)訪問。

  • 是否提高查詢的并行度:分區(qū)數(shù)目較多時(shí),通過提高并行度以更多資源的代價(jià)獲取單條 SQL 查詢的性能提升。

多表訪問

不僅要關(guān)注單表的 SQL 調(diào)優(yōu)問題,還要關(guān)注多表間的聯(lián)接問題:

  • 聯(lián)接順序

  • 聯(lián)接算法

  • 跨機(jī)或并行聯(lián)接的數(shù)據(jù)再分布方式

  • 查詢改寫

系統(tǒng)的 SQL 調(diào)優(yōu)

系統(tǒng)的 SQL 調(diào)優(yōu)的目的是提高整個(gè)系統(tǒng)的吞吐量或者系統(tǒng)利用率等。系統(tǒng)的 SQL 調(diào)優(yōu)過程往往需要結(jié)合多條 SQL 的執(zhí)行計(jì)劃,綜合分析當(dāng)前系統(tǒng)的負(fù)載特征,主要關(guān)注熱點(diǎn)行競爭、buffer cache 命中率等全局性的調(diào)優(yōu)點(diǎn)。

針對吞吐量的性能調(diào)優(yōu)主要是考慮在一定資源(CPU、IO、網(wǎng)絡(luò)等)情況下,將數(shù)據(jù)庫系統(tǒng)處理請求量最大化。主要關(guān)注以下幾個(gè)方面:

主要方法

說明

優(yōu)化慢 SQL

找到具體的慢 SQL 后,針對單條 SQL 進(jìn)行性能調(diào)優(yōu),請參見示例 查詢某段時(shí)間內(nèi)執(zhí)行時(shí)間排名 TOP N 的請求。

均衡 SQL 的請求流量資源

請參見示例 查看集群 SQL 請求流量是否均衡。

影響均衡的因素主要有:

  • ob_read_consistency 如何設(shè)置

  • Primary Zone 如何設(shè)置

  • Proxy 或 Java 客戶端路由策略相關(guān)設(shè)置

  • 業(yè)務(wù)熱點(diǎn)查詢分區(qū)是否均衡

均衡子計(jì)劃的 RPC 請求流量資源

請參見示例 查看分布式子計(jì)劃 RPC 執(zhí)行數(shù)是否均衡

影響子計(jì)劃請求是否均勻的主要因素如下:

  • OBServer 內(nèi)部路由策略相關(guān)設(shè)置

  • 業(yè)務(wù)熱點(diǎn)查詢的分區(qū)是否均衡


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號