电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術(shù)文章
文章詳情頁

MySql中sql語句執(zhí)行過程詳細(xì)講解

瀏覽:51日期:2023-02-18 16:43:45
目錄
  • 前言:
  • sql語句的執(zhí)行過程:
  • 查詢緩存:
  • 分析器:
  • 優(yōu)化器:
  • 執(zhí)行器:
  • 總結(jié)

前言:

很多人都在使用mysql數(shù)據(jù)庫,但是很少有人能夠說出來整個(gè)sql語句的執(zhí)行過程是怎樣的,如果不了解執(zhí)行過程的話,就很難進(jìn)行sql語句的優(yōu)化處理,也很難設(shè)計(jì)出來優(yōu)良的數(shù)據(jù)庫表結(jié)構(gòu)。這篇文章主要是講解一下sql語句的執(zhí)行過程。

sql語句的執(zhí)行過程:

客戶端、連接器、分析器、優(yōu)化器、執(zhí)行器、存儲(chǔ)引擎幾個(gè)階段。

連接器的作用:管理鏈接、權(quán)限驗(yàn)證的處理。

分析器的作用:詞法分析、語法分析。

優(yōu)化器的作用:執(zhí)行計(jì)劃的生成、索引選擇。

執(zhí)行器的作用:操作引擎、返回結(jié)果。

存儲(chǔ)引擎的作用:存儲(chǔ)數(shù)據(jù)、提供讀寫接口。

另外的一個(gè)分支是,會(huì)進(jìn)行查詢緩存的操作,如果命中了緩存則直接返回的操作。

mysql可以分為server層和存儲(chǔ)引擎層兩個(gè)部分:

server層:

包括鏈接器、查詢緩存、分析器、優(yōu)化器、執(zhí)行器等,涵蓋Mysql的大多數(shù)核心服務(wù)功能,以及所有的內(nèi)置函數(shù)(日期、時(shí)間、數(shù)學(xué)、和加密函數(shù)等),所有的存儲(chǔ)引擎的功能都在這一部分實(shí)現(xiàn)的,比如說存儲(chǔ)過程、觸發(fā)器、視圖。

存儲(chǔ)引擎:

主要負(fù)責(zé)數(shù)據(jù)的存儲(chǔ)和提取,其架構(gòu)模式是插件式的,支持InnoDB、Memory等多個(gè)存儲(chǔ)引擎。最常用的是InnoDB,這個(gè)主要在Mysql5.5版本開始成為了默認(rèn)存儲(chǔ)引擎。

當(dāng)在執(zhí)行sql查詢的時(shí)候,如果不指定引擎類型、默認(rèn)使用的innoDB。當(dāng)然也可以指定存儲(chǔ)引擎類型進(jìn)行處理,比如說創(chuàng)建表的時(shí)候,可以把存儲(chǔ)引擎修改為memory,進(jìn)行表的創(chuàng)建出合理。當(dāng)然了,不同的存儲(chǔ)引擎的表數(shù)據(jù)存儲(chǔ)方式也是不一樣的。

連接器:

執(zhí)行sql語句的時(shí)候,第一步需要進(jìn)行數(shù)據(jù)庫的連接處理,連接器負(fù)責(zé)客戶端建立連接、獲取權(quán)限、維持和管理連接。

根據(jù)命令可以看出來,主要進(jìn)行幾個(gè)參數(shù)的輸入,IP地址、端口號(hào)、以及用戶名、密碼的處理。連接mysql是客戶端工具,用戶服務(wù)器建立連接,進(jìn)行tcp握手之后,連接器需要進(jìn)行身份的驗(yàn)證,然后輸入用戶名、密碼。

密碼不對(duì)的時(shí)候,會(huì)收到一個(gè)“Access denied for user”的錯(cuò)誤提示,然后客戶端結(jié)束執(zhí)行。

用戶名、密碼驗(yàn)證通過之后,連接器就會(huì)開始進(jìn)行權(quán)限表查詢權(quán)限,然后進(jìn)行權(quán)限的操作處理。

連接完成之后,沒有進(jìn)行其他的操作,這個(gè)時(shí)候連接就處于空閑狀態(tài),show processlist。

客戶端如果長(zhǎng)時(shí)間不操作的話,默認(rèn)的等待時(shí)間(wait_timeout)是八個(gè)小時(shí)。

數(shù)據(jù)庫建立連接是比較復(fù)雜的,建議在項(xiàng)目中盡量少的建立連接的操作,也就是說盡量使用長(zhǎng)連接的處理。

在項(xiàng)目中經(jīng)常會(huì)遇到一種情況就是數(shù)據(jù)庫的長(zhǎng)連接,很長(zhǎng)時(shí)間不關(guān)閉的操作,這個(gè)時(shí)候會(huì)導(dǎo)致內(nèi)存的占用太大,被系統(tǒng)殺掉導(dǎo)致的Mysql的異常。

解決方案有下面兩種方案:

  • 定期斷開長(zhǎng)連接,使用一段時(shí)間之后,比如說執(zhí)行一個(gè)占用內(nèi)存的大查詢之后,這個(gè)時(shí)候斷開連接,之后要查詢的話再重新連接。
  • 通過使用命令進(jìn)行重新初始化連接資源,這個(gè)時(shí)候需要重連,但是會(huì)把連接恢復(fù)到初始化的狀態(tài)。

查詢緩存:

連接建立完畢之后,進(jìn)行查詢緩存的處理,執(zhí)行sql語句會(huì)先到緩存中看看是不是剛剛執(zhí)行了這條語句,之前執(zhí)行過的語句及其結(jié)果就會(huì)以key-value對(duì)的形式直接存儲(chǔ)在內(nèi)存中的,key是查詢的語句,value是查詢的結(jié)果,如果查詢能夠直接在這個(gè)緩存中找到key,那么這個(gè)value可以直接返回給客戶端。

如果語句不在查詢緩存中的話,就會(huì)繼續(xù)后面的執(zhí)行階段,執(zhí)行完成后,執(zhí)行結(jié)果會(huì)被存入查詢緩存中。如果可以查詢到緩存的話,就不會(huì)進(jìn)行后面的復(fù)雜操作了,效率會(huì)高很多。

查詢緩存的弊端:

查詢緩存失敗一般情況下會(huì)比較頻繁,只要對(duì)一個(gè)表的進(jìn)行了更新的話,這個(gè)表上面所有的緩存就會(huì)被清空。因此一般情況下查詢緩存的命中率很低。一般情況下,一個(gè)系統(tǒng)的配置表或者靜態(tài)的表才會(huì)使用到查詢緩存的方式進(jìn)行處理。

分析器:

分析器首先會(huì)進(jìn)行詞法分析,輸入的是由多個(gè)字符串和空格組成的一條sql語句,mysql需要識(shí)別出來里面的字符串分別是什么,代表什么意思。

首先:mysql從輸入的select這個(gè)關(guān)鍵詞識(shí)別出來,這個(gè)是一個(gè)查詢的語句,需要把from關(guān)鍵字后面的,字符串t識(shí)別出來表名稱等等的操作。

然后進(jìn)行語法分析的處理,根據(jù)詞法分析,根據(jù)詞法分析的結(jié)果,語句分析器就會(huì)根據(jù)語法規(guī)則判斷輸入的這個(gè)sql語句是否滿足mysql的語法。

檢查出來錯(cuò)誤提示如下圖:

一般提示錯(cuò)誤的信息只會(huì)進(jìn)行第一個(gè)錯(cuò)誤的位置。

優(yōu)化器:

經(jīng)過了分析器的處理,mysql就知道了該如何進(jìn)行優(yōu)化器的處理了,優(yōu)化器的處理邏輯是在表里面進(jìn)行多個(gè)索引的時(shí)候,決定使用那個(gè)索引,或者說在一個(gè)語句有多個(gè)關(guān)聯(lián)的時(shí)候,決定各個(gè)表的連接順序的情況,如下圖所示:

第一種執(zhí)行的結(jié)果是處理t1.c=10是否走索引,然后可以先判斷 一下邏輯的結(jié)果是否一樣,如果執(zhí)行的結(jié)果是一樣的話,可以任意選擇一種方案進(jìn)行處理。

執(zhí)行器:

  • 調(diào)用InNoDB引擎接口取這個(gè)表的第一行,判斷值是否10,如果是10進(jìn)行集中處理,否則的話就跳過。
  • 執(zhí)行器將遍歷過程中所有滿足條件的行組成的記錄集合返回給客戶端。

總結(jié)

到此這篇關(guān)于MySql中sql語句執(zhí)行過程詳細(xì)講解的文章就介紹到這了,更多相關(guān)MySql sql語句執(zhí)行過程內(nèi)容請(qǐng)搜索以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持!

標(biāo)簽: MySQL
主站蜘蛛池模板: 微波萃取合成仪-电热消解器价格-北京安合美诚科学仪器有限公司 | 干粉砂浆设备_干混砂浆生产线_腻子粉加工设备_石膏抹灰砂浆生产成套设备厂家_干粉混合设备_砂子烘干机--郑州铭将机械设备有限公司 | 矿用履带式平板车|探水钻机|气动架柱式钻机|架柱式液压回转钻机|履带式钻机-启睿探水钻机厂家 | NMRV减速机|铝合金减速机|蜗轮蜗杆减速机|NMRV减速机厂家-东莞市台机减速机有限公司 | 电磁流量计_智能防腐防爆管道式计量表-金湖凯铭仪表有限公司 | 玻璃钢型材-玻璃钢风管-玻璃钢管道,生产厂家-[江苏欧升玻璃钢制造有限公司] | 新材料分散-高速均质搅拌机-超声波分散混合-上海化烁智能设备有限公司 | 广州中央空调回收,二手中央空调回收,旧空调回收,制冷设备回收,冷气机组回收公司-广州益夫制冷设备回收公司 | 淄博不锈钢无缝管,淄博不锈钢管-鑫门物资有限公司 | 施工电梯_齿条货梯_烟囱电梯_物料提升机-河南大诚机械制造有限公司 | 中高频感应加热设备|高频淬火设备|超音频感应加热电源|不锈钢管光亮退火机|真空管烤消设备 - 郑州蓝硕工业炉设备有限公司 | 钢托盘,铁托盘,钢制托盘,镀锌托盘,饲料托盘,钢托盘制造商-南京飞天金属13260753852 | 全自动翻转振荡器-浸出式水平振荡器厂家-土壤干燥箱价格-常州普天仪器 | 河南彩印编织袋,郑州饲料编织袋定制,肥料编织袋加工厂-盛军塑业 河南凯邦机械制造有限公司 | 哈希PC1R1A,哈希CA9300,哈希SC4500-上海鑫嵩实业有限公司 | 拖鞋定制厂家-品牌拖鞋代加工厂-振扬实业中国高端拖鞋大型制造商 | 无锡网站建设_小程序制作_网站设计公司_无锡网络公司_网站制作 | Dataforth隔离信号调理模块-信号放大模块-加速度振动传感器-北京康泰电子有限公司 | 冷却塔降噪隔音_冷却塔噪声治理_冷却塔噪音处理厂家-广东康明冷却塔降噪厂家 | EDLC超级法拉电容器_LIC锂离子超级电容_超级电容模组_软包单体电容电池_轴向薄膜电力电容器_深圳佳名兴电容有限公司_JMX专注中高端品牌电容生产厂家 | 找果网 | 苹果手机找回方法,苹果iPhone手机丢了找回,认准找果网! | 山东石英砂过滤器,除氟过滤器「价格低」-淄博胜达水处理 | 骨密度仪-骨密度测定仪-超声骨密度仪-骨龄测定仪-天津开发区圣鸿医疗器械有限公司 | 手板_手板模型制作_cnc手板加工厂-东莞天泓 | 北京中创汇安科贸有限公司| 分子精馏/精馏设备生产厂家-分子蒸馏工艺实验-新诺舜尧(天津)化工设备有限公司 | [品牌官网]贵州遵义双宁口腔连锁_贵州遵义牙科医院哪家好_种植牙_牙齿矫正_原华美口腔 | 3d可视化建模_三维展示_产品3d互动数字营销_三维动画制作_3D虚拟商城 【商迪3D】三维展示服务商 广东健伦体育发展有限公司-体育工程配套及销售运动器材的体育用品服务商 | 南京种植牙医院【官方挂号】_南京治疗种植牙医院那个好_南京看种植牙哪里好_南京茀莱堡口腔医院 尼龙PA610树脂,尼龙PA612树脂,尼龙PA1010树脂,透明尼龙-谷骐科技【官网】 | Dataforth隔离信号调理模块-信号放大模块-加速度振动传感器-北京康泰电子有限公司 | 市政路灯_厂家-淄博信达电力科技有限公司| 北京网络营销推广_百度SEO搜索引擎优化公司_网站排名优化_谷歌SEO - 北京卓立海创信息技术有限公司 | IWIS链条代理-ALPS耦合透镜-硅烷预处理剂-上海顶楚电子有限公司 lcd条形屏-液晶长条屏-户外广告屏-条形智能显示屏-深圳市条形智能电子有限公司 | 油液红外光谱仪-油液监测系统-燃油嗅探仪-上海冉超光电科技有限公司 | 杭州中央空调维修_冷却塔/新风机柜/热水器/锅炉除垢清洗_除垢剂_风机盘管_冷凝器清洗-杭州亿诺能源有限公司 | 云南标线|昆明划线|道路标线|交通标线-就选云南云路施工公司-云南云路科技有限公司 | 一级建造师培训_一建培训机构_中建云筑建造师培训网校 | 全国国际学校排名_国际学校招生入学及学费-学校大全网 | PVC快速门-硬质快速门-洁净室快速门品牌厂家-苏州西朗门业 | 安徽千住锡膏_安徽阿尔法锡膏锡条_安徽唯特偶锡膏_卡夫特胶水-芜湖荣亮电子科技有限公司 | 啤酒设备-小型啤酒设备-啤酒厂设备-济南中酿机械设备有限公司 |