成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

從通信協議看MySQL客戶端與中間件設計

數據庫 MySQL
本文以UPSQL Proxy 2.4.0中關鍵的報文流式處理為例,介紹MySQL通信協議,以及與客戶端的關系。

 [[328201]]

本文以UPSQL Proxy 2.4.0中關鍵的報文流式處理為例,介紹MySQL通信協議,以及與客戶端的關系。

[[328202]]

MySQL通信協議協議介紹

在執行MySQL查詢,如“selecet * from test”時,MySQL的應答包被稱為ResultSet,其為一組邏輯包(協議包),如圖1所示包含兩個部分: 

  1. 1. 元數據,包含如下數據包:  
  2.     - Field_Count:列的個數  
  3.     - Field:列的描述,一般為多個  
  4.     - Eof:在列信息描述,或數據發送完畢時候,用以標記一段數據的發送結束。在較高版中,該數據包被取消。  
  5. 2. 行數據,包含:  
  6.     - Row:一行數據的內容,多行時會出現多個  
  7.     - Err:描述錯誤,出現錯誤時,為最后一個邏輯包  
  8. 或  
  9.     - OK:在較高版本協議中,用以替換Eof包,用以傳輸更多信息 

圖1 MySQL結果集報文結構

[[328204]]

客戶端庫接口介紹

由此MySQL CAPI中提供了兩套函數接口: 

  1.  - mysql_store_result/mysql_stmt_store_result  
  2.  - mysql_use_result  
  3. 一般而言,這兩套接口的區別是:  
  4. - mysql_store_result/mysql_stmt_store_result: 將結果存儲在應用內存  
  5. - mysql_use_result: 數據保存在tcp buffer或數據庫server端 

但從通信過程的角度來看: 

  1. - mysql_store_result/mysql_stmt_store_result: 需要等待所有數據傳輸完畢,并且客戶端解析完畢  
  2. - mysql_use_result: 簡單而言只要得到row數據包,就可以向上層api返回數據  
  3. 所以,我們內部將mysql_use_result稱為流式處理,流式處理有2大優點:  
  4. - 應用層響應速度更快,因為不需要等待收齊結果集  
  5. - 內存管理更可控,可以避免客戶端內存不足 

在mysql客戶端以及mysqldump命令中,有如下參數: 

  1. - --quik/-q,即使用mysql_use_result,進行流式處理,可以避免mysqldump大數據量下oom 

JDBC在設計上封裝性更高,一般而言其邏輯與CAPI的 

  1. mysql_store_result/mysql_stmt_store_result處理邏輯一樣,但有2個方法可以將其轉換為流式處理模式:  
  2. - 代碼層面:prepareStatement第2、3個參數設置為ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY  
  3. - JDBC URL設置(不修改代碼):增加參數useCursorFetch=true&defaultFetchSize=-2147483648 (該方法在不同版本的jdbc驅動上表現有區別,不建議采用) 

API與協議解析的關系圖2所示:

▲ 圖2 API與協議解析

[[328205]]

UPSQL Proxy中間件設計

在UPSQL Proxy 2.4.0以前使用的是阻塞模式,即往多個后端收齊結果集后,再向用戶應答,這樣有2個缺點:-

  1. 響應時延延長  
  2. Proxy層內存控制,導致生產環境不支持大于分庫下10w行以上數據量返回 

UPSQL Proxy 2.4.0實現了流式處理,簡單而言就是,將行信息盡快以流的形式發給客戶端而不是等中間件收齊后發送,邏輯如圖3所示: 

▲ 圖3 UPSQL Proxy的流式處理

即在分庫場景下,會并發訪問各個數據節點,當得到一個完整的元數據后,就可以立刻返回給請求方,之后接收到行數據后,都可以及時的返回給請求方,以此降低中間件的內存需求,同時提高客戶端的相應速度。

[[328206]]

總結

本文介紹了銀聯自研中間件UPSQL Proxy早前的一次關鍵功能迭代,希望能讓大家感受到MySQL協議的魅力。

  福利時間(目前投遞會有作者的內推機會哦  🙌🏻🙌🏻🙌🏻):

中國銀聯云計算中心社會招聘崗位正在火熱招錄中,目前開放投遞的崗位如下:

1、運營服務  

2、系統運維  

3、操作系統開發

4、數據庫開發(云計算方向)

5、開源組件  

6、綜合文秘

有意向者可打開鏈接【可復制到瀏覽器或者點擊閱讀原文】 https://join.unionpay.com 選擇“社會招聘”分類進行投遞。【注:內推請填寫 周家晶及工號:01362912為推薦人】 

 

責任編輯:龐桂玉 來源: ITPUB
相關推薦

2023-04-26 07:57:29

軟件架構設計

2023-10-12 19:37:50

通信協議HTTP

2019-09-29 11:04:22

MySQL數據庫Atlas

2020-02-10 15:30:51

數據庫MySQLDAL

2022-10-21 10:48:17

消息中間件互聯網應用協議

2009-08-21 15:59:22

服務端與客戶端通信

2009-08-21 16:14:52

服務端與客戶端通信

2023-04-28 08:23:51

軟件架構設計

2011-05-24 15:10:48

2021-02-11 08:21:02

中間件開發CRUD

2011-10-24 07:41:38

SOA中間件應用服務器

2010-06-11 14:31:08

通信協議

2022-12-02 14:42:37

2015-10-16 10:10:18

應用層通信協議

2018-02-01 10:19:22

中間件服務器系統

2018-07-29 12:27:30

云中間件云計算API

2016-11-11 21:00:46

中間件

2018-12-07 12:47:06

iPaaS混合云多云

2013-07-31 08:42:08

BaaS移動云服務移動中間件

2021-06-22 15:06:13

Redis客戶端 Redis-clie
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 东京久久 | 成人精品一区二区三区中文字幕 | 美国a级毛片免费视频 | 国产美女精品视频免费观看 | 91网站在线看 | 狠狠色狠狠色综合系列 | 日韩欧美亚洲 | 亚洲美女视频 | 麻豆亚洲 | 久久99精品国产99久久6男男 | 日韩av一区二区在线观看 | 久久久精品一区二区三区 | 91精品国产综合久久久久久蜜臀 | 高清人人天天夜夜曰狠狠狠狠 | 久久在线精品 | 99re视频精品 | 91福利网址 | 一区二区在线观看免费视频 | 免费看的av | 欧美午夜精品久久久久久浪潮 | 亚洲精品乱码久久久久v最新版 | 激情欧美一区二区三区 | 国产精品欧美一区二区三区不卡 | 麻豆视频国产在线观看 | 精品久久久久久久人人人人传媒 | 亚洲精品乱码久久久久久按摩观 | 日日干夜夜操天天操 | 成人亚洲精品 | 中文字幕视频三区 | 午夜精品久久久久久久久久久久久 | 国产乱码精品一区二区三区忘忧草 | 黑色丝袜三级在线播放 | 午夜视频精品 | 91社区视频 | 成人h动漫亚洲一区二区 | 日本欧美黄色片 | 中文字幕视频一区 | 国产激情在线看 | 国产高清不卡 | 激情亚洲 | 欧美高清免费 |