雙線服務(wù)器響應(yīng)的不同類型

2021-03-17    分類: 網(wǎng)站建設(shè)

雙線服務(wù)器響應(yīng)的不同類型
一旦雙線服務(wù)器收到命令,會執(zhí)行命令,然后發(fā)送一個或多個響應(yīng)包。本篇將討論幾種不同類型的響應(yīng)。
數(shù)據(jù)域
數(shù)據(jù)域是許多雙線服務(wù)器響應(yīng)包的重要組件。一個數(shù)據(jù)域包括一個長度指定符序列,后面是實際的數(shù)據(jù)值。通過研究sql/pack.c中的net_store_length()定義可以理解長度指定符序列:
雙線服務(wù)器響應(yīng)的不同類型
正如你所看到的,如果length數(shù)值不超過251,那么代碼將它保存在1個字節(jié)中。如果是251字節(jié)以上但裝在兩個字節(jié)中,則代碼為其加上252這個數(shù)值前綴,然后將其寫到接下來的兩個字節(jié)中。如果兩個字節(jié)不夠而4個字節(jié)夠用,則代碼使用253作為代碼,然后以長度占用后面的字節(jié)。如果4個字節(jié)不夠,則代碼使用254作為代碼,然后存儲在8個字節(jié)中。必須注意,代碼后面的所有長度值都低字節(jié)優(yōu)先存儲。
有人可能會問,為什么把1字節(jié)長度限制為251,而net_store_length()中的個保留值卻是252?代碼251具有特殊的含義,它表明代碼后面沒有長度數(shù)值或數(shù)據(jù),且該域的數(shù)值為SQL NULL。
為什么要這么復(fù)雜呢?大多數(shù)時候數(shù)據(jù)域都相當(dāng)短,尤其是,如果一個查詢返回大量記錄或選擇了大量列,那么,響應(yīng)中將有大量這些內(nèi)容。在這種情況下,每個域只要浪費1個字節(jié),會積少成多形成龐大的系統(tǒng)開銷。域長度超過250的機會相對較少,但即使是在這種情況下,浪費1字節(jié)也不會引入注意——因為雙線服務(wù)器至少已經(jīng)在發(fā)送253個字節(jié):長度至少占用2字節(jié),域值至少占用251字節(jié)。
緊跟在長度序列后面的是實際數(shù)據(jù)值,該值被轉(zhuǎn)換為字符串表達式。
OK包
發(fā)送OK包則表示雙線服務(wù)器成功執(zhí)行了命令。發(fā)送OK包是對下列命令的響應(yīng):
雙線服務(wù)器響應(yīng)的不同類型
這一類型的包括用于不要求返回結(jié)構(gòu)集的命令。然而它的格式卻允許發(fā)送一些額外的狀態(tài)信息,如修改記錄的數(shù)目、自動生成的主鍵數(shù)值、或者字符串格式的狀態(tài)消息。包體的結(jié)構(gòu)收錄在表4-8中。
雙線服務(wù)器響應(yīng)的不同類型
為了從雙線服務(wù)器內(nèi)部發(fā)送OK包,你必須調(diào)用send_ok()。
錯誤包
在處理命令時如果發(fā)生錯誤,雙線服務(wù)器會以錯誤包進行響應(yīng)。格式收錄在表4-9中。
對狀態(tài)字節(jié)區(qū)采用7字節(jié)限制的原因是,包體起始處的十進制254字節(jié)可以具有不同的含義:可以使用本篇前文的“數(shù)據(jù)域”中描述的域長度格式來指定結(jié)構(gòu)集中的域的數(shù)目。
為了發(fā)送一個EOF包,雙線服務(wù)器會使用send_eof()。
結(jié)果集包
大量查詢產(chǎn)生一個結(jié)果集,具體例子有SELECT、SHOW、CHECK、REPAIR、EXPLAIN。只要所期望的來自查詢的信息多于簡單的狀態(tài)報告,會返回結(jié)果集。結(jié)果集包含一系列包。
.包體包括標(biāo)準(zhǔn)長度指定符序列的包,不過目前的數(shù)值含義不一樣,它指的是結(jié)果集中的域的數(shù)目。
.一組域描述符包,每個域一個包,采用結(jié)果集中的域順序。
.EOF結(jié)束包
域描述包的包體格式如表4-11和4-12所示。
雙線服務(wù)器響應(yīng)的不同類型
在發(fā)送各個包的域定義序列之后,雙線服務(wù)器接著發(fā)送數(shù)據(jù)的實際行,每行一個包。每行數(shù)據(jù)包包含一系列以標(biāo)準(zhǔn)域數(shù)據(jù)格式存儲的數(shù)值。在報告常規(guī)查詢結(jié)果時,域數(shù)據(jù)會轉(zhuǎn)換為字符串格式。在使用預(yù)處理語句(COM_PREPARE)時,域數(shù)據(jù)以本來格式發(fā)送,低字節(jié)優(yōu)先。
在發(fā)送出所有的數(shù)據(jù)行后,以EOF包終止包序列。

網(wǎng)站欄目:雙線服務(wù)器響應(yīng)的不同類型
轉(zhuǎn)載來源:http://www.muchs.cn/news24/105374.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供響應(yīng)式網(wǎng)站、軟件開發(fā)、微信小程序、靜態(tài)網(wǎng)站、Google、網(wǎng)站營銷

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設(shè)