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

首頁 > 數據庫 > SQLite > 正文

Sqlite虛擬機VDBE原理

2024-09-07 00:09:56
字體:
來源:轉載
供稿:網友

VDBE (virtual database engine)是一個運行他自己的虛擬機語言組成的程序的虛擬機。每條程序都是用來查詢或者操作數據庫的。出于這個目的,VDBE的機器語言被設計用來進行搜索,讀和修改數據庫。
每一條VDBE 說明包括一個OPCODE 和3個OPRANDS分別為P1,P2和P3。P1,P2 為整數,P3是一個指向數據結構或者字符串的指針,有可能為空。大多數說明只用到1-2個OPRANDS,只有少數 說明用到了全部3個OPRANDS。有很多非常重要的說明根本沒有用到任何OPRANDS但是卻能讀取數據并且將結果寫入運行時棧當中。
一段VDBE代碼從說明0開始運行,直到
1。遇到致命錯誤;
2。執行了停止說明;
3。整段代碼運行完畢,所有打開的數據庫都已經關閉,所有內存都已經釋放,棧為空。
example:
1.建立一個數據表,并且插入一個數據
CREATE TABLE examp(one text,two int);
INSERT INTO examp VALUES( 'Hello,World!'99);
VDBE將這樣解釋并執行這兩條語句
addr opcode p1 p2 p3
---- ------------ ----- ----- -----------------------------------
0 Transaction 0 0
1 VerifyCookie 0 81
2 Transaction 1 0
3 Integer 0 0
4 OpenWrite 0 3 examp
5 NewRecno 0 0
6 String 0 0 Hello, World!
7 Integer 99 0 99
8 MakeRecord 2 0
9 PutIntKey 0 1
10 Close 0 0
11 Commit 0 0
12 Halt 0 0
整個操作被分解為12條VDBE說明,前3條和最后2條是系統的標準步驟,所以真正完成我們的工作的是中間7條說明。這段代碼中沒有跳轉語句,所有整個代碼段從上到下執行一遍。
0 Transaction 0 0
1 VerifyCookie 0 81
2 Transaction 1 0

Transaction 開始一項交互活動。直到 遇到Commit 或者Rollback 時停止。P1參數是交互開始的數據庫文件的索引。0號索引是主文件,1代表這個文件存放的是臨時表。如果P2參數不為0,則開始一個寫交互。當交互開始之 后,對應的數據庫文件獲得"write lock"狀態。在這項交互進行當中其他進程將無法讀取這個文件。一項交互必須在任何對數據文件的修改動作之前進行。如果P2是0這文件將獲得一個 "read lock"
VerifyCookie 檢查數據庫0號參數(計劃版本)以確保它=P2,P1是數據庫編號,0代表主數據庫文件,1代表文件擁有臨時表,其他更大的數字代表附加數據庫。
在建立VerifyCookie之前,必須有一個Transaction已經開始,或者已經建立了一個read lock.
第2個Transaction語句開始一項交互,應用對象是數據庫1 (一個臨時數據表)。
3 Integer 0 0
4 OpenWrite 0 3 examp
Integer 將整數P1 (0)壓入堆棧。0是下面 OpenWrite 所要用到的數據庫的編號,如果P3不為0 ,那么它就是一個代表相同整數的字符串,執行這條語句后,堆棧看起來是這樣
(integer) 0

OpenWrite 創建一個新的讀/寫指針,指向P1(0)也就是數據庫中的主文件“examp”,他的根頁(節點)是P2(3),因為數據庫文件第一頁是空的,第二頁存放 的是數據表的索引。從第3頁開始存放每個數據表當中的數據。P3("examp")是被打開的表的名字,這個參數是不被使用的,只是使代碼更容易閱讀而 已。這條語句將棧頂元素彈出(0) ,所以之后,堆棧為空。

5 NewRecno 0 0
NewRecno 為指針P1指向的數據表創建一個整型的新的紀錄號。這個紀錄好并不是一個用在表里的鍵值。新的紀錄號被壓入堆棧。這個動作之后,堆??雌饋硎沁@樣:
(integer) new record key

6 String 0 0 Hello, World!
String 將它的P3參數壓入堆棧,之后,堆棧應該是這樣:
(string) "Hello World!"
(integer) new record key

7 Integer 99 0 99
動作之后,堆棧應該是這樣:
(integer) 99
(string) "Hello, World!"
(integer) new record key

8 MakeRecord 2 0
MakeRecord 將棧頂的P1個元素取出( 2個),并且將他們轉換成二進制,然后再把新生成的結構壓回堆棧。之后,堆棧應該是這樣:
(record) "Hello, World!", 99
(integer) new record key
9 PutIntKey 0 1
PutIntKey 將棧頂的2個元素作為一個entry寫入P1所指的表中,如果表中元素不存在,那么將被創建。如果已經存在,則會被覆蓋。數據是棧頂元素,鍵是下面的元 素。這條語句當中,進行2次出棧操作。P2參數用來判定是否修改表中當前rowID,P2=1則rowID 1,并且由 last_insert_rowID()函數返回,如果rowID=0,則行號不變,仍未當前ID.(這就解釋了"表中元素不存在,那么將被創建。如果已 經存在,則會被覆蓋").這條語句是文件操作上的insert.

10 Close 0 0
Close 關閉之前打開的一個文件指針(0)(對應于前面的OpenWrite), 如果文件指針當前并沒有打開,這條語句不被執行。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
精品福利在线看| 日本久久久久久久| 亚洲国产精品久久久久秋霞蜜臀| 久久久久中文字幕2018| 国产精品 欧美在线| 日韩视频在线一区| 91国内精品久久| 国产精品自在线| 欧美孕妇性xx| 久久视频这里只有精品| 久久偷看各类女兵18女厕嘘嘘| 色青青草原桃花久久综合| 成人信息集中地欧美| 狠狠色狠狠色综合日日小说| 国产精品露脸自拍| 欧美视频在线观看免费| 国产精品视频地址| 91国产中文字幕| 欧美日韩中国免费专区在线看| 疯狂做受xxxx高潮欧美日本| 久久久视频免费观看| 欧美激情第99页| 国产成人在线视频| 日韩av男人的天堂| 国产精品久久久久免费a∨| 中文字幕少妇一区二区三区| 九九热这里只有在线精品视| 欧美黑人国产人伦爽爽爽| 欧美性精品220| 成人免费视频在线观看超级碰| 一区二区三区视频免费| 欧美在线播放视频| 国产精品一区二区三区在线播放| 国产精品欧美久久久| 黄色一区二区三区| 九九久久久久99精品| 国产成人aa精品一区在线播放| 98精品国产高清在线xxxx天堂| 国内精品美女av在线播放| 日韩经典一区二区三区| 亚洲成人精品视频在线观看| 69av视频在线播放| 91网站在线免费观看| 一区二区三区 在线观看视| 亚洲成年人在线| 欧美一级电影久久| 欧美专区日韩视频| 日韩精品视频在线观看网址| 久久伊人精品一区二区三区| 亚洲黄色有码视频| 国产日韩欧美成人| 国产精品综合网站| 超碰日本道色综合久久综合| 亚洲女人天堂视频| 91精品综合久久久久久五月天| 亚洲成人黄色在线观看| 色偷偷偷亚洲综合网另类| 国产精品专区h在线观看| 日韩精品极品视频免费观看| 一本色道久久综合狠狠躁篇怎么玩| 色吧影院999| 国产精品亚洲自拍| 久久久视频在线| 久久资源免费视频| 精品性高朝久久久久久久| 日本人成精品视频在线| 欧美高清电影在线看| 欧美成人国产va精品日本一级| 美女av一区二区三区| 97色在线观看| 91免费视频网站| 国产精品视频资源| www亚洲欧美| 中文字幕亚洲情99在线| 美女视频黄免费的亚洲男人天堂| 欧美精品一区在线播放| 国产精品久久久久久av福利| 精品国产31久久久久久| 久久中国妇女中文字幕| 国产欧美精品日韩| 亚洲美女福利视频网站| 久久久999成人| 欧美日韩成人黄色| 美女av一区二区三区| 欧美做受高潮1| 精品久久久久久久中文字幕| 97在线视频国产| 91po在线观看91精品国产性色| 亚洲另类欧美自拍| 亚洲男人天堂手机在线| 91精品久久久久久久久中文字幕| 国产亚洲美女精品久久久| 亚洲午夜小视频| 亚洲精品中文字幕av| 国产日韩欧美在线视频观看| 欧美精品在线免费播放| 国产精品欧美一区二区| 国产免费亚洲高清| 在线播放日韩av| 欧美极品欧美精品欧美视频| 亚洲无亚洲人成网站77777| 黑丝美女久久久| 26uuu日韩精品一区二区| 国内精品久久久久久中文字幕| 国产精品麻豆va在线播放| 亚洲精品日产aⅴ| 日韩电影中文字幕在线| 精品亚洲一区二区三区在线播放| 91久久国产婷婷一区二区| 国产精品pans私拍| 国产精品第七十二页| 久久免费视频在线观看| 亚洲男人第一av网站| 亚洲综合精品一区二区| 91精品国产综合久久久久久久久| 久久综合久久美利坚合众国| 亚洲影院在线看| 欧美韩国理论所午夜片917电影| 国产一区二区三区日韩欧美| 亚洲国产福利在线| 久久精品久久久久久国产 免费| 日韩av快播网址| 国产在线观看91精品一区| 欧美亚洲国产日本| 91精品国产91久久久久久不卡| 亚洲欧美日韩在线一区| 国产精品亚洲视频在线观看| 97高清免费视频| 久久精品欧美视频| 欧美精品videofree1080p| 91在线视频九色| 欧美中文在线观看| 91国内免费在线视频| 国产不卡av在线免费观看| 国产日本欧美一区| 高清欧美性猛交xxxx黑人猛交| 欧美www视频在线观看| 色哟哟网站入口亚洲精品| 中文字幕精品www乱入免费视频| 91精品久久久久久综合乱菊| 欧美激情一区二区三级高清视频| 亚洲free性xxxx护士hd| 亚洲精品视频网上网址在线观看| 久久精品国产69国产精品亚洲| 日韩av在线电影网| 日韩美女主播视频| 国产精品亚洲视频在线观看| 日韩av最新在线观看| 成人网中文字幕| 久久伊人免费视频| 国产人妖伪娘一区91| 热re91久久精品国99热蜜臀| 精品综合久久久久久97| 日韩风俗一区 二区| 精品一区二区亚洲| 成人在线观看视频网站| 91精品国产一区| 色悠悠久久久久| 久久亚洲精品小早川怜子66| 亚洲欧美激情一区| 日韩成人激情影院| 日韩欧美在线网址| 欧美一级高清免费| 狠狠色狠色综合曰曰|