一、幫助語句
SHOW HELP
SHOW HELP 語句旷痕,展示了DRDS 所有輔助SQL指令及其說明。
二、查看規(guī)則和節(jié)點拓?fù)漕愓Z句
SHOW RULE [FROM TABLE_NAME]
- show rule: 查看數(shù)據(jù)庫下每一個邏輯表拆分情況柒昏。
- show rule from table_name: 查看數(shù)據(jù)庫下指定邏輯表的拆分情況。
輸出信息列詳解:
- TABLE_NAME::邏輯表的名稱熙揍。
- BROADCAST:是否為廣播表(0否职祷、1是)。
- DB_PARTITION_KEY:分庫的拆分鍵届囚,沒有分庫的話有梆,值為空。
- DB_PARTITION_POLICY:分庫的拆分策略意系,取值包括哈夏嘁或YYYYMM、YYYYDD蛔添、YYYYWEEK等日期策略痰催。
- DB_PARTITION_COUNT:分庫數(shù),默認(rèn)是8迎瞧。
- TB_PARTITION_KEY:分表的拆分鍵夸溶,沒有分表的話,值為空凶硅。
- TB_PARTITION_POLICY:分表的拆分策略缝裁,取值包括哈希或MM足绅、DD捷绑、MMDD韩脑、WEEK等日期策略。
- TB_PARTITION_COUNT:分表數(shù)粹污。
SHOW FULL RULE[FORM TABLE_NAME]
查看數(shù)據(jù)庫下邏輯表的拆分規(guī)則段多,比SHOW FULE指令展示的信息更加詳細(xì)
輸出信息列詳解:
- TABLE_NAME:邏輯表的名稱。
- BROADCAST:是否為廣播表(0否壮吩、1是)衩匣。
- JOIN_GROUP:保留字段
- ALLOW_FULL_TABLE_SCAN:分庫分表在沒有指定分表鍵值的情況下是否允許查詢數(shù)據(jù),如果配置為true粥航,此時需要掃描每一個物理表來查找符合條件的數(shù)據(jù)琅捏,簡稱為全表掃描。
- DB_NAME_PATTERN:{}之間的0為占位符递雀,執(zhí)行具體的SQL時會被 DB_RULES_STR 計算出的值替代柄延,并保持位數(shù)。比如 DB_NAME_PATTERN 的值為 SEQ_{0000}_RDS缀程,DB_RULES_STR 的值為[1,2,3,4]搜吧,則會產(chǎn)生4個 DB_NAME,分別為 SEQ_0001_RDS杨凑、SEQ_0002_RDS滤奈、SEQ_0003_RDS、SEQ_0004_RDS撩满。
- DB_RULES_STR:具體的分庫規(guī)則蜒程。
- TB_NAME_PATTERN:TB_NAME_PATTERN 中 {} 之間的 0 為占位符,執(zhí)行具體的 SQL 時會被 TB_RULES_STR計算出的值替代伺帘,并保持位數(shù)昭躺。比如,TB_NAME_PATTERN 的值為 table_{00}伪嫁,TB_RULES_STR 的值為[1,2,3,4,5,6,7,8]领炫,則會產(chǎn)生8張表,分別為table_01张咳、table_02帝洪、table_03、table_04脚猾、table_05葱峡、table_06、table_07婚陪、table_08族沃。
- TB_RULES_STR:分表規(guī)則。
- PARTITION_KEYS:分庫和分表鍵集合泌参,對于既分庫又分表的情形脆淹,分庫鍵在前,分表鍵在后沽一。
- DEFAULT_DB_INDEX:單庫單表存放的分庫盖溺。
SHOW TOPOLOGY FROM TABLE_NAME
查看指定邏輯表的拓?fù)浞植迹故驹撨壿嫳肀4嬖谀男┓謳熘邢巢總€分庫下包含哪些分表烘嘱。
輸出信息列詳解:
- GROUP_NAME:物理庫的名稱。
- TABLE_NAME:物理表的名稱蝗蛙。
SHOW PARTITIONS FROM TABLE_NAME
查看分庫分表鍵集合蝇庭,分庫鍵和分表鍵之間用逗號分隔。如果最終結(jié)果有兩個值捡硅,說明是既分庫又分表的情形哮内,第一個是分庫鍵,第二個是分表鍵壮韭。如果結(jié)果只有一個值北发,說明是分庫不分表的情形,該值是分庫鍵喷屋。
SHOW BROADCASTS
查看廣播表列表琳拨。
SHOW DATASOURCES
查看底層存儲信息,包含數(shù)據(jù)庫名屯曹、數(shù)據(jù)庫分組名狱庇、連接信息、用戶名恶耽、底層存儲類型僵井、讀寫權(quán)重、連接池信息等驳棱。
輸出信息列詳解:
- SCHEMA:數(shù)據(jù)庫名
- GROUP:數(shù)據(jù)庫分組名批什,分組的目標(biāo)是管理多組數(shù)據(jù)完全相同的數(shù)據(jù)庫,比如通過 RDS進(jìn)行數(shù)據(jù)復(fù)制后的主備數(shù)據(jù)庫社搅。主要用來解決讀寫分離驻债,主備切換的問題。
- URL:底層 RDS的連接信息形葬。
- TYPE:底層存儲類型合呐,目前只支持 mysql
- READ_WEIGHT:讀權(quán)重,在主實例的讀壓力比較大的時候笙以,可以通過 DRDS 讀寫分離功能將讀流量進(jìn)行分流淌实,減輕 RDS 主實例的壓力。DRDS 會自動識別讀寫流量,引導(dǎo)寫流量進(jìn)入 RDS 主實例拆祈,讀流量則按配置的權(quán)重流向所有 RDS 實例恨闪。
- WRITE_WEIGHT:寫權(quán)重。
SHOW NODE
查看物理庫的讀寫次數(shù)(歷史累計數(shù)據(jù))放坏、讀寫權(quán)重(歷史累計數(shù)據(jù))咙咽。
輸出信息列詳解:
- NAME:數(shù)據(jù)庫名稱。
- MASTER_READ_COUNT:RDS 主實例處理的只讀查詢次數(shù)(歷史累計數(shù)據(jù))
- SLAVE_READ_COUNT:RDS 備實例處理的只讀查詢次數(shù)(歷史累計數(shù)據(jù))
- MASTER_READ_PERCENT:RDS 主實例處理的只讀查詢占比(注意該列顯示的是累計的實際數(shù)據(jù)占比淤年,并不是用戶配置的百分比)
- SLAVE_READ_PERCENT:RDS 備實例處理的只讀查詢占比(注意該列顯示的是累計的實際數(shù)據(jù)占比钧敞,并不是用戶配置的百分比)
注意:
事務(wù)中的只讀查詢會被發(fā)送到 RDS 主實例。
由于 MASTER_READ_PERCENT麸粮,SLAVE_READ_PERCENT 這兩列代表的是歷史累計數(shù)據(jù)溉苛,更改讀寫權(quán)重的配比后,這幾個數(shù)值并不能立即反應(yīng)最新的讀寫權(quán)重配比弄诲,需累計一段比較長的時間才行愚战。
三、SQL 調(diào)優(yōu)類語句
SHOW [FULL] SLOW [WHERE expr] [limit expr]
執(zhí)行時間超過 1 秒的 SQL 語句是慢 SQL威根,邏輯慢 SQL 是指應(yīng)用發(fā)送到 DRDS 的慢 SQL凤巨。
SHOW SLOW
查看自DRDS啟動或者自上次執(zhí)行CLEAR SLOW以來最慢的 100 條邏輯慢 SQL(注意,這里記錄的是最慢的 100 個洛搀,緩存在 DRDS 系統(tǒng)中敢茁,當(dāng)實例重啟或者執(zhí)行 CLEAR SLOW 時會丟失)。
SHOW FULL SLOW
查看自實例啟動以來記錄的所有邏輯慢 SQL(持久化到 DRDS 的內(nèi)置數(shù)據(jù)庫中)留美。該記錄數(shù)有一個上限(具體數(shù)值跟購買的實例規(guī)格相關(guān))彰檬,DRDS 會滾動刪除比較老的慢 SQL 語句。實例的規(guī)格如果是4C4G 的話谎砾,最多記錄 10000 條慢 SQL 語句(包括邏輯慢 SQL 和 物理慢 SQL兩種)逢倍;實例的規(guī)格如果是 8C8G的話,最多記錄 20000 條慢 SQL 語句(包括邏輯慢 SQL 和 物理慢 SQL)景图,其它規(guī)格依此類推较雕。
輸出信息列詳解:
- HOST:來源 IP
- START_TIME:執(zhí)行開始時間
- EXECUTE_TIME:執(zhí)行時間
- AFFECT_ROW:對于 DML 語句是影響行數(shù);對于查詢語句是返回的記錄數(shù)
show slow where execute_time > 1000
3.1 排查 DRDS 慢 SQL
在 DRDS 中挚币,一條 SQL 語句會在 DRDS 和 RDS 節(jié)點上逐步執(zhí)行亮蒋。任意節(jié)點上的執(zhí)行損耗過大都會導(dǎo)致慢SQL。
慢 SQL 的一般排查步驟為:
定位慢 SQL
定位性能損耗節(jié)點
定位性能損耗原因并處理
3.2 定位慢 SQL
定位慢 SQL 一般有兩種場景:歷史信息可從慢 SQL 記錄中查詢妆毕;實時慢 SQL 執(zhí)行信息可使用 SHOW PROCESSLIST 指令展示慎玖。
查看慢 SQL 記錄
執(zhí)行以下指令查詢慢 SQL Top 10。此查詢針對 DRDS 層面的邏輯 SQL 笛粘。一個邏輯 SQL 對應(yīng)一個或者多個RDS 庫表的 SQL 執(zhí)行趁怔。
SHOW SLOW limit 10
查看當(dāng)前實時 SQL 執(zhí)行信息
如果當(dāng)前服務(wù)器中正在執(zhí)行的 SQL 比較慢湿硝,可以使用 SHOW PROCESSLIST 指令來查看當(dāng)前 DRDS 數(shù)據(jù)庫中實時的執(zhí)行信息。其中 TIME 列代表的是該 SQL 已經(jīng)執(zhí)行的時間润努。
SHOW PROCESSLIST WHERE COMMAND != 'Sleep'
輸出信息列詳解:
- ID:連接標(biāo)識关斜。
- USER:執(zhí)行該 SQL 的分庫用戶名。
- DB:指定的數(shù)據(jù)庫任连,如果沒有指定則為 NULL蚤吹。
- COMMAND:正在執(zhí)行的命令類型例诀。SLEEP 代表空閑連接随抠。
- TIME:SQL 已執(zhí)行的時間,單位是秒繁涂。
- STATE:當(dāng)前的執(zhí)行狀態(tài)拱她。
- INFO:正在執(zhí)行的 SQL 語句,有可能因為過長而無法完全顯示扔罪,此時可以結(jié)合業(yè)務(wù)參數(shù)等信息把完整 SQL推導(dǎo)出來秉沼。
3.3 定位性能損耗節(jié)點
從慢 SQL 記錄或者實時 SQL 執(zhí)行信息中定位到慢 SQL 后,可以執(zhí)行 TRACE 指令跟蹤該 SQL 在 DRDS 和RDS 上的運行時間矿酵,以便定位瓶頸唬复。TRACE 命令會實際執(zhí)行 SQL,在執(zhí)行過程中記錄所有節(jié)點消耗的時間全肮,并返回執(zhí)行結(jié)果敞咧。
TRACE SELECT SQL_STATEMENT
TRACE 指令執(zhí)行完畢后,可以執(zhí)行 SHOW TRACE 命令查看結(jié)果辜腺,根據(jù)每個組件的時間消耗來判斷慢 SQL 的瓶頸休建。
SHOW TRACE
SHOW TRACE 返回的結(jié)果中,根據(jù) TIME_COST (單位毫秒)列可以判斷哪個節(jié)點上的執(zhí)行時間消耗大评疗。同時可以看到對應(yīng)的 GROUP_NAME (即 DRDS/RDS 節(jié)點)测砂,以及 STATEMENT 列信息(即正在執(zhí)行的 SQL)。通過GROUP_NAME 是否等于 DRDS 可以判斷該慢節(jié)點存在于 DRDS 還是 RDS百匆。
3.4 定位性能損耗原因并處理
DRDS 慢節(jié)點處理
當(dāng)慢 GROUP_NAME 是 DRDS 時砌些,請檢查執(zhí)行過程中是否存在 Merge Sorted、Temp Table Merge加匈、Aggregate等計算耗時操作存璃。
RDS 慢節(jié)點處理
當(dāng)慢節(jié)點在 RDS 時,請檢查該 SQL 語句在 RDS 上的執(zhí)行計劃矩动。
在 DRDS 中有巧,可以使用 /!TDDL:node={GROUP_NAME}*/ EXPLAIN 來查看某個 RDS 的執(zhí)行計劃。執(zhí)行計劃展示了 RDS 執(zhí)行該 SQL 的過程信息悲没,包括表間關(guān)聯(lián)及索引信息等篮迎。
詳細(xì)過程如下:
依據(jù) GROUP_NAME 組裝 HINT:/!TDDL:node=’TEST_123__TEST_123__RDS’*/
將組裝好的 HINT 及帶 EXPLAIN 前綴的 STATEMENT 拼裝成新的 SQL 并執(zhí)行男图。EXPLAIN 指令不會真正執(zhí)行,而只是顯示該 SQL 的執(zhí)行計劃信息甜橱。
SHOW [FULL] PHYSICAL_SLOW [WHERE expr] [limit expr]
執(zhí)行時間超過1秒的 SQL 語句是慢 SQL逊笆,物理慢 SQL 是指 DRDS 發(fā)送到 RDS 的慢 SQL
SHOW PHYSICAL_SLOW
查看自 DRDS 啟動或者上次執(zhí)行CLEAR SLOW以來最慢的 100 條物理慢 SQL(注意,這里記錄的是最慢的100 個岂傲,緩存在 DRDS 系統(tǒng)中难裆,當(dāng)實例重啟或者執(zhí)行 CLEAR SLOW 時會丟失)
SHOW FULL PHYSICAL_SLOW
查看實例啟動以來記錄的所有物理慢 SQL(持久化到 DRDS 的內(nèi)置數(shù)據(jù)庫中)。該記錄數(shù)有一個上限(具體數(shù)值跟購買的實例規(guī)格相關(guān))镊掖,DRDS 會滾動刪除比較老的慢 SQL 語句乃戈。實例的規(guī)格如果是 4C4G 的話,最多記錄 10000 條慢 SQL 語句(包括邏輯慢 SQL 和 物理慢 SQL)亩进;實例的規(guī)格如果是 8C8G 的話症虑,最多記錄20000 條慢 SQL 語句(包括邏輯慢 SQL 和 物理慢 SQL),其它規(guī)格依此類推
輸出信息列詳解:
- GROUP_NAME:數(shù)據(jù)庫分組归薛。
- START_TIME:執(zhí)行開始時間谍憔。
- EXECUTE_TIME:執(zhí)行時間。
- AFFECT_ROW:對于 DML 語句是影響行數(shù)主籍;對于查詢語句是返回的記錄數(shù)习贫。
CLEAR SLOW
清空自 DRDS 啟動或者上次執(zhí)行CLEAR SLOW以來最慢的 100 條邏輯慢 SQL 和 最慢的 100 條物理慢 SQL。注意:SHOW SLOW 和 SHOW PHYSICAL_SLOW展示的是最慢的100個 SQL千元,如果長時間未執(zhí)行CLEAR SLOW苫昌,可能都是非常老的 SQL 了,一般執(zhí)行過 SQL 優(yōu)化之后诅炉,建議都執(zhí)行下CLEAR SLOW蜡歹,等待系統(tǒng)運行一段時間,再查看下慢 SQL 的優(yōu)化效果涕烧。
EXPLAIN DETAIL SQL
查看指定 SQL 在 DRDS 層面的執(zhí)行計劃月而,注意這條 SQL 不會實際執(zhí)行。
EXPLAIN EXECUTE SQL
查看底層存儲的執(zhí)行計劃议纯,等同于 MYSQL 的 EXPLAIN 語句父款。
TRACE SQL 和 SHOW TRACE
查看具體 SQL 的執(zhí)行情況。TRACE [SQL] 和 SHOW TRACE 要結(jié)合使用瞻凤。注意 TRACE SQL 和 EXPLAIN SQL 的區(qū)別在于 TRACE SQL 會實際執(zhí)行該語句憨攒。
CHECK TABLE table_name
對數(shù)據(jù)表進(jìn)行檢查。主要用于 DDL 建表失敗的情形阀参。
對于拆分表肝集,檢查底層物理分表是否有缺失的情況,底層的物理分表的列和索引是否是一致蛛壳。
對于單庫單表杏瞻,檢查表是否存在所刀。
SHOW TABLE STATUS LIKE ‘pattern’
獲取表的信息,該指令聚合了底層各個物理分表的數(shù)據(jù)捞挥。
重要列詳解:
- NAME:表名稱浮创。
- ENGINE:表的存儲引擎。
- VERSION:表的存儲引擎的版本砌函。
- ROW_FORMAT:行格式斩披,主要是 Dynamic、Fixed讹俊、Compressed 這三種格式垦沉。動態(tài)(Dynamic)行的行長度可變,例如 VARCHAR 或 BLOB 類型字段劣像;固定(Fixed)行是指行長度不變乡话,例如 CHAR 和 INTEGER 類型字段摧玫。
- ROWS:表中的行數(shù)耳奕。
- AVG_ROW_LENGTH:平均每行包括的字節(jié)數(shù)。
- DATA_LENGTH:整個表的數(shù)據(jù)量(單位:字節(jié))诬像。
- MAX_DATA_LENGTH:表可以容納的最大數(shù)據(jù)量屋群。
- INDEX_LENGTH:索引占用磁盤的空間大小。
- CREATE_TIME:表的創(chuàng)建時間坏挠。
- UPDATE_TIME:表的最近更新時間芍躏。
- COLLATION:表的默認(rèn)字符集和字符排序規(guī)則。
- CREATE_OPTIONS:指表創(chuàng)建時的其他所有選項降狠。
四对竣、統(tǒng)計信息查詢類語句
SHOW [FULL] STATS
查看整體的統(tǒng)計信息,這些信息都是瞬時值榜配。注意不同版本的 DRDS SHOW FULL STATS的結(jié)果是有區(qū)別的否纬。
重要列說明:
- QPS:邏輯 QPS。
- RDS_QPS:物理 QPS蛋褥。
- ERROR_PER_SECOND:每秒的錯誤數(shù)临燃,包含語法錯誤,主鍵沖突等等所有異常烙心。
- VIOLATION_PER_SECOND:每秒的主鍵或者唯一鍵沖突膜廊。
- MERGE_QUERY_PER_SECCOND:通過分庫分表,從多表中進(jìn)行的查詢淫茵。
- ACTIVE_CONNECTIONS:正在使用的連接爪瓜。
- CONNECTION_CREATE_PER_SECCOND:每秒創(chuàng)建的連接數(shù)。
- RT(MS):邏輯 RT(響應(yīng)時間)匙瘪。
- RDS_RT(MS):物理 RT铆铆。
- NET_IN(KB/S):DRDS 收到的網(wǎng)絡(luò)流量炬转。
- NET_OUT(KB/S):DRDS 輸出的網(wǎng)絡(luò)流量。
- THREAD_RUNNING:正在運行的線程數(shù)算灸。
- HINT_USED_PER_SECOND:每秒帶 HINT 的查詢的數(shù)量扼劈。
- HINT_USED_COUNT:啟動到現(xiàn)在帶 HINT 的查詢總量。
- AGGREGATE_QUERY_PER_SECCOND:每秒聚合查詢的頻次菲驴。
- AGGREGATE_QUERY_COUNT:聚合查詢總數(shù)(歷史累計數(shù)據(jù))荐吵。
- TEMP_TABLE_CREATE_PER_SECCOND:每秒創(chuàng)建的臨時表的數(shù)量。
- TEMP_TABLE_CREATE_COUNT:啟動到現(xiàn)在創(chuàng)建的臨時表總數(shù)量赊瞬。
- MULTI_DB_JOIN_PER_SECCOND:每秒跨庫 JOIN 的數(shù)量先煎。
- MULTI_DB_JOIN_COUNT:啟動到現(xiàn)在跨庫 JOIN 的總量。
SHOW DB STATUS
用于查看物理庫容量/性能信息巧涧,所有返回值為實時信息薯蝎。容量信息通過 MySQL 系統(tǒng)表獲得,與真實容量情況可能有差異谤绳。
重要列說明:
- NAME: 代表一個 DRDS DB占锯,此處顯示的是 DRDS 內(nèi)部標(biāo)記,與 DRDS DB 名稱不同缩筛。
- CONNECTION_STRING: 分庫的連接信息消略。
- PHYSICAL_DB: 分庫名稱,TOTAL 行代表一個數(shù)據(jù)庫實例下所有 DRDS 分庫容量的總和瞎抛。
- SIZE_IN_MB: 分庫中數(shù)據(jù)占用的空間艺演,單位為 MB。
- RATIO: 單個分庫數(shù)據(jù)量在實例上所有分庫總數(shù)據(jù)量中的占比桐臊。
- THREAD_RUNNING: 物理數(shù)據(jù)庫實例當(dāng)前正在執(zhí)行的線程情況胎撤,各個參數(shù)含義與 MySQL SHOW GLOBAL STATUS 指令返回值的含義相同。
五断凶、SHOW PROCESSLIST 指令與 KILL 指令
SHOW PROCESSLIST
DRDS 中伤提,可以使用 SHOW PROCESSLIST 指令查看 DRDS 中的連接與正在執(zhí)行的 SQL 等信息。
重要列說明:
- ID:連接的 ID懒浮,為一個 Long 型數(shù)字飘弧。
- USER:建立此連接所使用的用戶名。
- HOST:建立此連接的機器的 IP 與端口砚著。
- DB:此連接所訪問的庫名次伶。
- COMMAND,目前有兩種取值:Query稽穆,代表當(dāng)前連接正在執(zhí)行 SQL 語句冠王。Sleep,代表當(dāng)前連接正處于空閑狀態(tài)舌镶。TIME柱彻, 連接處于當(dāng)前狀態(tài)持續(xù)的時間:當(dāng) COMMAND 為 Query 時豪娜,代表當(dāng)此連接上正在執(zhí)行的 SQL 已經(jīng)執(zhí)行的時間。當(dāng) COMMAND 為 Sleep 時哟楷,代表當(dāng)此連接空閑的時間瘤载。STATE:目前無意義,恒為空值卖擅。
- INFO:當(dāng) COMMAND 為 Query 時鸣奔,為此連接上正在執(zhí)行的 SQL 的內(nèi)容。當(dāng)不帶 FULL 參數(shù)時惩阶,最多返回正在執(zhí)行的 SQL 的前 30 個字符挎狸。當(dāng)帶 FULL 參數(shù)時,最多返回正在執(zhí)行的 SQL 的前1000個字符断楷。當(dāng) COMMAND 為其他值時锨匆,無意義,為空值冬筒。
SHOW PHYSICAL_PROCESSLIST
DRDS 中恐锣,可以使用 SHOW PHYSICAL_PROCESSLIST 指令查看底層所有 MySQL/RDS 上正在執(zhí)行的 SQL 信息。
語法:
SHOW [FULL] PHYSICAL_PROCESSLIST
當(dāng) SQL 比較長的時候账千,SHOW PHYSICAL_PROCESSLIST 會截斷侥蒙,這時可以使用 SHOW FULL PHYSICAL_PROCESSLIST 獲取完整 SQL。
返回結(jié)果中每一列的含義與 MySQL 的 SHOW PROCESSLIST 指令等價匀奏。
KILL
KILL 指令用于終止一個正在執(zhí)行的 SQL。
DRDS 使用 DRDS 在 MySQL/RDS 上創(chuàng)建的用戶名連接 MySQL/RDS学搜,所以一般直接連接MySQL/RDS 是沒有權(quán)限對 DRDS 發(fā)起的請求進(jìn)行 KILL 操作的娃善。
如果需要終止一個 DRDS 上正在執(zhí)行的 SQL,需要使用 MySQL 命令行瑞佩、DMS 等工具連接 DRDS聚磺,在 DRDS上執(zhí)行 KILL 指令
語法:
KILL PROCESS_ID | 'PHYSICAL_PROCESS_ID' | 'ALL'
有三種用法:
終止一個特定的邏輯 SQL: KILL PROCESS_ID。
PROCESS_ID 為 SHOW [FULL] PROCESSLIST 指令返回的 ID 列炬丸。
DRDS 中瘫寝,KILL PROCESS_ID 指令會將此連接正在執(zhí)行的邏輯 SQL 與物理 SQL 均終止掉,并斷開此連接稠炬。
DRDS 不支持 KILL QUERY 指令焕阿。
終止一個特定的物理 SQL: KILL 'PHYSICAL_PROCESS_ID'。
其中的 PHYSICAL_PROCESS_ID 來自SHOW PHYSICAL_PROCESS_ID指令返回的 ID 列首启。
注意:由于 PHYSICAL_PROCESS_ID 列為一個字符串暮屡,并非一個數(shù)字,因此 KILL 指令中毅桃,PHYSICAL_PROCESS_ID 需要使用單引號括起來褒纲。
終止當(dāng)前庫上所有通過 DRDS 執(zhí)行的物理SQL: KILL 'ALL'准夷。
當(dāng)?shù)讓?MySQL/RDS 因為一些 SQL 導(dǎo)致壓力非常大的時候,可以使用 KILL 'ALL' 指令終止當(dāng)前 DRDS 庫上所有正在執(zhí)行的物理 SQL莺掠。
符合以下條件的物理 PROCESS 會被KILL 'ALL'指令終止:
該 PROCESS 的 User 是 DRDS 在 MySQL/RDS 上所創(chuàng)建的用戶名衫嵌。
該 PROCESS 正在執(zhí)行查詢,也即 COMMAND 為 Query彻秆。
六渐扮、DRDS 慢SQL明細(xì)
DRDS 將執(zhí)行時間超過1秒的 SQL 定義為慢 SQL。DRDS 中的慢 SQL 分為兩種:邏輯慢 SQL 和 物理慢SQL掖棉。
邏輯慢 SQL:應(yīng)用發(fā)送到 DRDS 的 慢SQL墓律。
物理慢 SQL:DRDS 發(fā)送到 RDS 的 慢SQL。
實例規(guī)格為 2C2G 的實例會記錄 5000 條慢 SQL 明細(xì)幔亥,實例規(guī)格為 4C4G 的實例耻讽,會記錄 10000 條慢 SQL明細(xì)。DRDS 會滾動刪除超過限制數(shù)量的慢 SQL 明細(xì)帕棉。
語法:
SHOW FULL {SLOW | PHYSICAL_SLOW} [WHERE where_condition]
[ORDER BY col_name [ASC | DESC], ...]
[LIMIT {[offset,] row_count | row_count OFFSET offset}]
解釋
SHOW FULL SLOW顯示的是邏輯慢 SQL针肥,即應(yīng)用發(fā)送到 DRDS 的 SQL。
其中SHOW FULL SLOW的結(jié)果集會包含以下列香伴,其含義如下:
TRACE_ID: 該 SQL 的唯一標(biāo)記慰枕,同一個邏輯 SQL 以及該邏輯 SQL 產(chǎn)生的物理 SQL 的 TRACE_ID 相同,同時TRACE_ID 也會以注釋的形式發(fā)送到 RDS即纲,在 RDS 的 SQL 明細(xì)中可以根據(jù) TRACE_ID 找到該 SQL具帮。
HOST: 發(fā)送該 SQL 的客戶端的 IP,注意:在 VPC 模式下可能無法獲取客戶端 IP低斋。
START_TIME: DRDS 收到這個 SQL 的時間蜂厅。
EXECUTE_TIME: DRDS 執(zhí)行該 SQL 消耗的時間。
AFFECT_ROW: 該 SQL 返回的記錄數(shù)或者影響的行數(shù)膊畴。
SQL: 執(zhí)行的語句掘猿。
SHOW FULL PHYSICAL_SLOW指的是物理慢 SQL,即 DRDS 發(fā)送到 RDS(MySQL) 的 SQL唇跨。
SHOW FULL PHYSICAL_SLOW 的結(jié)果集會包含以下列稠通,其含義如下:
TRACE_ID: 該 SQL 的唯一標(biāo)記,同一個邏輯 SQL 以及該邏輯 SQL 產(chǎn)生的物理 SQL 的 TRACE_ID 相同买猖,同時 TRACE_ID 也會以注釋的形式發(fā)送到 RDS改橘,在 RDS 的 SQL 明細(xì)中可以根據(jù) TRACE_ID 找到該 SQL。
GROUP_NAME: 數(shù)據(jù)庫分組名政勃,分組的目標(biāo)是管理多組數(shù)據(jù)完全相同的數(shù)據(jù)庫唧龄,比如通過 RDS(MySQL)進(jìn)行數(shù)據(jù)復(fù)制后的主備數(shù)據(jù)庫,主要用來解決讀寫分離,主備切換的問題既棺。
DBKEY_NAME: 執(zhí)行的分庫信息讽挟。
START_TIME: DRDS 開始執(zhí)行這個 SQL 的時間。
EXECUTE_TIME: DRDS 執(zhí)行該 SQL 消耗的時間丸冕。
SQL_EXECUTE_TIME: DRDS 調(diào)用 RDS 執(zhí)行該 SQL 消耗的時間耽梅。
GETLOCK_CONNECTION_TIME: DRDS 從連接池獲取連接消耗的時間,該值如果很大胖烛,說明 RDS 的連接已被耗盡眼姐,一般是慢 SQL 比較多引起,登錄到相應(yīng)的 RDS佩番,結(jié)合SHOW PROCESSLIST指令來排查众旗。
CREATE_CONNECTION_TIME: DRDS 建立 RDS 連接消耗的時間,該值如果很大趟畏,很大原因是底層的 RDS 壓力比較大或者掛掉了贡歧。
AFFECT_ROW: 該 SQL 返回的記錄數(shù)或者影響的行數(shù)。
SQL: 執(zhí)行的語句赋秀。