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