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

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

解讀MySQL的客戶端和服務(wù)端協(xié)議

瀏覽:140日期:2023-10-03 12:13:36

如果需要從 MySQL 服務(wù)端獲得很高的性能,最佳的方式就是花時間研究 MySQL 優(yōu)化和執(zhí)行查詢的機制。一旦理解了這些,大部分的查詢優(yōu)化是有據(jù)可循的,從而使得整個查詢優(yōu)化的過程更有邏輯性。下圖展示了 MySQL 執(zhí)行查詢的過程:

客戶端將 SQL 語句發(fā)送到服務(wù)端。 服務(wù)端檢查查詢緩存。如果緩存中已有數(shù)據(jù),則直接返回緩存結(jié)果;否則,將 SQL 語句傳遞給下一環(huán)節(jié)。 服務(wù)端解析、預處理和優(yōu)化 SQL 語句后,傳遞到查詢優(yōu)化器中形成查詢計劃。 查詢執(zhí)行引擎通過調(diào)用存儲引擎接口執(zhí)行查詢計劃。 服務(wù)端將查詢結(jié)果返回給客戶端。

上述的幾個步驟都有其復雜性,接下來幾篇文章將詳細講述各個環(huán)節(jié)。查詢優(yōu)化過程尤其復雜,并且理解這一環(huán)節(jié)很重要。

解讀MySQL的客戶端和服務(wù)端協(xié)議

MySQL 客戶端/服務(wù)端協(xié)議

雖然并不需要了解 MySQL 客戶端/服務(wù)端協(xié)議的內(nèi)部細節(jié),但需要從高應(yīng)用層面理解其是如何工作的。這個協(xié)議是半雙工的,這意味著 MySQL 服務(wù)端不同同時發(fā)送和接收消息,以及不可以將消息拆成多條短消息發(fā)送。這種機制一方面使得 MySQL 的通信簡單快速,另一方面也增加了一些限制。例如,這意味著無法進行流控,一旦一方發(fā)送了消息,另一方在響應(yīng)前必須接收整個消息。這就好像來回打乒乓球一樣,同一時間只有一方有球,只有接到了球才能把它打回去。

客戶端通過單個數(shù)據(jù)包將查詢語句發(fā)送給服務(wù)端,因此在存在大的查詢語句時配置 max_allowed_packet 很重要。一旦客戶端發(fā)送查詢語句后,它就只能等待返回結(jié)果。

相反,服務(wù)端的響應(yīng)通常是由多個數(shù)據(jù)包組成的。一旦服務(wù)端響應(yīng)后,客戶端必須獲取整個結(jié)果集。客戶端沒法簡單地獲取幾行然后告訴服務(wù)端不要再發(fā)送剩余的數(shù)據(jù)。如果客戶端僅僅需要返回數(shù)據(jù)前面的幾行,只能是等待服務(wù)端全部數(shù)據(jù)返回后再從中丟棄不需要的數(shù)據(jù),或者是粗暴地斷開連接。不管哪種方式都不是好的選擇,因此合適的 LIMIT子句就顯得十分重要。

大部分的 MySQL連接庫支持獲取整個結(jié)果集并在內(nèi)存中緩存起來,或者是獲取需要的數(shù)據(jù)行。默認的行為通常是獲取整個結(jié)果集然后在內(nèi)存緩存。知道這一點很重要,因為 MySQL 服務(wù)端在所有請求的數(shù)據(jù)行沒返回前,不會釋放這次查詢的鎖和資源。大部分客戶端庫會讓你感覺數(shù)據(jù)是從服務(wù)端獲取的,實際上這些數(shù)據(jù)可能僅僅是從緩存中讀取的。這在大部分時間是沒問題的,但對于耗時很久或占據(jù)很多內(nèi)存的大數(shù)據(jù)量查詢來說就不合適了。如果指定了不緩存查詢結(jié)果,那么占用的內(nèi)存會更小,并且可以更快地處理結(jié)果。缺點是這種方式會在查詢時引起 服務(wù)端的鎖和資源占用。

以 PHP 為例,以下是PHP常用的查詢代碼:

<?php$link = mysql_connect(’localhost’, ’user’, ’password’);$result = mysql_query(’SELECT * FROM huge_table’, $link);while ($row = mysql_fetch_array($result)) { //處理數(shù)據(jù)結(jié)果}?>

這個代碼看起來好像是只獲取了需要的數(shù)據(jù)行。然而,這個查詢通過 mysql_query 的調(diào)用后實際上將全部結(jié)果放到了內(nèi)存中。而 while 循環(huán)實際上是對內(nèi)存中的數(shù)據(jù)進行循環(huán)迭代。相反,如果使用 mysql_unbuffered_query 替代 mysql_query 的話,那就不會緩存結(jié)果。

<?php$link = mysql_connect(’localhost’, ’user’, ’password’);$result = mysql_unbuffered_query(’SELECT * FROM huge_table’, $link);while ($row = mysql_fetch_array($result)) { //處理數(shù)據(jù)結(jié)果}?>

不同的編程語言處理緩存覆蓋的方式不同。例如,Perl 的 DBD::mysql 驅(qū)動需要通過 mysql_use_result 屬性指定 C 語音客戶端庫(默認是 mysql_buffer_result),示例如下:

#!/usr/bin/perluse DBI;my $dbn = DBI->connect(’DBI:mysql:;host=localhost’, ’user’, ’password’);my $sth = $dbn->prepare(’SELECT * FROM huge_table’, {mysql_use_result => 1});$sth->execute();while (my $row = $sth->fetchrow_array()) {#處理數(shù)據(jù)結(jié)果}

注意到 prepare 指定了使用結(jié)果而不是緩存結(jié)果。也可以通過在連接的時候指定,這會使得每次查詢都不緩存。

my $dbn = DBI->connect(’DBI:mysql:;mysql_use_result=1;host=localhost’, ’user’, ’password’);

以上就是解讀MySQL的客戶端和服務(wù)端協(xié)議的詳細內(nèi)容,更多關(guān)于MySQL 客戶端和服務(wù)端協(xié)議的資料請關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

相關(guān)文章:
主站蜘蛛池模板: 成都思迪机电技术研究所-四川成都思迪编码器 | 自动气象站_气象站监测设备_全自动气象站设备_雨量监测站-山东风途物联网 | 绿萝净除甲醛|深圳除甲醛公司|测甲醛怎么收费|培训机构|电影院|办公室|车内|室内除甲醛案例|原理|方法|价格立马咨询 | 洗砂机械-球磨制砂机-洗沙制砂机械设备_青州冠诚重工机械有限公司 | 双段式高压鼓风机-雕刻机用真空泵-绍兴天晨机械有限公司 | 有机废气处理-rto焚烧炉-催化燃烧设备-VOC冷凝回收装置-三梯环境 | 空心明胶胶囊|植物胶囊|清真胶囊|浙江绿键胶囊有限公司欢迎您! | 打孔器,打孔钳厂家【温州新星德牌五金工具】 | 阻垢剂,反渗透阻垢剂,缓蚀阻垢剂-山东普尼奥水处理科技有限公司 真空粉体取样阀,电动楔式闸阀,电动针型阀-耐苛尔(上海)自动化仪表有限公司 | 深圳宣传片制作-企业宣传视频制作-产品视频拍摄-产品动画制作-短视频拍摄制作公司 | 桥架-槽式电缆桥架-镀锌桥架-托盘式桥架 - 上海亮族电缆桥架制造有限公司 | 缠绕机|缠绕膜包装机|缠绕包装机-上海晏陵智能设备有限公司 | 行吊_电动单梁起重机_双梁起重机_合肥起重机_厂家_合肥市神雕起重机械有限公司 | 希望影视-高清影视vip热播电影电视剧免费在线抢先看 | 口信网(kousing.com) - 行业资讯_行业展会_行业培训_行业资料 | 气体检测仪-氢气检测仪-可燃气体传感器-恶臭电子鼻-深国安电子 | 欧版反击式破碎机-欧版反击破-矿山石料破碎生产线-青州奥凯诺机械 | 原色会计-合肥注册公司_合肥代理记账公司_营业执照代办 | 扒渣机,铁水扒渣机,钢水扒渣机,铁水捞渣机,钢水捞渣机-烟台盛利达工程技术有限公司 | 澳门精准正版免费大全,2025新澳门全年免费,新澳天天开奖免费资料大全最新,新澳2025今晚开奖资料,新澳马今天最快最新图库 | 北京发电机出租_发电机租赁_北京发电机维修 - 河北腾伦发电机出租 | 柔性输送线|柔性链板|齿形链-上海赫勒输送设备有限公司首页[输送机] | 医学模型生产厂家-显微手术模拟训练器-仿真手术模拟训练系统-北京医教科技 | 小青瓦丨古建筑瓦丨青瓦厂家-宜兴市徽派古典建筑材料有限公司 | 重庆中专|职高|技校招生-重庆中专招生网 | 自清洗过滤器-全自动自清洗过反冲洗过滤器 - 中乂(北京)科技有限公司 | 国产液相色谱仪-超高效液相色谱仪厂家-上海伍丰科学仪器有限公司 | 卓能JOINTLEAN端子连接器厂家-专业提供PCB接线端子|轨道式端子|重载连接器|欧式连接器等电气连接产品和服务 | 石英粉,滑石粉厂家,山东滑石粉-莱州市向阳滑石粉有限公司 | 砂磨机_立式纳米砂磨机_实验室砂磨机-广州儒佳化工设备厂家 | 讲师宝经纪-专业培训机构师资供应商_培训机构找讲师、培训师、讲师经纪就上讲师宝经纪 | 定量包装机,颗粒定量包装机,粉剂定量包装机,背封颗粒包装机,定量灌装机-上海铸衡电子科技有限公司 | 低噪声电流前置放大器-SR570电流前置放大器-深圳市嘉士达精密仪器有限公司 | 扬尘在线监测系统_工地噪声扬尘检测仪_扬尘监测系统_贝塔射线扬尘监测设备「风途物联网科技」 | 深圳昂为官网-气体分析仪,沼气分析仪,动态配气仪,气体传感器厂家 | 污水处理设备,一体化泵站,一体化净水设备-「梦之洁环保设备厂家」 | 高温高压釜(氢化反应釜)百科 | 标准品网_标准品信息网_【中检计量】 | 杭州代理记账多少钱-注册公司代办-公司注销流程及费用-杭州福道财务管理咨询有限公司 | 深圳激光打标机_激光打标机_激光焊接机_激光切割机_同体激光打标机-深圳市创想激光科技有限公司 深圳快餐店设计-餐饮设计公司-餐饮空间品牌全案设计-深圳市勤蜂装饰工程 | 澳门精准正版免费大全,2025新澳门全年免费,新澳天天开奖免费资料大全最新,新澳2025今晚开奖资料,新澳马今天最快最新图库-首页-东莞市傲马网络科技有限公司 |