mysql 递归_「MySQL」 - SQL Cheat Sheet - 未完成
近幾個月的心情真是安排的妥妥的,呈現(xiàn)W狀。多的不說了,這里對SQL的測試進行簡單梳理,制作一份SQL Cheat Sheet。
0x01、數(shù)據(jù)庫基本架構(gòu)
- Clinet層
- Server層
- 連接器
- 網(wǎng)絡(luò)連接建立、管理
- 長連接導致的OOM的自動處理
- 權(quán)限管理
- 網(wǎng)絡(luò)連接建立、管理
- 緩存
- KV
- 分析器
- 詞法分析
- 語法分析
- AST語法樹
- 優(yōu)化器
- 多表連接順序
- 索引選取
- 執(zhí)行器
- MySQL調(diào)用存儲引擎提供的接口
- 其他
- 內(nèi)置函數(shù)
- 存儲過程
- 觸發(fā)器
- 視圖
- 連接器
- 存儲引擎層
- 數(shù)據(jù)R/W
0x02、SQL詞法分析
A、解析SQL步驟
B、詞法分析
詞法分析根據(jù)規(guī)則將SQL字符串切分為若干字符段,切分的規(guī)則與定義的Tokens有關(guān)。
SQL的Token分類(精簡):
- 注釋
- 關(guān)鍵字(SELECT、CREATE)
- 操作符(+、-、>=)
- 開閉合標志
- 支持子句
- 占位符(?)
- 空格
- 引號包裹的文本、數(shù)字、字段
詞法分析階段,只需識別關(guān)鍵詞即可切分(正則),而關(guān)鍵詞的辨認、語意處理、上下文相關(guān)都在語法分析階段處理。
C、語法分析
語法分析分為自頂向下與自底向上,自頂向下一般采用遞歸下降方式處理,自底而上一般采用移進(shift)規(guī)約(reduce)方式處理。
0x03、數(shù)據(jù)庫測試點 - 基本流程
0x04、數(shù)據(jù)庫性能測試
A、可能會導致性能降低的原因
B、MySQL性能測試方法
1、測試工具:mysqlslap,mysqlslap是MySQL 5.1.4之后自帶的benchmark基準測試工具,該工具可以模擬多個客戶端同時并發(fā)的向服務(wù)器發(fā)出查詢更新。
使用方法,https://my.oschina.net/moooofly/blog/152547。
2、測試流程:建立測試數(shù)據(jù)庫database和待測試的表tables,根據(jù)table的結(jié)構(gòu),利用腳本生成一定數(shù)量的有效隨機數(shù)據(jù),通過mysqlslap對相應query語句進行測試,最后進行結(jié)果數(shù)據(jù)的分析。
3、關(guān)鍵語句:考慮到MySQL的實際應用情況,通過資源屬性查詢資源的操作為主要操作,且這類操作的耗時占總操作耗時的比例為最大,故這類操作的查詢語句為關(guān)鍵語句,對整個數(shù)據(jù)庫性能影響很大,可以通過測試這個關(guān)鍵語句得出的結(jié)果來評估整個數(shù)據(jù)庫的性能。
0x05、sysbench
A、基準測試
數(shù)據(jù)庫的基準測試是對數(shù)據(jù)庫的性能指標進行定量的、可復現(xiàn)的、可對比的測試?;鶞蕼y試可以理解為針對系統(tǒng)的一種壓力測試。但基準測試不關(guān)心業(yè)務(wù)邏輯,更加簡單、直接、易于測試,數(shù)據(jù)可以由工具生成,不要求真實;而壓力測試一般考慮業(yè)務(wù)邏輯,要求真實的數(shù)據(jù)。
對數(shù)據(jù)庫的基準測試的作用,就是分析在當前的配置下(包括硬件配置、OS、數(shù)據(jù)庫設(shè)置等),數(shù)據(jù)庫的性能表現(xiàn),從而找出MySQL的性能閾值,并根據(jù)實際系統(tǒng)的要求調(diào)整配置。
針對MySQL進行基準測試時,一般使用專門的工具進行,例如mysqlslap、sysbench等。其中,sysbench比mysqlslap更通用、更強大,且更適合Innodb(模擬了許多Innodb的IO特性)。
B、sysbench
sysbench是跨平臺的基準測試工具,支持多線程,支持多種數(shù)據(jù)庫;主要包括以下幾種測試:
- cpu性能
- 磁盤io性能
- 調(diào)度程序性能
- 內(nèi)存分配及傳輸速度
- POSIX線程性能
- 數(shù)據(jù)庫性能(OLTP基準測試)
STUB
參考:
作業(yè)部落 Cmd Markdown 編輯閱讀器
https://www.slideshare.net/yejr/my-sql-20131020
https://juejin.im/entry/59e051ad6fb9a0450b6565ec
https://cloud.tencent.com/developer/article/1004894
https://github.com/dt-fe/weekly/blob/master/64.精讀《手寫 SQL 編譯器 - 詞法分析》.md
總結(jié)
以上是生活随笔為你收集整理的mysql 递归_「MySQL」 - SQL Cheat Sheet - 未完成的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python 输入字符串_输入输出,字符
- 下一篇: ide在控制台输入编译命令_快速编译调试