課程簡介
本課程是基于金融行業(yè)技術(shù)實踐和業(yè)務(wù)應(yīng)用場景,結(jié)合當(dāng)前企業(yè)級應(yīng)用場景進(jìn)行綜合性課程設(shè)計。從專業(yè)知識,專業(yè)技能,通用技能多維度全面培養(yǎng)數(shù)據(jù)庫優(yōu)化人才的的綜合能力。
目標(biāo)收益
基于金融行業(yè)大規(guī)模應(yīng)用為基礎(chǔ)的真實架構(gòu)案例驅(qū)動教學(xué);
大規(guī)模分布式/國產(chǎn)化數(shù)據(jù)庫架構(gòu)設(shè)計與真實案例實踐;
構(gòu)筑頂級能力維度模型,帶你快速成長為數(shù)據(jù)化轉(zhuǎn)型所需的復(fù)合型人才。
培訓(xùn)對象
研發(fā)人員 數(shù)據(jù)庫工程師等
課程大綱
SQL優(yōu)化本質(zhì)和優(yōu)化技術(shù)(一方面闡述分布式數(shù)據(jù)庫架構(gòu)特點(diǎn)和優(yōu)化理論,另一方面著重分析幾款分布式數(shù)據(jù)庫技術(shù)共同點(diǎn)和不同點(diǎn)(通過案例分析講解);3小時 |
?理解SQL在分布式數(shù)據(jù)庫下查詢的工作原理 ?SQL查詢的執(zhí)行過程 ?分布式數(shù)據(jù)庫引擎解析、執(zhí)行SQL語句 ?SQL優(yōu)化本質(zhì)和優(yōu)化技術(shù) ?數(shù)據(jù)訪問方式效率的對比:全表掃描與索引掃描 ?多表連接的執(zhí)行計劃、適用場景與優(yōu)劣勢 ?嵌套循環(huán) ?合并連接 ?哈希連接 ?三種表連接案例講解(從業(yè)務(wù)場景分析) ?分析和診斷SQL查詢性能 ?SQL調(diào)優(yōu)方法論-執(zhí)行計劃深度分析 ?從案例中辨別低效執(zhí)行計劃 ?優(yōu)化SQL查詢語句 ?選擇合適的連接類型 ?避免使用子查詢、改用連接Join(那些場景下) ?避免使用復(fù)雜的查詢(多表關(guān)聯(lián)性能為什么差) ?索引技術(shù):應(yīng)用場景以及對業(yè)務(wù)數(shù)據(jù)查詢的影響 ?索引類型和工作原理 ?分析索引覆蓋 ?避免過度索引 ?定期維護(hù)索引 ?案例講解 ?索引碎片導(dǎo)致執(zhí)行計劃問題分析和解決 ?理解SQL的執(zhí)行過程與性能瓶頸 ?并發(fā)控制和鎖的實現(xiàn)方式 ?理解分布式數(shù)據(jù)庫并發(fā)機(jī)制 ?隔離級別對分布式數(shù)據(jù)庫影響 ?減少鎖的競爭,優(yōu)化事務(wù)的粒度 ?樂觀鎖實現(xiàn)策略(那些場景使用) 針對不同數(shù)據(jù)庫特定優(yōu)化策略 |
SQL性能瓶頸分析和解決(通過執(zhí)行計劃分解不同分布式數(shù)據(jù)庫使用方式,能快速掌握分析辨識低效的SQL執(zhí)行問題癥狀) 3小時 |
?SQL性能問題定位以及性能問題來源 ?用戶SQL寫法 - 遵循開發(fā)規(guī)約 ?代價模型缺陷 - 執(zhí)行計劃 ?統(tǒng)計信息不準(zhǔn)確 ?數(shù)據(jù)庫物理設(shè)計:決定查詢性能 ?系統(tǒng)負(fù)載:影響整體吞吐率,影響單sql rt ?客戶端路由 - 遠(yuǎn)程執(zhí)行 ?SQL調(diào)優(yōu)方法 ?針對單條 SQL 執(zhí)行的性能調(diào)優(yōu) ?單表訪問場景:索引、排序或聚合、分區(qū)、分布式并行 ?多表訪問場景:連接順序、連接算法、分布式并行、 查詢改寫 ?針對吞吐量的性能優(yōu)化 ?優(yōu)化慢SQL ?均衡SQL的請求流量資源 ?如何通過執(zhí)行計劃字段辨識低效的SQL ?查看各階段耗時 ?調(diào)優(yōu)基本流程分析步驟 ?通過全局SQL審計表、 SQL Trace 、Profile等查看SQL 執(zhí)行信息 ,初步查找SQL請求的流程中導(dǎo)致耗時或消耗資源(如內(nèi)存、 磁盤IO等)的 SQL ?單條SQL的執(zhí)行性能往往與該SQL的執(zhí)行計劃相關(guān),執(zhí)行計劃的分析是最重要的手段。通過執(zhí)行EXPALIN命令查看優(yōu)化器針對給定 SQL 生成的邏輯執(zhí)行計劃 ,確定可能的調(diào)優(yōu)方向 ?找到具體的慢SQL,為了使某些 SQL 的執(zhí)行時間或資源消耗符合預(yù)期 , 常見的優(yōu)化方式如下: ?對SQL做等價改寫生成最佳執(zhí)行計劃 針對多表訪問的SQL,還需要關(guān)注多表間的聯(lián)接問題 , 通過優(yōu)化訪問路徑、聯(lián)接順序和聯(lián)接算法等實現(xiàn)查詢優(yōu)化 |
優(yōu)化實踐(通過金融客戶某業(yè)務(wù)系統(tǒng),針對調(diào)優(yōu)方式進(jìn)行綜合闡述,并模擬相關(guān)案例進(jìn)行輸出說明) 2小時 |
?實際案例講解 ?分布式兼容與限制 ?分布式表連接 ?分布式事務(wù) ?部署服務(wù)器需要注意的事項總結(jié) ?最佳實踐 ?Explain解讀 ?Trace信息 ?分布式更新操作原理 ?跨節(jié)點(diǎn)分布式查詢優(yōu)化 ?邏輯優(yōu)化、條件下推、隔離 ?引擎如何優(yōu)雅處理海量SQL邏輯 ?分布式事務(wù)實現(xiàn) ?優(yōu)化實踐 ?數(shù)據(jù)庫優(yōu)化方法論 ?全鏈路性能調(diào)優(yōu)實戰(zhàn) ?業(yè)務(wù)模型優(yōu)化 ?先整體再局部 ?先解阻塞性問題 ?熱點(diǎn)SQL優(yōu)化 ?慢SQL優(yōu)化 ?減少數(shù)據(jù)訪問次數(shù)(減少磁盤訪問) ?返回更少數(shù)據(jù)(減少網(wǎng)絡(luò)傳輸或磁盤訪問) ?減少交互次數(shù)(減少網(wǎng)絡(luò)傳輸) ?減少服務(wù)器CPU開銷 ?利用更多資源(增加資源) ?聯(lián)接順序 ?索引回表 ?分區(qū)表性能診斷 ?數(shù)據(jù)表優(yōu)化 ?核心數(shù)據(jù)表設(shè)計 ?字段類型設(shè)計 ?對表邏輯更新 ?添加創(chuàng)建和修改時間列 ?樂觀鎖還是悲觀鎖,選擇依據(jù)是什么 ?如何查找慢查詢:為什么會對業(yè)務(wù)造成危害 ?優(yōu)化大表總要性:多大是最優(yōu)的 ?為什么不要使用大字段類型 ?為什么要限制DML操作的數(shù)據(jù)大小 ?綜合優(yōu)化案例講解和使用 ?構(gòu)造一個復(fù)雜的查詢SQL(如包含多表關(guān)聯(lián)、子查詢、cte、filesort、臨時表等),講解分析方法、SQL改寫方法 ?SQL優(yōu)化案例實踐 ?條件查詢索引選擇性導(dǎo)致查詢慢 統(tǒng)計信息過期或數(shù)據(jù)空快碎片多導(dǎo)致執(zhí)行計劃?錯誤 ?阻塞、死鎖引發(fā)SQL超時 ?模擬數(shù)據(jù)庫樂觀鎖實現(xiàn)機(jī)制,提高并發(fā)和吞吐量 ?分頁查詢?nèi)绾翁岣咝阅?br/>?非分片鍵查詢引發(fā)SQL性能問題 ?分布式數(shù)據(jù)庫查詢數(shù)據(jù)優(yōu)化(流式處理模型和通用處理模型) ?網(wǎng)關(guān)下推技術(shù):分布式數(shù)據(jù)庫場景下對SQL處理優(yōu)化, ?關(guān)聯(lián)數(shù)據(jù)表不一致、字段類型不一致導(dǎo)致數(shù)據(jù)庫性能問題 ?in + order by優(yōu)化 范圍查詢阻斷,后續(xù)字段不能走索引 |
通過模擬銀行轉(zhuǎn)賬和互金數(shù)據(jù)庫設(shè)計兩個案例貫穿落地實踐(通過java springboot程序模擬轉(zhuǎn)賬并發(fā)) 4小時 |
?金融轉(zhuǎn)賬一致性測試實戰(zhàn) ?電商平臺數(shù)據(jù)庫架構(gòu)和表設(shè)計方案 ?數(shù)據(jù)庫測試實踐案例 ?需求分析與規(guī)劃(需求收集/風(fēng)險評估) ?測試設(shè)計(測試工具/準(zhǔn)備數(shù)據(jù)) ?初步測試(功能驗證/性能初步評估) ?分析與優(yōu)化(問題分析/優(yōu)化方案) ?再次測試(用戶體驗) ?持續(xù)監(jiān)控與維護(hù)(性能健康/定期檢查) ?數(shù)據(jù)庫異常診斷(慢查詢、并發(fā)、鎖、阻塞等) ?測試結(jié)合要點(diǎn) ?表設(shè)計(分表依據(jù)) ?鎖設(shè)計(樂觀鎖/悲觀鎖) ?事物設(shè)計(如何控制事物大小) ?索引設(shè)計(最佳設(shè)計原則) ?連接池設(shè)計(使用連接池要注意事項) ?SQL優(yōu)化(小表變大表/改寫) ?服務(wù)器性能(CPU/IO/內(nèi)存/NUMA) ?網(wǎng)絡(luò)性能 ?參數(shù)配置 ?監(jiān)控 ?關(guān)鍵問題 ?數(shù)據(jù)庫性能分析問題 ?SQL影響:慢查詢和慢查詢收集工具 ?SQL事務(wù)監(jiān)控 ?SQL阻塞監(jiān)控 ?CPU抖動:Prometheus+zabbix、Top監(jiān)控 ?通過慢日志或監(jiān)控平臺獲取某一個時刻SQL ?業(yè)務(wù)并發(fā)訪問問題 ?業(yè)務(wù)壓力突增全鏈路監(jiān)控 ?界定每個部分是否有問題 ?定位問題所在 ?性能問題:小數(shù)據(jù)量下性能良好,但在大數(shù)據(jù)量下性能急劇下降 ?基準(zhǔn)測試:在小數(shù)據(jù)量下進(jìn)行基準(zhǔn)測試,記錄性能指標(biāo)。 ? 壓力測試:使用工具如 JMeter、LoadRunner 進(jìn)行壓力測試,模擬大數(shù)據(jù)量和高并發(fā)場景。 ?長時間測試:進(jìn)行長時間的穩(wěn)定性測試,觀察系統(tǒng)在長時間高負(fù)載下的表現(xiàn)。 ?并發(fā)問題:在單用戶或少量用戶情況下表現(xiàn)良好,但在多用戶并發(fā)訪問時出現(xiàn)死鎖、數(shù)據(jù)不一致等問題 ?并發(fā)測試:使用工具模擬多用戶并發(fā)訪問,觀察系統(tǒng)的響應(yīng)時間和錯誤率。 ?事務(wù)測試:特別關(guān)注涉及多個事務(wù)的操作,確保事務(wù)的隔離性和一致性。 ?數(shù)據(jù)一致性問題:數(shù)據(jù)在不同模塊之間不一致,尤其是在分布式系統(tǒng)中。 ?數(shù)據(jù)校驗:在不同模塊之間進(jìn)行數(shù)據(jù)校驗,確保數(shù)據(jù)的一致性。 ?日志分析:分析系統(tǒng)日志,查找數(shù)據(jù)不一致的原因。 ? 事務(wù)管理:確保事務(wù)的正確管理和回滾機(jī)制。 ?異常處理問題:異常處理不當(dāng),導(dǎo)致系統(tǒng)崩潰或數(shù)據(jù)丟失。 ?異常測試:模擬各種異常情況,如網(wǎng)絡(luò)中斷、數(shù)據(jù)庫連接失敗等。 ?日志記錄:確保所有異常都被記錄下來,便于后續(xù)分析。 ?恢復(fù)測試:測試系統(tǒng)的恢復(fù)機(jī)制,確保系統(tǒng)在異常后能夠恢復(fù)正常運(yùn)行。 ?資源泄漏問題:內(nèi)存泄漏、文件句柄泄漏等。 ?內(nèi)存分析:使用工具如Valgrind、VisualVM 進(jìn)行內(nèi)存分析。 ?文件句柄檢查:檢查系統(tǒng)中打開的文件句柄數(shù)量,確保沒有泄漏。 ?性能監(jiān)控:持續(xù)監(jiān)控系統(tǒng)的資源使用情況,及時發(fā)現(xiàn)異常。 日志和監(jiān)控問題:日志記錄不完整,監(jiān)控機(jī)制不健全 ?日志審計:定期審計日志文件,確保日志記錄的完整性和準(zhǔn)確性。 ?監(jiān)控工具:部署性能監(jiān)控工具,持續(xù)監(jiān)控系統(tǒng)的運(yùn)行狀態(tài)。 ?報警機(jī)制:設(shè)置合理的報警閾值,及時發(fā)現(xiàn)和處理異常。 ?分布式事務(wù)處理能力 ?分布式存儲能力 ?分布式事務(wù)能力 ?數(shù)據(jù)可靠性 ?數(shù)據(jù)分片操作 ?服務(wù)高可用 ?水平擴(kuò)展能力 ?數(shù)據(jù)庫測試工程實施方法論和階段性優(yōu)化概述 ?SQL優(yōu)化應(yīng)用場景以及策略實踐 ?慢查詢 ?連接查詢性能問題 ?子查詢性能問題 ?過度使用通配符%的 LIKE 查詢 ?大批量插入或更新 ?頻繁的重復(fù)查詢 ?過度使用分組和聚合函數(shù) ?大量重復(fù)數(shù)據(jù)的查詢 ?過度使用 OR 條件的查詢 ?大型數(shù)據(jù)分頁查詢 ?使用不必要的列 ?頻繁更新的表 ?未使用索引的外鍵約束 ?大型查詢的分批處理 ?未使用存儲過程的重復(fù)邏輯 ?未使用合適的數(shù)據(jù)類型 ?大量寫操作導(dǎo)致的鎖競爭 ?頻繁使用數(shù)據(jù)庫函數(shù)和表達(dá)式 ?未使用合適的索引策略 ?大量數(shù)據(jù)的聯(lián)合操作 ?大量數(shù)據(jù)的聯(lián)合操作 ?數(shù)據(jù)分布不均勻的索引 ?過度使用子查詢 ?未使用批量操作 ?過度使用內(nèi)存表 ?缺乏定期統(tǒng)計和優(yōu)化 ?未使用合適的數(shù)據(jù)庫引擎 ?使用強(qiáng)制類型轉(zhuǎn)換 ?未優(yōu)化的長事務(wù) ?未優(yōu)化的存儲過程 未考慮DB服務(wù)器配置和硬件資源 |
SQL優(yōu)化本質(zhì)和優(yōu)化技術(shù)(一方面闡述分布式數(shù)據(jù)庫架構(gòu)特點(diǎn)和優(yōu)化理論,另一方面著重分析幾款分布式數(shù)據(jù)庫技術(shù)共同點(diǎn)和不同點(diǎn)(通過案例分析講解);3小時 ?理解SQL在分布式數(shù)據(jù)庫下查詢的工作原理 ?SQL查詢的執(zhí)行過程 ?分布式數(shù)據(jù)庫引擎解析、執(zhí)行SQL語句 ?SQL優(yōu)化本質(zhì)和優(yōu)化技術(shù) ?數(shù)據(jù)訪問方式效率的對比:全表掃描與索引掃描 ?多表連接的執(zhí)行計劃、適用場景與優(yōu)劣勢 ?嵌套循環(huán) ?合并連接 ?哈希連接 ?三種表連接案例講解(從業(yè)務(wù)場景分析) ?分析和診斷SQL查詢性能 ?SQL調(diào)優(yōu)方法論-執(zhí)行計劃深度分析 ?從案例中辨別低效執(zhí)行計劃 ?優(yōu)化SQL查詢語句 ?選擇合適的連接類型 ?避免使用子查詢、改用連接Join(那些場景下) ?避免使用復(fù)雜的查詢(多表關(guān)聯(lián)性能為什么差) ?索引技術(shù):應(yīng)用場景以及對業(yè)務(wù)數(shù)據(jù)查詢的影響 ?索引類型和工作原理 ?分析索引覆蓋 ?避免過度索引 ?定期維護(hù)索引 ?案例講解 ?索引碎片導(dǎo)致執(zhí)行計劃問題分析和解決 ?理解SQL的執(zhí)行過程與性能瓶頸 ?并發(fā)控制和鎖的實現(xiàn)方式 ?理解分布式數(shù)據(jù)庫并發(fā)機(jī)制 ?隔離級別對分布式數(shù)據(jù)庫影響 ?減少鎖的競爭,優(yōu)化事務(wù)的粒度 ?樂觀鎖實現(xiàn)策略(那些場景使用) 針對不同數(shù)據(jù)庫特定優(yōu)化策略 |
SQL性能瓶頸分析和解決(通過執(zhí)行計劃分解不同分布式數(shù)據(jù)庫使用方式,能快速掌握分析辨識低效的SQL執(zhí)行問題癥狀) 3小時 ?SQL性能問題定位以及性能問題來源 ?用戶SQL寫法 - 遵循開發(fā)規(guī)約 ?代價模型缺陷 - 執(zhí)行計劃 ?統(tǒng)計信息不準(zhǔn)確 ?數(shù)據(jù)庫物理設(shè)計:決定查詢性能 ?系統(tǒng)負(fù)載:影響整體吞吐率,影響單sql rt ?客戶端路由 - 遠(yuǎn)程執(zhí)行 ?SQL調(diào)優(yōu)方法 ?針對單條 SQL 執(zhí)行的性能調(diào)優(yōu) ?單表訪問場景:索引、排序或聚合、分區(qū)、分布式并行 ?多表訪問場景:連接順序、連接算法、分布式并行、 查詢改寫 ?針對吞吐量的性能優(yōu)化 ?優(yōu)化慢SQL ?均衡SQL的請求流量資源 ?如何通過執(zhí)行計劃字段辨識低效的SQL ?查看各階段耗時 ?調(diào)優(yōu)基本流程分析步驟 ?通過全局SQL審計表、 SQL Trace 、Profile等查看SQL 執(zhí)行信息 ,初步查找SQL請求的流程中導(dǎo)致耗時或消耗資源(如內(nèi)存、 磁盤IO等)的 SQL ?單條SQL的執(zhí)行性能往往與該SQL的執(zhí)行計劃相關(guān),執(zhí)行計劃的分析是最重要的手段。通過執(zhí)行EXPALIN命令查看優(yōu)化器針對給定 SQL 生成的邏輯執(zhí)行計劃 ,確定可能的調(diào)優(yōu)方向 ?找到具體的慢SQL,為了使某些 SQL 的執(zhí)行時間或資源消耗符合預(yù)期 , 常見的優(yōu)化方式如下: ?對SQL做等價改寫生成最佳執(zhí)行計劃 針對多表訪問的SQL,還需要關(guān)注多表間的聯(lián)接問題 , 通過優(yōu)化訪問路徑、聯(lián)接順序和聯(lián)接算法等實現(xiàn)查詢優(yōu)化 |
優(yōu)化實踐(通過金融客戶某業(yè)務(wù)系統(tǒng),針對調(diào)優(yōu)方式進(jìn)行綜合闡述,并模擬相關(guān)案例進(jìn)行輸出說明) 2小時 ?實際案例講解 ?分布式兼容與限制 ?分布式表連接 ?分布式事務(wù) ?部署服務(wù)器需要注意的事項總結(jié) ?最佳實踐 ?Explain解讀 ?Trace信息 ?分布式更新操作原理 ?跨節(jié)點(diǎn)分布式查詢優(yōu)化 ?邏輯優(yōu)化、條件下推、隔離 ?引擎如何優(yōu)雅處理海量SQL邏輯 ?分布式事務(wù)實現(xiàn) ?優(yōu)化實踐 ?數(shù)據(jù)庫優(yōu)化方法論 ?全鏈路性能調(diào)優(yōu)實戰(zhàn) ?業(yè)務(wù)模型優(yōu)化 ?先整體再局部 ?先解阻塞性問題 ?熱點(diǎn)SQL優(yōu)化 ?慢SQL優(yōu)化 ?減少數(shù)據(jù)訪問次數(shù)(減少磁盤訪問) ?返回更少數(shù)據(jù)(減少網(wǎng)絡(luò)傳輸或磁盤訪問) ?減少交互次數(shù)(減少網(wǎng)絡(luò)傳輸) ?減少服務(wù)器CPU開銷 ?利用更多資源(增加資源) ?聯(lián)接順序 ?索引回表 ?分區(qū)表性能診斷 ?數(shù)據(jù)表優(yōu)化 ?核心數(shù)據(jù)表設(shè)計 ?字段類型設(shè)計 ?對表邏輯更新 ?添加創(chuàng)建和修改時間列 ?樂觀鎖還是悲觀鎖,選擇依據(jù)是什么 ?如何查找慢查詢:為什么會對業(yè)務(wù)造成危害 ?優(yōu)化大表總要性:多大是最優(yōu)的 ?為什么不要使用大字段類型 ?為什么要限制DML操作的數(shù)據(jù)大小 ?綜合優(yōu)化案例講解和使用 ?構(gòu)造一個復(fù)雜的查詢SQL(如包含多表關(guān)聯(lián)、子查詢、cte、filesort、臨時表等),講解分析方法、SQL改寫方法 ?SQL優(yōu)化案例實踐 ?條件查詢索引選擇性導(dǎo)致查詢慢 統(tǒng)計信息過期或數(shù)據(jù)空快碎片多導(dǎo)致執(zhí)行計劃?錯誤 ?阻塞、死鎖引發(fā)SQL超時 ?模擬數(shù)據(jù)庫樂觀鎖實現(xiàn)機(jī)制,提高并發(fā)和吞吐量 ?分頁查詢?nèi)绾翁岣咝阅?br/>?非分片鍵查詢引發(fā)SQL性能問題 ?分布式數(shù)據(jù)庫查詢數(shù)據(jù)優(yōu)化(流式處理模型和通用處理模型) ?網(wǎng)關(guān)下推技術(shù):分布式數(shù)據(jù)庫場景下對SQL處理優(yōu)化, ?關(guān)聯(lián)數(shù)據(jù)表不一致、字段類型不一致導(dǎo)致數(shù)據(jù)庫性能問題 ?in + order by優(yōu)化 范圍查詢阻斷,后續(xù)字段不能走索引 |
通過模擬銀行轉(zhuǎn)賬和互金數(shù)據(jù)庫設(shè)計兩個案例貫穿落地實踐(通過java springboot程序模擬轉(zhuǎn)賬并發(fā)) 4小時 ?金融轉(zhuǎn)賬一致性測試實戰(zhàn) ?電商平臺數(shù)據(jù)庫架構(gòu)和表設(shè)計方案 ?數(shù)據(jù)庫測試實踐案例 ?需求分析與規(guī)劃(需求收集/風(fēng)險評估) ?測試設(shè)計(測試工具/準(zhǔn)備數(shù)據(jù)) ?初步測試(功能驗證/性能初步評估) ?分析與優(yōu)化(問題分析/優(yōu)化方案) ?再次測試(用戶體驗) ?持續(xù)監(jiān)控與維護(hù)(性能健康/定期檢查) ?數(shù)據(jù)庫異常診斷(慢查詢、并發(fā)、鎖、阻塞等) ?測試結(jié)合要點(diǎn) ?表設(shè)計(分表依據(jù)) ?鎖設(shè)計(樂觀鎖/悲觀鎖) ?事物設(shè)計(如何控制事物大小) ?索引設(shè)計(最佳設(shè)計原則) ?連接池設(shè)計(使用連接池要注意事項) ?SQL優(yōu)化(小表變大表/改寫) ?服務(wù)器性能(CPU/IO/內(nèi)存/NUMA) ?網(wǎng)絡(luò)性能 ?參數(shù)配置 ?監(jiān)控 ?關(guān)鍵問題 ?數(shù)據(jù)庫性能分析問題 ?SQL影響:慢查詢和慢查詢收集工具 ?SQL事務(wù)監(jiān)控 ?SQL阻塞監(jiān)控 ?CPU抖動:Prometheus+zabbix、Top監(jiān)控 ?通過慢日志或監(jiān)控平臺獲取某一個時刻SQL ?業(yè)務(wù)并發(fā)訪問問題 ?業(yè)務(wù)壓力突增全鏈路監(jiān)控 ?界定每個部分是否有問題 ?定位問題所在 ?性能問題:小數(shù)據(jù)量下性能良好,但在大數(shù)據(jù)量下性能急劇下降 ?基準(zhǔn)測試:在小數(shù)據(jù)量下進(jìn)行基準(zhǔn)測試,記錄性能指標(biāo)。 ? 壓力測試:使用工具如 JMeter、LoadRunner 進(jìn)行壓力測試,模擬大數(shù)據(jù)量和高并發(fā)場景。 ?長時間測試:進(jìn)行長時間的穩(wěn)定性測試,觀察系統(tǒng)在長時間高負(fù)載下的表現(xiàn)。 ?并發(fā)問題:在單用戶或少量用戶情況下表現(xiàn)良好,但在多用戶并發(fā)訪問時出現(xiàn)死鎖、數(shù)據(jù)不一致等問題 ?并發(fā)測試:使用工具模擬多用戶并發(fā)訪問,觀察系統(tǒng)的響應(yīng)時間和錯誤率。 ?事務(wù)測試:特別關(guān)注涉及多個事務(wù)的操作,確保事務(wù)的隔離性和一致性。 ?數(shù)據(jù)一致性問題:數(shù)據(jù)在不同模塊之間不一致,尤其是在分布式系統(tǒng)中。 ?數(shù)據(jù)校驗:在不同模塊之間進(jìn)行數(shù)據(jù)校驗,確保數(shù)據(jù)的一致性。 ?日志分析:分析系統(tǒng)日志,查找數(shù)據(jù)不一致的原因。 ? 事務(wù)管理:確保事務(wù)的正確管理和回滾機(jī)制。 ?異常處理問題:異常處理不當(dāng),導(dǎo)致系統(tǒng)崩潰或數(shù)據(jù)丟失。 ?異常測試:模擬各種異常情況,如網(wǎng)絡(luò)中斷、數(shù)據(jù)庫連接失敗等。 ?日志記錄:確保所有異常都被記錄下來,便于后續(xù)分析。 ?恢復(fù)測試:測試系統(tǒng)的恢復(fù)機(jī)制,確保系統(tǒng)在異常后能夠恢復(fù)正常運(yùn)行。 ?資源泄漏問題:內(nèi)存泄漏、文件句柄泄漏等。 ?內(nèi)存分析:使用工具如Valgrind、VisualVM 進(jìn)行內(nèi)存分析。 ?文件句柄檢查:檢查系統(tǒng)中打開的文件句柄數(shù)量,確保沒有泄漏。 ?性能監(jiān)控:持續(xù)監(jiān)控系統(tǒng)的資源使用情況,及時發(fā)現(xiàn)異常。 日志和監(jiān)控問題:日志記錄不完整,監(jiān)控機(jī)制不健全 ?日志審計:定期審計日志文件,確保日志記錄的完整性和準(zhǔn)確性。 ?監(jiān)控工具:部署性能監(jiān)控工具,持續(xù)監(jiān)控系統(tǒng)的運(yùn)行狀態(tài)。 ?報警機(jī)制:設(shè)置合理的報警閾值,及時發(fā)現(xiàn)和處理異常。 ?分布式事務(wù)處理能力 ?分布式存儲能力 ?分布式事務(wù)能力 ?數(shù)據(jù)可靠性 ?數(shù)據(jù)分片操作 ?服務(wù)高可用 ?水平擴(kuò)展能力 ?數(shù)據(jù)庫測試工程實施方法論和階段性優(yōu)化概述 ?SQL優(yōu)化應(yīng)用場景以及策略實踐 ?慢查詢 ?連接查詢性能問題 ?子查詢性能問題 ?過度使用通配符%的 LIKE 查詢 ?大批量插入或更新 ?頻繁的重復(fù)查詢 ?過度使用分組和聚合函數(shù) ?大量重復(fù)數(shù)據(jù)的查詢 ?過度使用 OR 條件的查詢 ?大型數(shù)據(jù)分頁查詢 ?使用不必要的列 ?頻繁更新的表 ?未使用索引的外鍵約束 ?大型查詢的分批處理 ?未使用存儲過程的重復(fù)邏輯 ?未使用合適的數(shù)據(jù)類型 ?大量寫操作導(dǎo)致的鎖競爭 ?頻繁使用數(shù)據(jù)庫函數(shù)和表達(dá)式 ?未使用合適的索引策略 ?大量數(shù)據(jù)的聯(lián)合操作 ?大量數(shù)據(jù)的聯(lián)合操作 ?數(shù)據(jù)分布不均勻的索引 ?過度使用子查詢 ?未使用批量操作 ?過度使用內(nèi)存表 ?缺乏定期統(tǒng)計和優(yōu)化 ?未使用合適的數(shù)據(jù)庫引擎 ?使用強(qiáng)制類型轉(zhuǎn)換 ?未優(yōu)化的長事務(wù) ?未優(yōu)化的存儲過程 未考慮DB服務(wù)器配置和硬件資源 |