mysql lenenc int_MySQL-NonMySQL同步工具源碼解讀——確定同步位置

經過上一節的鑒權過后,程序已經受主庫認可,并且可以像主庫發起同步請求。在發起請求之前,還有一個可選的步驟:確認同步時間點。同步時間點由兩個屬性進行標識:Binlog文件名、偏移量。工具支持自定義時間點,如果沒有指定,默認從主庫的當前時間點開始同步。下面,介紹獲取時間點協議,主要是向主庫發起“SHOW MASTER STATUS”查詢指令。

這是一個COM_QUERY類型的查詢。COM_QUERY是基本的查詢命令,服務器返回若干行,每行若干列,可能我們常見的select指令,也是COM_QUERY命令。他的格式非常簡單。1 [03] COM_QUERY

string[EOF] the query the server shall execute

而解析服務器返回的結果可以說非常復雜,所以我們寫數據庫程序一般是使用客戶端庫,而不是自行解析。總體流程如下:

0cd836d71112b6532d09c5d3a561bd84.png

對于第一個字節是0xfb的情況,只在執行如下指令的時候才會發生。應用目前沒有這種操作,所以暫時忽略之。LOAD DATA LOCAL INFILE '' INTO TABLE

EOF、ERR、OK包的格式上一節都有描述,下面給出列定義和行數據的解析方法。

列定義

主要是兩個版本,一個是ColumnDefinition41和ColumnDefinition320這兩種,后者應用于4.1以前版本的MySQL。這里只給出新版MySQL的格式。lenenc_str catalog

lenenc_str schema

lenenc_str table

lenenc_str org_table

lenenc_str name

lenenc_str org_name

lenenc_int length of fixed-length fields [0c]

2 character set

4 column length

1 type

2 flags

1 decimals

2 filler [00] [00]

if command was COM_FIELD_LIST {

lenenc_int length of default-values

string[$len] default values

}

行數據

每行可以包含多個列,每個列都是一個lenenc_str。

lenenc_xxx

這里簡單說一下這種lenenc_xxx類型的東西到底是什么。lenenc_str由兩部分組成,第一部分是一個lenenc_int類型、標記字串長度的整數,第二部分是字串本身。這個lenenc_int類型,保證了字串長度可以超過255。同時考慮到大部分數據都比較短,每次都用多個字節表示長度過于浪費,于是指定了編碼規則,規則如下:

A. 如果第一個字節小于0xfb,那么他本身就是字串長度。

B. 如果第一個字節是0xfc,那么他后面的2個字節表示字串長度。

C. 如果第一個字節是0xfd,那么他后面的3個字節表示字串長度。

D. 如果第一個字節是0xfe,那么他后面的8個字節表示字串長度。需要注意,此時需要查看究竟他后面有沒有8個字節,如果沒有,可能這是一個EOF包。

E. 如果第一個字節是0xff,那么這意味著一個ERR包。

F. 如果第一個字節是0xfb,這只會出現在行數據中,意味著這個字段是個NULL。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/259738.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/259738.shtml
英文地址,請注明出處:http://en.pswp.cn/news/259738.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

DancingLinks刷題集

HDU 3663 Power Stations 精確覆蓋 題意&#xff1a;每個城市i有xi->yi天可以成為發射站&#xff0c;發射站覆蓋范圍為與該站有一條邊鏈接的城市。 同時&#xff0c;每個每天城市必須且只能被一個發射站覆蓋 天數D<5。 每個城市的發射站關閉后就不再開啟。即只能選擇一段…

【web前端優化】前端無優化,庸人自擾之!

前言 我發現一個人厲害不只是他厲害&#xff0c;他的名字也一定要跟著厲害才行&#xff0c;比如我刀狂劍癡葉小釵了&#xff0c;若是老夫叫做刀狂劍癡葉小草&#xff0c;估計就缺少氣勢了&#xff01;&#xff01;&#xff01; 又如百世經綸一頁書&#xff0c;如果叫做百世經綸…

react源碼解讀 {createClass}

對一個框架源碼的解讀&#xff0c;既有利于更深入地了解框架&#xff0c;使用上更得心應手&#xff0c;又可以學習到其中代碼組織的思路&#xff0c;吸收其精華簡潔的寫法以便于日常工作上使用。下面我就挑選近年大熱門react&#xff08;15.3.1&#xff09;&#xff0c;從中剖析…

mysql分析sql語句性能_sql語句執行性能分析

explain根據上面提到的explain去比較&#xff0c;就可以得出結果了mysql> explain select * from users limit 1000,20;---------------------------------------------------------------------------------| id | select_type | table | type | possible_keys | key | key…

sourceTree添加git密鑰步驟

給多個遠程服務器比如https://github.com/wangjian2014/wjtest/blob/master/wj.txt添加public密鑰 本地服務器添加private密鑰 SSH Client 選擇PuTTY/Plink 選擇Generate&#xff0c;生成public 和private密鑰&#xff0c;將public密鑰數據復制到遠程服務器上面 保存private…

[tomcat] 配置數據源介紹

從tomcat5.5開始,內置了DBCP數據源的實現。tomcat數據源提供兩種配置方式,兩種數據源的訪問范圍不同&#xff0c; 1.全局數據源:顧名思義在tomcat應用下的所有web都可以訪問。 2.局部數據源&#xff1a;適用單個web應用 ★★ 不管以那種方式都得提供特定數據源的jdbc驅動。 此…

background-size

background-size:contain;contain:包含 按比例調整圖片&#xff0c;使得圖片的寬度自適應容器的寬度。 相當于在ps中&#xff0c;約束比例設置原始圖片的寬度值等于容器的寬度值。 如果圖片過大&#xff0c;等比壓縮后容器的高度方向上可能會有空白。 background-size:cover;co…

在mybatis用mysql的代碼塊_關于Mybatis 中使用Mysql存儲過程的方法

1.存儲過程的簡介我們常用的操作數據庫語言SQL語句在執行的時候需要要先編譯&#xff0c;然后執行&#xff0c;而存儲過程(Stored Procedure)是一組為了完成特定功能的SQL語句集&#xff0c;經編譯后存儲在數據庫中&#xff0c;用戶通過指定存儲過程的名字并給定參數(如果該存儲…

MySQL5.6免安裝配置與“系統找不到指定的文件”錯誤

1.下載免安裝版本的mysql-5.6.11-winx64 (本機 win7 64位)2.將文件解壓到任意&#xff0c;不要有中文&#xff08;有中文的情況沒試過&#xff0c;不過最好避免這種情況&#xff09;3.配置mysql 環境變量&#xff0c;在 path后面加上D:\Program Files\mysql-5.6.11-winx64\bin…

安裝配置OSA運維管理平臺

1、下載完整包V1.0.2wget http://www.osapub.com/download/OSA_BETA_V1.0.2.tar.gzV1.0.5wget http://www.osapub.com/download/OSA_BETA_V1.0.5.tar.gz 2、解壓安裝tar xvf OSA_BETA_V1.0.5.tar.gzmv osa /usr/local/ PS&#xff1a;該版本只允許指向/usr/local/osa/目錄&…

as5300g2 nas軟件功能_【浪潮混閃存儲AS5300G5-可同時提供SAN和NAS兩種服務的中端混閃存儲系統】價格_廠家 - 中國供應商...

功能特性極速性能(1)平臺升級&#xff1a;G5采用全新一代硬件平臺&#xff0c;芯片升級、規格升級&#xff0c;性能同比上一代平均提升30%&#xff0c;為提高存儲系統的數據處理效率提供有力支撐。同時結合G5的智能軟件&#xff0c;如智能緩存加速、智能分層、智能QOS等高級功能…

c 總結

C-總結 #pragma mark - 第一章&#xff1a;C基礎 void func1(); void func1() { // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ int a 030; // 以0開頭得數是八進制的數&#xff0c;計算的時候要換算成10進制進行計算 int b a * 10; printf("%d", b); // 此時打印…

windows下使用cpanm進行模塊安裝

windows下使用cpanm進行模塊安裝要放假了&#xff0c;突然想整理一下手頭上的軟件&#xff0c;突然發現perl的安裝模塊這個功能不能用。弄了一下&#xff0c;使得windows 下 perl 的 cpanm能用&#xff0c;避免成天為了依賴痛苦。軟件版本&#xff1a;#理論上此方法所有版本通用…

Response緩沖區

1 protected void Page_Load(object sender, EventArgs e)2 {3 //關閉緩沖區&#xff0c;輸出會一個一個寫出來&#xff08;只有在火狐瀏覽器中才有效果&#xff09;。4 //Response.BufferOutput false;5 6 //開啟緩沖區7 Response.Buffe…

Javascript模塊模式學習分享

之前一直也有聽說和接觸到模塊模式、這次整理了一下、感覺蠻有收獲的、特來分享。 模塊模式很基本的一點就是匿名函數的 閉包、通過這點來實現。 1 //模塊模式2 3 var MODULE (function(){4 /*函數默認是返回this的、但是定義了my對象后、return my; 返回值就變成了my對象…

Source Insight基本使用和快捷鍵

為什么要用Source Insight呢&#xff1f;貌似是因為比完整的IDE要更快一些&#xff0c;比較利于查看大量的代碼。 軟件的安裝很簡單&#xff0c;設置好安裝目錄。 配置好文檔路徑&#xff0c;當然這個也可以在Options里面改&#xff0c;選Options->Preferences…里面的Folde…

powerquery mysql數據庫_window 10 下 --excel | power query 通過 ODBC鏈接 mysql 數據庫

excel鏈接到mysql的方法有幾種&#xff0c;今天主要介紹如何通過ODBC鏈接odbc是 “開放數據庫連接”&#xff0c;你可以通過下載插件使得自己的excel可以連接到不同的數據庫。關于版本的選擇&#xff0c;就是excel版本obdc版本mysql obdc版本(需要一樣)第一步 下載mysql odbc…

table樣式

一直以來&#xff0c;css和JS都是軟肋&#xff0c;因為需要不得不重新溫故。 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</title><style type"text/css">table.hover…

MAC和XCODE常用快捷鍵

摘自&#xff1a;http://www.cnblogs.com/yjmyzz/archive/2011/01/25/1944325.html 1. 文件CMD N: 新文件CMD SHIFT N: 新項目CMD O: 打開CMD S: 保存CMD SHIFT S: 另存為CMD W: 關閉窗口CMD SHIFT W: 關閉文件2. 編輯CMD [: 左縮進CMD ]: 右縮進CMD CTRL LEFT: …

數組與內存控制

注&#xff1a;我已對本文章進行了更新&#xff0c;勞煩移步。 java語言是典型的靜態語言&#xff0c;因而&#xff0c;數組也是靜態的&#xff0c;即當該數組被初始化之后&#xff0c;該數組的長度是不可變的。java 語言的數組變量是引用類型&#xff0c;什么意思呢&#xff1…