亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 數據庫 > SQLite > 正文

SQLite數據庫文件格式分析(B樹的基本組織)

2024-09-07 00:10:03
字體:
來源:轉載
供稿:網友
此 分析稱為簡易版,因為后面還計劃分析一個更復雜的數據庫文件,以深入理解SQLite數據庫B樹實現的結構,從簡易的開始不失為一種好的學習方法,這里的 簡易版本文件是指大小為2K字節,即每個B樹頁1K字節,共兩個B樹頁,補充說明一下,這里的B樹頁就是指經典數據結構書上所講的B樹節點,在這里稱為頁 是因為SQLite在實現B樹時就是使用頁page的概念來組織的。
創建方法如下:
CREATE TABLE tbl1(one varchar(10),two varchar(10));
INSERT INTO "tbl1" VALUES('first', 'xxx');
INSERT INTO "tbl1" VALUES('second', 'yyy');

然后退出,用UltraEdit打開這個數據庫文件:
00000000h: 53 51 4C 69 74 65 20 66 6F 72 6D 61 74 20 33 00 ; SQLite format 3.
00000010h: 04 00 01 01 00 40 20 20 00 00 00 07 00 00 00 00 ; .....@ ........
00000020h: 00 00 00 00 00 00 00 00 00 00 00 03 00 00 00 01 ; ................
00000030h: 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 ; ................
00000040h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; ................
00000050h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; ................
00000060h: 00 00 00 00 0D 00 00 00 01 03 B8 00 03 B8 00 00 ; ..........?.?.
00000070h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; ................
這中間部分全部都是零。省去!
000003a0h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; ................
000003b0h: 00 00 00 00 00 00 00 00 46 01 06 17 15 15 01 71 ; ........F......q
000003c0h: 74 61 62 6C 65 74 62 6C 31 74 62 6C 31 02 43 52 ; tabletbl1tbl1.CR
000003d0h: 45 41 54 45 20 54 41 42 4C 45 20 74 62 6C 31 28 ; EATE TABLE tbl1(
000003e0h: 6F 6E 65 20 76 61 72 63 68 61 72 28 31 30 29 2C ; one varchar(10),
000003f0h: 74 77 6F 20 76 61 72 63 68 61 72 28 31 30 29 29 ; two varchar(10))
這是第一個B樹頁,這個B樹頁里存放了表sqlite_master的信息,這就是SQLite數據庫的系統表了。
下面分析一下這些二進制的具體涵義,SQLite統一采用大端法來表示數據,不同與一般intel機器的小端法了:
偏移地址 大小 涵義
0 16 "SQLite format 3/000"
16 2 400H=1024個字節,每個頁面的字節數
18 2 0101H表示版本號而已
20 1 每頁末端的未用空間,這里為零表示數據都是從每頁最后一個字節開始存放
21 1 最大負載分片數,類似與IP分片,一頁存不下,要分片
22 1 最小負載分片數
23 1 最小葉子負載分片數
24 4 文件修改計數,用于實現并行訪問
28 4 保留未用
32 4 第一個freelist頁
36 4 文件中的freelist頁數
40 60 這里未用
上面的這一百個字節稱為數據庫文件的文件頭,這個文件頭只有第一個B樹頁才有,后面的每一個B樹頁都沒有這個結構,后面每一頁結構都相同:
依次為:B樹頁頭結構,B樹指針結構,未用空間,B樹實際數據負載。
這里和經典數據結構書上的B樹結構有些出入,這里的目的是實際應用方便,而書上的結構目的是解釋清楚B樹的原理。所以有些不同:
一般書上講的一個B樹頁的結構為:指針,數據,指針,數據,指針,數據,...,指針
而SQLite組織為:指針,指針,指針,...,指針,數據,數據,...數據。
第一個頁面中從00000060h行第五個字節開始就表示B樹頁頭結構了:
偏移地址 大小 涵義
0 1 0Dh=1101b各位意義為1: intkey, 2: zerodata, 4: leafdata, 8: leaf
1 2 第一個空閑塊的字節偏移量,這里為0
3 2 01,這個B樹頁存放的記錄數為1個,即系統表中只存放了一條記錄,因為只創建了一個表tbl1
5 2 負載區首地址,03B8,往下看到000003b0h行那個46就是負載區的開始了
7 1 分片數,這里數據少,不考慮,所以為0
到0000006Bh偏移處B數頭結束了,接下來的就是B數指針結構了,此處只有一項,只有一個指針03B8h處。
從000003B8h偏移到結束都是sqlite_master表的實際數據了。當然這些數據也是有結構的。46h表示這條記錄有70個字節,除去其本身46,和后面的01是索引外,整個記錄剛好是70個字節,01索引后面都是payload負載數據了。
如法炮制,下面列出第二個B樹頁:
00000400h: 0D 00 00 00 02 03 E5 00 03 F3 03 E5 00 00 00 00 ; ......?.??...
00000410h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; ................
這中間部分全部為零。省去!
000007d0h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; ................
000007e0h: 00 00 00 00 00 0C 02 03 19 13 73 65 63 6F 6E 64 ; ..........second
000007f0h: 79 79 79 0B 01 03 17 13 66 69 72 73 74 78 78 78 ; yyy.....firstxxx
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
成人黄色片网站| 欧美激情欧美激情| 成人在线视频网站| 国产在线观看精品| 亚洲国产成人一区| 少妇高潮 亚洲精品| 国产精品私拍pans大尺度在线| 日本国产一区二区三区| 亚洲色图综合网| 国产日本欧美一区| 伊人久久男人天堂| 亚洲第一男人av| 国产精品久久久久久av下载红粉| 色在人av网站天堂精品| 欧美黄色片免费观看| 久久精品久久精品亚洲人| 欧美亚洲视频在线看网址| 日本a级片电影一区二区| 欧美性受xxx| 精品一区二区电影| 亚洲第一网站免费视频| 久久频这里精品99香蕉| 国产精品人人做人人爽| 国产mv免费观看入口亚洲| 国产日韩欧美成人| 亚洲自拍高清视频网站| 大胆人体色综合| 国产精品亚洲美女av网站| 少妇久久久久久| 日本免费在线精品| 国产一区二区成人| 中文字幕亚洲无线码在线一区| 国产视频亚洲精品| 欧美日韩国产成人| 九九九久久久久久| 国产成人综合久久| 国产美女久久精品香蕉69| 亚洲精品720p| 亚洲精品久久久久久久久久久久| 亚洲色图校园春色| 成人在线小视频| 成人日韩在线电影| 久久久女人电视剧免费播放下载| 欧美日韩亚洲成人| 国产在线观看不卡| 国产精品入口尤物| 亚洲国产免费av| 国产在线精品播放| 中文日韩电影网站| 日韩欧美亚洲国产一区| 日韩hd视频在线观看| 久久久国产精品视频| 青草热久免费精品视频| 欧美日韩亚洲视频一区| 国产精品专区一| 亚洲成人999| 亚洲人成电影网站色| 九九精品在线观看| 国产精品久久久久久久久久ktv| 中文字幕自拍vr一区二区三区| 国产精品自拍视频| 亚洲成人精品在线| 成人黄色免费看| 亚洲人成啪啪网站| 日韩欧美国产成人| 国产成人小视频在线观看| 日韩成人av网| 伊人久久久久久久久久| 欧美视频13p| 精品无人区太爽高潮在线播放| 欧美性感美女h网站在线观看免费| 国产精品私拍pans大尺度在线| 海角国产乱辈乱精品视频| 在线视频中文亚洲| 日本午夜人人精品| 欧美日韩国产精品| 日本免费一区二区三区视频观看| 97国产精品视频| 久久久久久久久爱| 日韩黄色av网站| 亚洲最大的免费| 日韩免费观看在线观看| 欧美亚洲免费电影| 国产精品成久久久久三级| 热久久视久久精品18亚洲精品| 日韩中文字幕免费视频| 国产成人aa精品一区在线播放| 91精品久久久久久久久久入口| 亚洲一区二区三区四区在线播放| 亚洲欧美在线磁力| 日韩高清电影免费观看完整| 欧美激情视频免费观看| 中文字幕精品久久| 久久国产精品亚洲| 狠狠做深爱婷婷久久综合一区| 欧美成人激情在线| 日韩网站免费观看高清| 欧美大成色www永久网站婷| 欧美第一淫aaasss性| 亚洲free性xxxx护士hd| 日韩精品中文字幕在线播放| 久久久久久久成人| 国外色69视频在线观看| 国产精品高潮呻吟久久av野狼| 在线激情影院一区| 欧美成在线观看| 欧美日韩免费网站| 成人免费高清完整版在线观看| 日本高清视频精品| 中文字幕欧美精品日韩中文字幕| 亚洲a级在线播放观看| 国产精品久久综合av爱欲tv| 在线播放日韩精品| 国产精品av免费在线观看| 高跟丝袜欧美一区| 国产精品九九久久久久久久| 亚洲国产毛片完整版| 精品国产依人香蕉在线精品| 91禁国产网站| 亚洲国产美女精品久久久久∴| 日韩国产高清视频在线| 欧美丰满片xxx777| 亚洲欧洲视频在线| 最近2019年日本中文免费字幕| 最近2019年好看中文字幕视频| 亚洲人成毛片在线播放| 欧美最猛黑人xxxx黑人猛叫黄| 亚洲精品中文字| 国产精品久久久久久av福利软件| 欧美成年人视频| 亚洲精品国产精品久久清纯直播| 成人精品久久一区二区三区| 最近的2019中文字幕免费一页| 成人免费福利视频| 中文字幕视频在线免费欧美日韩综合在线看| 国产精品美女无圣光视频| 国内精品中文字幕| 成人h视频在线观看播放| 精品一区二区电影| 伊人亚洲福利一区二区三区| 亚洲成av人乱码色午夜| 国产精品成人av在线| 亚洲欧美综合区自拍另类| 国产精品69久久| 亚洲欧洲国产伦综合| 国产精品色婷婷视频| 国产精品一久久香蕉国产线看观看| 欧美色欧美亚洲高清在线视频| 日本欧美中文字幕| 亚洲一区第一页| 中文字幕精品久久| 久久激情五月丁香伊人| 日韩av影片在线观看| 久久深夜福利免费观看| 九九精品在线视频| 日韩亚洲第一页| 国产精品揄拍一区二区| 国产裸体写真av一区二区| 日韩成人av在线| 欧美一级视频免费在线观看| 亚洲免费视频一区二区| 精品亚洲一区二区三区四区五区| 精品亚洲夜色av98在线观看| 欧美日韩在线影院|