教程直播第7期|如何對 OceanBase 進行 SQL 診斷和調優
目前,資料庫是絕大多數應用系統儲存資料的主要工具。當使用者系統需要訪問資料庫時,需要使用 SQL 把應用的指令告訴資料庫。因此 SQL 是應用與資料庫系統“溝通”的重要手段,SQL 效能的好壞將直接影響“溝通”的效率,進一步地會影響到系統的使用者響應時間、系統吞吐量、IT 設定成本等。
那麼什麼是 SQL 診斷與調優?今天我們來告訴你。SQL 診斷就是透過一些技術手段來找出“溝通”效率不高的原因或潛在影響“溝通”效率的因素,例如發現執行效能不佳的 SQL、可能存在效能瓶頸的 SQL 等等。而 SQL 調優則是透過一系列的技術手段,來提高 SQL 的執行效率,解決 SQL 的效能瓶頸,從而達到提高應用與資料庫“溝通”效率的目的。
OceanBase 社群版教程直播第七期,將為你帶來 “SQL 診斷與調優”更多幹貨資訊。
驚喜直播預告
《如何對 OceanBase 效能診斷和調優》
1月25日(週二)19:30,OceanBase 社群版教程直播將迎來 第七期:如何對 OceanBase 效能診斷和調優。 本次直播,OceanBase 高階開發工程師義博將一次性為你講透關於“效能診斷和調優”的幾大知識點。
● 一條 SQL 從應用到 OceanBase 中執行經過了哪些流程?同一類 SQL 反覆執行 OceanBase 又會怎樣重用執行計劃?
● 如何使用 OceanBase 中的各種檢視來做 SQL 診斷?
● 對於一條慢 SQL,我們可以從哪些方面來最佳化它的執行效能?
以上內容將幫助你解決以下痛點:
● 想要對執行在 OceanBase 上的 SQL 進行診斷,但 OceanBase 提供的各種檢視讓人眼花繚亂,無從下手。
● 發現一條 SQL 在 OceanBase 上執行很慢,想要最佳化 SQL 的執行效能,卻無處下手
學完本期教程直播,你將能輕鬆應對以下問題:
● 如何利用 OceanBase 提供的各種檢視診斷 SQL。
● 如何使用一些常見的 SQL 調優手段來最佳化 SQL 在 OceanBase 中的執行效能。
01 為什麼要進行 SQL 診斷與調優
02 OceanBase SQL 診斷的常規手段
select t2.zone, t1.svr_ip, count(*) as QPSfrom oceanbase.gv$sql_audit t1, oceanbase.__all_server t2where t1.svr_ip = t2.svr_ip and t1.tenant_id = 1001and IS_EXECUTOR_RPC = 0 and request_time > (time_to_usec(now()) - 1000000)and request_time < time_to_usec(now())group by t1.svr_ip order by QPS;+---------------+----------------+------+| zone | svr_ip | QPS |+---------------+----------------+------+| cn-hangzhou-h | 192.168.14.60 | 705 || cn-hangzhou-i | 192.168.35.111 | 1485 || cn-hangzhou-h | 192.168.14.0 | 3119 || cn-hangzhou-i | 192.168.35.138 | 4959 |+---------------+----------------+------+
例二:找到某個時間段請求次數排在 TOP-N 的 SQL。
select SQL_ID, count(*) as QPS, avg(t1.elapsed_time) RTfrom oceanbase.gv$sql_audit t1where tenant_id = 1001 and IS_EXECUTOR_RPC = 0and request_time > (time_to_usec(now()) - 10000000)and request_time < time_to_usec(now())group by t1.sql_id order by QPS desc limit 10;+----------------------------------+------+------------+| SQL_ID | QPS | RT |+----------------------------------+------+------------+| BF7AA13A28DF50BA5C33FF19F1DBD8A9 | 2523 | 4233.2085 || CE7208ADDE365D0AB5E68EE24E5FD730 | 1268 | 5935.8683 || E5C7494018989226E69AE7D08B3D0F15 | 1028 | 7275.7490 || D0E8D8C937E44BC3BB9A5379AE1064C5 | 1000 | 12999.1640 || 2D45D7BE4E459CFBEAE4803971F0C6F9 | 1000 | 8050.6360 || C81CE9AA555BE59B088B379CC7AE5B40 | 1000 | 6865.4940 || BDC4FE903B414203A04E41C7DDA6627D | 1000 | 12751.8960 || B1B136047D7C3B6B9125F095363A9D23 | 885 | 13293.2237 || 47993DD69888868E92A7CAB2FDE65380 | 880 | 7282.0557 || 05C6279D767C7F212619BF4B659D3BAB | 844 | 11474.5438 |+----------------------------------+------+------------+
當然除了[G]V$SQL_AUDIT,OceanBase還提供了[G]V$PLAN_CACHE_PLAN_STAT、[G]V$PLAN_CACHE_PLAN_EXPLAIN等檢視用於 SQL 執行計劃的診斷。合理地使用這些檢視可以讓 SQL 診斷事半功倍。
03 OceanBase SQL 調優的常用手段
當我們發現某一條 SQL 存在效能問題時,我們可以透過很多方式對這條 SQL 進行最佳化,其中最常見的是索引調優。索引調優透過為資料表建立合適的索引來達到減少資料掃描量,消除排序等目的。索引調優是一種比較簡單的調優方式,也是 SQL 出現效能問題時通常在第一時間考慮的最佳化方式。在單表掃描場景下建立一個合適的索引往往可以極大地提高 SQL 的執行效能。
在建索引前,我們需要考慮是否有必要建索引、應該在哪些列上建索引、索引列的順序應該怎樣安排。
在建索引時,一個最基礎的策略是將存在等值條件的列放在索引的前面,將存在範圍條件的列放在索引的後面,有多個列上存在範圍條件時將過濾性強的列放在前面。例如一條 SQL 中存在三個過濾條件,分別是 a = 1、b > 0、c between 1 and 12。其中 b > 0 可以過濾掉30%的資料,c between 1 and 12 可以過濾掉90%的資料,那麼按照我們的基礎策略,對於這條 SQL 可以在 (a, c, b) 上建一個索引進行最佳化。當然這個基礎策略也不是萬能的,在實際最佳化時往往需要結合實際場景,具體問題具體分析。
除了索引調優外,還有連線調優、SQL 語句調優等多種調優手段,受於篇幅限制沒法詳細講解,更多詳細內容歡迎大家來收看 1月25日 19:30 OceanBase 社群版教程直播第七期: 如何對 OceanBase 進行 SQL 診斷和調優。
全面提升體系化資料管理能力 | OceanBase 釋出全新3.X工具家族
參與更多技術交流,請至 OceanBase 社群版 。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69909943/viewspace-2853860/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 教程直播第6期 | OceanBase 如何進行 Benchmark 測試及調優
- Java jvm 診斷調優JavaJVM
- MySQL效能診斷與調優MySql
- 使用SQL_TRACE進行資料庫診斷SQL資料庫
- 使用SQL_TRACE進行資料庫診斷(轉)SQL資料庫
- 使用SQL_TRACE進行資料庫診斷(1)SQL資料庫
- 使用SQL_TRACE進行資料庫診斷(2)SQL資料庫
- 使用SQL_TRACE進行資料庫診斷(zt)SQL資料庫
- 某公司oracle 效能調優診斷案例Oracle
- 轉載:使用SQL_TRACE進行資料庫診斷SQL資料庫
- 使用SQL_TRACE進行資料庫診斷(轉載)SQL資料庫
- Oracle效能優化視訊學習筆記-診斷和調優工具Oracle優化筆記
- 通過ADDM進行SQL調優SQL
- 透過ADDM進行SQL調優SQL
- 【DB】使用SQL_TRACE進行資料庫診斷跟蹤SQL資料庫
- 使用SQL_TRACE /10046進行資料庫診斷SQL資料庫
- 利用errorstack事件進行錯誤跟蹤和診斷Error事件
- 免費網站seo診斷:從哪些維度進行診斷呢?網站
- 【SQL_TRACE】SQL優化及效能診斷好幫手SQL優化
- 利用 Java dump 進行 JVM 故障診斷JavaJVM
- [平臺建設] Spark任務的診斷調優Spark
- 大廠是怎麼進行SQL調優的?SQL
- 使用sqld360進行特定SQL調優分析SQL
- SQL問題診斷SQL
- 使用 SOS 對 Linux 中執行的 .NET Core 進行問題診斷Linux
- 如何對分散式 NewSQL 資料庫 TiDB 進行效能調優分散式SQL資料庫TiDB
- 直播分享| 騰訊雲 MongoDB 智慧診斷及效能優化實踐MongoDB優化
- 使用SQL調整顧問進行語句優化SQL優化
- 如何透過鏈路追蹤進行定時任務診斷
- 案例 - EBS SQL效能診斷SQL
- 分析從管理員角度對Hadoop進行調優Hadoop
- MySQL索引和SQL調優MySql索引
- 使用ErrorStack進行錯誤跟蹤及診斷Error
- 使用ErrorStack進行錯誤跟蹤及診斷!Error
- 使用Dstat來進行Linux綜合效能診斷Linux
- Part II 診斷和優化資料庫效能優化資料庫
- 如何對蘋果Mac音量進行微調 mac音量微調技巧蘋果Mac
- Oracle診斷案例-Sql_traceOracleSQL