日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql 递归_「MySQL」 - SQL Cheat Sheet - 未完成

發(fā)布時間:2023/12/2 数据库 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql 递归_「MySQL」 - SQL Cheat Sheet - 未完成 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

近幾個月的心情真是安排的妥妥的,呈現(xiàn)W狀。多的不說了,這里對SQL的測試進行簡單梳理,制作一份SQL Cheat Sheet。

0x01、數(shù)據(jù)庫基本架構(gòu)

  • Clinet層
  • Server層
    • 連接器
      • 網(wǎng)絡(luò)連接建立、管理
        • 長連接導致的OOM的自動處理
      • 權(quán)限管理
    • 緩存
      • KV
    • 分析器
      • 詞法分析
      • 語法分析
        • AST語法樹
    • 優(yōu)化器
      • 多表連接順序
      • 索引選取
    • 執(zhí)行器
      • MySQL調(diào)用存儲引擎提供的接口
    • 其他
      • 內(nèi)置函數(shù)
      • 存儲過程
      • 觸發(fā)器
      • 視圖
  • 存儲引擎層
    • 數(shù)據(jù)R/W

0x02、SQL詞法分析

A、解析SQL步驟

  • 詞法分析:將SQL字符串拆分成包含關(guān)鍵詞識別的字符段(Tokens)。
  • 語法分析:利用自頂向下或自底向上的算法,將Tokens解析為AST(Abstract Syntax Trees)。
  • 錯誤檢測、恢復、提示推斷:需要利用語法分析產(chǎn)生的AST。
  • 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ù)庫測試點 - 基本流程

  • 連接數(shù)據(jù)庫
  • 網(wǎng)絡(luò)連接
  • 權(quán)限
  • DB錯誤
  • 創(chuàng)建數(shù)據(jù)庫
  • 創(chuàng)建表結(jié)構(gòu)
  • 執(zhí)行SQL語句、存儲過程、觸發(fā)器
  • 大小寫敏感
  • SQL保留字
  • SQL語法錯誤
  • 釋放與數(shù)據(jù)庫連接
  • 0x04、數(shù)據(jù)庫性能測試

    A、可能會導致性能降低的原因

  • 物理存儲
  • 邏輯設(shè)計
  • 數(shù)據(jù)參數(shù)調(diào)整
  • SQL語句優(yōu)化
  • 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)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。