99精品久久精品一区二区-亚洲熟妇无码?v在线播放-日本国产精品无码字幕在线观看-久久久亚洲永夜AV-亚洲一级无码一区二区一-免费国产成高清人在线视频-中文字幕乱码免费观看-国产毛片精品妇女久久久

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運(yùn)營的一線實(shí)戰(zhàn)洞察。

InterBase 6.0老庫拆解:MGA事務(wù)、生成器與Delphi控件維護(hù)

InterBase 6.0老庫拆解:MGA事務(wù)、生成器與Delphi控件維護(hù) 簡介InterBase 6.0 數(shù)據(jù)庫安裝包與開發(fā)示例合集面向使用 Delphi 6 構(gòu)建客戶端/服務(wù)器數(shù)據(jù)庫應(yīng)用的開發(fā)者及數(shù)據(jù)庫學(xué)習(xí)者可用于搭建本地測試環(huán)境、研究早期 RDBMS 的部署結(jié)構(gòu)與 API 調(diào)用方式。壓縮包共 130 個(gè)文件約 4.86MB含 33 個(gè) C 源碼、15 個(gè)可執(zhí)行程序、8 個(gè)動態(tài)庫以及頭文件、庫文件、幫助文檔、SQL 腳本和 gdb、gbk 示例數(shù)據(jù)庫覆蓋安裝、卸載、運(yùn)行配置與基礎(chǔ)數(shù)據(jù)操作。已有 341 人學(xué)習(xí)下載對遺留系統(tǒng)維護(hù)和舊版 Delphi 數(shù)據(jù)訪問研究仍有參考價(jià)值。讀者可獲得較完整的安裝組件、數(shù)據(jù)庫引擎依賴文件、編程接口示例和初始數(shù)據(jù)庫樣本便于理解 BDE、ODBC 等連接方式背后的文件組成也可用于排查舊項(xiàng)目運(yùn)行環(huán)境缺失、數(shù)據(jù)庫初始化與許可配置等問題。1. 接手一個(gè)只剩 .GDB 文件的老系統(tǒng)才明白 InterBase 6.0 是什么形態(tài)交付包里沒有安裝手冊只有一個(gè) 4MB 出頭的.GDB文件和一堆 Delphi 控件源碼這是不少人第一次接觸 InterBase 6.0 時(shí)的真實(shí)場景。它并不是那種需要獨(dú)立 DBA 運(yùn)維的數(shù)據(jù)庫服務(wù)整個(gè)庫就是一個(gè)文件拷到目標(biāo)機(jī)器、配好連接串、把控件拖到窗體上就能讀寫。這份資源的價(jià)值也在這里服務(wù)端、客戶端連接庫、控件源碼和示例應(yīng)用湊成一套拿下來就能把一個(gè)數(shù)據(jù)庫應(yīng)用從前端到存儲層全部跑通。這篇按我拆包的順序?qū)懴戎v清 InterBase 6.0 的事務(wù)模型和文件組織再把它在本機(jī)跑起來然后把生成器、觸發(fā)器、存儲過程、UDF 這幾塊核心實(shí)現(xiàn)逐段拆開最后落在「拿到控件源碼之后改哪里」這個(gè)實(shí)際問題上。手里攥著老項(xiàng)目要維護(hù)的人和想拿一個(gè)輕量嵌入式數(shù)據(jù)庫練手的人都能照著走一遍。2. 技術(shù)底座MGA 架構(gòu)下的事務(wù)版本與頁面組織2.1 多代版本架構(gòu)讀不擋寫寫不擋讀先糾正一個(gè)很容易帶偏的認(rèn)知InterBase 6.0 不是靠回滾段做并發(fā)的。執(zhí)行 UPDATE 時(shí)它不原地覆蓋那一行而是把記錄的新版本寫進(jìn)數(shù)據(jù)頁舊版本留在原處只在記錄頭里把「替換事務(wù)號」標(biāo)成當(dāng)前事務(wù)。別的讀事務(wù)只要自己的快照事務(wù)號比這個(gè)替換號小就繼續(xù)讀到舊版本一點(diǎn)都不會被卡住。這就是所謂多代版本架構(gòu)MGA它的直接結(jié)果是讀事務(wù)永遠(yuǎn)不用等寫事務(wù)寫事務(wù)也不會因?yàn)橛腥嗽趻弑矶抨?duì)。沒有回滾段帶來的另一個(gè)差別在回滾語義上。執(zhí)行 ROLLBACK 時(shí)數(shù)據(jù)庫并不做「反向補(bǔ)償」它只是把那個(gè)事務(wù)在事務(wù)清單里標(biāo)記為已死這個(gè)事務(wù)寫下的所有版本立刻變成垃圾數(shù)據(jù)等著被回收。所以回滾一個(gè)剛插了十萬行的事務(wù)幾乎瞬間完成不會像日志型數(shù)據(jù)庫那樣還要回放一遍。這套設(shè)計(jì)的代價(jià)也很明確垃圾版本不會自動消失需要靠 sweep 機(jī)制回收而 sweep 能不能推進(jìn)取決于「最老活躍事務(wù)」OIT和「最老事務(wù)」OAT這兩個(gè)水位線能不能往前走。這就引出了老項(xiàng)目里最典型的一類故障。只要有一個(gè)連接開著事務(wù)不提交——哪怕它只是SELECT了一下——OAT 就被釘在原地比它新的所有垃圾版本都回收不了庫文件只漲不縮查詢越來越慢。我在一個(gè)工控項(xiàng)目上見過庫文件從 200MB 漲到 3GB最后查出來是一個(gè)報(bào)表模塊的TIBTransaction忘了Commit掛了半個(gè)月。所以看一個(gè) InterBase 庫健不健康第一件事不是看數(shù)據(jù)量是看 OIT 和 OAT 差了多遠(yuǎn)。還有一點(diǎn)要注意事務(wù)隔離級別在 InterBase 里是通過 TPB事務(wù)參數(shù)塊傳的isc_tpb_concurrency是快照隔離最常用isc_tpb_read_committed配isc_tpb_rec_version是讀已提交而isc_tpb_consistency會加表級鎖除非你在做批處理維護(hù)否則別碰它一旦用錯(cuò)整個(gè)系統(tǒng)的并發(fā)直接降到單線程。2.2 單文件、頁與事務(wù)計(jì)數(shù)器的物理組成.GDB文件內(nèi)部是按頁組織的頁大小在建庫時(shí)定死可選 1024、2048、4096、8192 字節(jié)。第 0 頁是數(shù)據(jù)庫頭記錄了頁大小、事務(wù)水位、影子文件信息往后是頁分配頁、事務(wù)清單頁TIP、指針頁、數(shù)據(jù)頁、索引頁和 BLOB 頁。理解這套分層最實(shí)用的工具是gstat它不做任何修改只讀取元信息。# 只看庫頭頁大小、OAT/OIT、下一個(gè)事務(wù)號、影子文件 gstat -h /opt/data/demo.gdb # 看數(shù)據(jù)頁的填充率和高水位判斷是不是碎片太多 gstat -d /opt/data/demo.gdb | more # 看索引深度深度從 3 變成 4 通常意味著索引膨脹 gstat -i /opt/data/demo.gdb-h的輸出里有幾個(gè)參數(shù)值得記住Page size決定了單頁能放多少行也間接決定了 BLOB 的讀取效率Oldest transaction就是 OATOldest active是 OIT兩者相差幾百以內(nèi)算正常差到幾十萬說明有長事務(wù)在拖后腿Next transaction是一直遞增的事務(wù)號漲到 20 億附近會有溢出風(fēng)險(xiǎn)正規(guī)做法是做一次備份還原把事務(wù)號重置回低位。-d看的是數(shù)據(jù)頁的填充率如果大量頁只填了 30%說明刪除和更新留下的空洞多該做一次gbak備份還原把空間收回來。頁大小定下來之后想改唯一的辦法是gbak備份再gbak -c -p 8192還原沒有在線改的路徑。所以建庫前要想清楚如果表里有一堆VARCHAR(200)加上幾個(gè) BLOB 字段用 4096 或 8192 能少很多跨頁讀如果只是幾百張配置表、單行很小1024 反而更省內(nèi)存。單個(gè)文件大到一定程度就得拆成多文件-- 追加第二個(gè)數(shù)據(jù)文件起始頁號接在主文件之后 ALTER DATABASE ADD FILE /opt/data/demo_02.gdb STARTING AT PAGE 200000 LENGTH 200000;這條語句里的STARTING AT PAGE是主文件的頁號邊界不是字節(jié)數(shù)寫錯(cuò)會導(dǎo)致新文件永遠(yuǎn)用不上。我一般只在受文件系統(tǒng)單文件上限限制的場景下才拆拆完一定要用gstat -h確認(rèn)Database files那一行變成了兩個(gè)否則等于白寫。2.3 服務(wù)形態(tài)本地直連還是 TCP 遠(yuǎn)程InterBase 6.0 的一個(gè)特點(diǎn)是同一個(gè)客戶端庫既能連本地文件也能連遠(yuǎn)程服務(wù)區(qū)別只在連接串怎么寫。這一點(diǎn)經(jīng)常被忽略然后在部署時(shí)踩坑——因?yàn)檫h(yuǎn)程連接里那個(gè)路徑是「服務(wù)端視角」的不是你自己機(jī)器上的路徑。連接串寫法走的協(xié)議適用場景C:\data\demo.gdb本地直連單機(jī)工具、免裝服務(wù)端、數(shù)據(jù)不外發(fā)localhost:C:\data\demo.gdbTCP 回環(huán)本機(jī)調(diào)試但要驗(yàn)證服務(wù)端權(quán)限和鎖192.168.1.20:C:\data\demo.gdbTCP 遠(yuǎn)程多人共用一臺庫服務(wù)器srv01:/opt/data/demo.gdbTCP 遠(yuǎn)程跨平臺部署服務(wù)端是 Linux本地直連省掉了網(wǎng)絡(luò)往返和權(quán)限校驗(yàn)啟動快、部署簡單很適合隨應(yīng)用程序一起分發(fā)的單機(jī)版。但它的并發(fā)模型比遠(yuǎn)程弱得多多個(gè)進(jìn)程同時(shí)寫同一個(gè)文件時(shí)鎖沖突會很難排查所以只要業(yè)務(wù)里有第二個(gè)人同時(shí)寫就別圖省事老老實(shí)實(shí)裝服務(wù)端走 TCP。遠(yuǎn)程連接的另一個(gè)前提是服務(wù)名要能解析??蛻舳藥炷J(rèn)用gds_db這個(gè)服務(wù)名去找端口主機(jī)上必須有一行登記# 服務(wù)端和客戶端的 services 文件里都要有這行端口默認(rèn) 3050 gds_db 3050/tcp # InterBase 服務(wù)名與監(jiān)聽端口 # 改完確認(rèn)端口真的在監(jiān)聽 netstat -an | grep 3050注意客戶端報(bào)unavailable database時(shí)先別懷疑庫文件損壞八成是這行沒登記或者被防火墻攔了。3. 跑起來從服務(wù)啟動到控件發(fā)出第一個(gè)查詢3.1 安裝與最小可用配置服務(wù)端裝完之后要先確認(rèn)三件事進(jìn)程在跑、端口在聽、SYSDBA能登進(jìn)去。很多人卡在第一步是因?yàn)榘芽蛻舳撕头?wù)端裝混了——客戶端只需要一個(gè)連接庫Windows 上是gds32.dll服務(wù)端才有后臺進(jìn)程。# 1) 確認(rèn)服務(wù)端進(jìn)程存在 ps -ef | grep -i interbase # 2) 確認(rèn) 3050 端口處于 LISTEN netstat -anp | grep 3050 # 3) 用命令行工具直連驗(yàn)證 SYSDBA 能過 isql -user SYSDBA -password masterkeyisql是隨服務(wù)端一起提供的命令行客戶端它同時(shí)也是一個(gè) SQL 腳本執(zhí)行器后面建庫、灌表結(jié)構(gòu)、跑遷移腳本都靠它。第三步如果提示用戶名口令錯(cuò)誤說明安裝時(shí)設(shè)的SYSDBA口令不是默認(rèn)值得找當(dāng)時(shí)的部署記錄如果提示unavailable database回到 2.3 節(jié)查服務(wù)名登記。Windows 上還有一個(gè)常見問題應(yīng)用程序目錄里的gds32.dll和系統(tǒng)目錄里的版本不一致??蛻舳藥斓陌姹颈仨毢头?wù)端大致匹配混用不同版本時(shí)表現(xiàn)是能連上、能查詢但一取 BLOB 或者一調(diào)存儲過程就崩排查成本極高。我的習(xí)慣是把服務(wù)端自帶的那份客戶端庫直接拷到 exe 同目錄讓它優(yōu)先加載別指望系統(tǒng)的搜索路徑。3.2 isql 建庫建表跑通第一個(gè)庫CREATE DATABASE是客戶端工具語句不是服務(wù)端 SQL所以必須在isql里執(zhí)行。路徑同樣按服務(wù)端視角寫。# 建庫頁大小和字符集在這里定死后面改不了 isql -user SYSDBA -password masterkey EOF CREATE DATABASE /opt/data/demo.gdb USER SYSDBA PASSWORD masterkey PAGE_SIZE 8192 DEFAULT CHARACTER SET UNICODE_FSS; EOF # 灌表結(jié)構(gòu)腳本開頭先 CONNECT保證連的是目標(biāo)庫 isql -user SYSDBA -password masterkey -i schema.sqlschema.sql里第一句必須是CONNECT /opt/data/demo.gdb;后面才是 DDL。PAGE_SIZE和DEFAULT CHARACTER SET建庫時(shí)定死UNICODE_FSS是 6.0 里能存多字節(jié)字符的字符集存中文就別用NONE否則排序和長度計(jì)算都會出問題。建表這塊有兩個(gè) 6.0 時(shí)代特有的寫法值得用上DEFAULT NOW這種上下文變量以及 64 位整型主鍵。CONNECT /opt/data/demo.gdb; CREATE TABLE T_ORDER ( ID BIGINT NOT NULL, ORDER_NO VARCHAR(32) NOT NULL, AMOUNT NUMERIC(18,2) DEFAULT 0 NOT NULL, STATUS SMALLINT DEFAULT 0 NOT NULL, CREATED_AT TIMESTAMP DEFAULT NOW NOT NULL, CONSTRAINT PK_T_ORDER PRIMARY KEY (ID) ); -- 訂單號唯一單獨(dú)建索引查詢走索引而不是全表 CREATE UNIQUE INDEX IDX_ORDER_NO ON T_ORDER (ORDER_NO);DEFAULT NOW是服務(wù)端求值的取的是數(shù)據(jù)庫服務(wù)器時(shí)間不是客戶端時(shí)間這一點(diǎn)在跨時(shí)區(qū)的多客戶端場景里很關(guān)鍵——用客戶端賦時(shí)間會出現(xiàn)同一批數(shù)據(jù)時(shí)間倒掛。BIGINT是 64 位整型只在 dialect 3 下可用用它做主鍵是為了避免幾百萬行之后INTEGER溢出。NUMERIC(18,2)在 dialect 3 下映射到 64 位整型存儲精度不會丟做金額字段比DOUBLE PRECISION靠譜得多。3.3 控件對接連接、事務(wù)邊界與參數(shù)化查詢Delphi 那套控件里連 InterBase 最直接的是 IBXInterBase Express它不依賴 BDE直連客戶端庫部署時(shí)少一層中間件。核心是三個(gè)控件TIBDatabase管連接TIBTransaction管事務(wù)TIBQuery管數(shù)據(jù)集。// 數(shù)據(jù)庫連接路徑前綴決定走本地直連還是 TCP IBDB.DatabaseName : localhost:/opt/data/demo.gdb; IBDB.Params.Clear; IBDB.Params.Add(user_nameSYSDBA); IBDB.Params.Add(passwordmasterkey); IBDB.Params.Add(lc_ctypeUNICODE_FSS); // 必須和建庫時(shí)一致 IBDB.SQLDialect : 3; // dialect 對不上會報(bào)類型轉(zhuǎn)換錯(cuò) IBDB.LoginPrompt : False; IBDB.Connected : True; // 事務(wù)顯式控制別指望自動提交 IBTrans.DefaultDatabase : IBDB; IBTrans.Params.Clear; IBTrans.Params.Add(isc_tpb_write); // 讀寫事務(wù) IBTrans.Params.Add(isc_tpb_concurrency); // 快照隔離讀不阻塞寫 IBTrans.Params.Add(isc_tpb_wait); // 遇鎖等待而不是立刻拋異常 IBTrans.StartTransaction;lc_ctype是客戶端字符集它必須和服務(wù)端建庫時(shí)的DEFAULT CHARACTER SET對上對不上的表現(xiàn)是中文變問號或者VARCHAR(32)明明只存了 20 個(gè)漢字卻報(bào)超長。isc_tpb_wait和isc_tpb_nowait的選擇直接影響用戶體驗(yàn)nowait遇到鎖沖突立刻拋lock conflict on no wait transaction適合后臺批處理快速失敗wait會掛起等待適合交互界面。查詢部分建議全部走參數(shù)化別拼字符串IBQuery1.Close; IBQuery1.SQL.Text : SELECT ID, ORDER_NO, AMOUNT FROM T_ORDER WHERE STATUS :S AND CREATED_AT :D ORDER BY ID; IBQuery1.ParamByName(S).AsInteger : 1; IBQuery1.ParamByName(D).AsDateTime : Date - 7; IBQuery1.Open; while not IBQuery1.Eof do begin // 讀字段用 FieldByName別用下標(biāo)后面加字段不會崩 Memo1.Lines.Add(IBQuery1.FieldByName(ORDER_NO).AsString); IBQuery1.Next; end; IBQuery1.Close; IBTrans.Commit; // 讀事務(wù)也要提交不然 OAT 卡住最后那句Commit是重點(diǎn)。IBX 里TIBTransaction默認(rèn)不自動提交一個(gè)TIBQuery打開又關(guān)掉事務(wù)仍然是活的它對應(yīng)的快照事務(wù)號就一直掛在 OIT 上。前面說的庫文件瘋長源頭往往就是這種「只讀了一下」的代碼。如果一次操作要寫多張表用TIBUpdateSQL配合TIBQuery的緩存更新把提交點(diǎn)收在業(yè)務(wù)動作結(jié)束那一刻比一條 SQL 一次提交安全得多。4. 核心模塊拆解生成器、觸發(fā)器、存儲過程與 UDF4.1 生成器與主鍵發(fā)號GEN_ID 的正確用法生成器Generator是 InterBase 里的獨(dú)立計(jì)數(shù)器和表無關(guān)專門用來發(fā)號。CREATE GENERATOR GEN_ORDER_ID; SET GENERATOR GEN_ORDER_ID TO 0; -- 取下一個(gè)號第二個(gè)參數(shù)是步長 SELECT GEN_ID(GEN_ORDER_ID, 1) FROM RDB$DATABASE;GEN_ID的第二個(gè)參數(shù)是增量正常情況下傳 1需要一次預(yù)留一段號比如批量導(dǎo)入時(shí)傳 N。RDB$DATABASE是系統(tǒng)表永遠(yuǎn)只有一行用來把函數(shù)當(dāng)查詢跑。這里有一個(gè)必須記住的性質(zhì)生成器不受事務(wù)控制。取號這個(gè)動作在事務(wù)回滾后不會退回所以號一定有空洞。很多人拿它直接當(dāng)訂單號展示給用戶看結(jié)果發(fā)現(xiàn)編號不連續(xù)被業(yè)務(wù)方追著問。我的做法是生成器只做物理主鍵業(yè)務(wù)單號單獨(dú)用「日期 序列」拼序列另有自己的表去維護(hù)。反過來如果業(yè)務(wù)真的要求連號那就不能靠生成器得在一張T_SEQ表上做UPDATE ... SET CUR CUR 1并配合行鎖代價(jià)是并發(fā)性能直線下降這個(gè)取舍要提前跟業(yè)務(wù)說清楚。4.2 觸發(fā)器把業(yè)務(wù)約束下沉到數(shù)據(jù)庫層觸發(fā)器在 InterBase 里分 BEFORE 和 AFTER還分行級和語句級。行級觸發(fā)器里能用NEW和OLD兩個(gè)上下文變量分別代表新值和舊值。-- 自定義異常拋出時(shí)客戶端能拿到這條消息 CREATE EXCEPTION E_AMOUNT_INVALID 訂單金額必須大于 0; -- 主鍵發(fā)號BEFORE INSERT在約束檢查之前把 ID 填上 CREATE TRIGGER TR_ORDER_BI FOR T_ORDER ACTIVE BEFORE INSERT POSITION 0 AS BEGIN IF (NEW.ID IS NULL) THEN NEW.ID GEN_ID(GEN_ORDER_ID, 1); END; -- 業(yè)務(wù)校驗(yàn)POSITION 1 保證排在發(fā)號之后執(zhí)行 CREATE TRIGGER TR_ORDER_BIU FOR T_ORDER ACTIVE BEFORE INSERT OR UPDATE POSITION 1 AS BEGIN IF (NEW.AMOUNT 0) THEN EXCEPTION E_AMOUNT_INVALID; END;POSITION決定同一個(gè)表上多個(gè)同類觸發(fā)器的執(zhí)行順序編號小的先跑。上面這兩個(gè)觸發(fā)器必須按 0、1 排否則校驗(yàn)里拿到的NEW.ID還是空。EXCEPTION拋出去之后客戶端TIBQuery會收到一條EIBErrorMessage里帶的就是E_AMOUNT_INVALID那條文本這是把校驗(yàn)規(guī)則放在數(shù)據(jù)庫層最實(shí)際的好處——不管前端是 Delphi、Java 還是命令行工具規(guī)則都跑不掉。需要注意BEFORE 觸發(fā)器里改NEW的字段是有效的AFTER 觸發(fā)器里改就沒有意義了因?yàn)橛涗浺呀?jīng)落盤。另外語句級觸發(fā)器FOR EACH STATEMENT在行級操作里拿不到NEW/OLD它主要用來POST_EVENT做業(yè)務(wù)邏輯時(shí)千萬別用它。4.3 可選中存儲過程與事件通知存儲過程分兩種一種用EXECUTE PROCEDURE調(diào)用、只做副作用另一種帶SUSPEND可以被SELECT當(dāng)表查叫可選中存儲過程。CREATE PROCEDURE SP_ORDER_LIST (P_STATUS SMALLINT) RETURNS (ID BIGINT, ORDER_NO VARCHAR(32), AMOUNT NUMERIC(18,2)) AS BEGIN FOR SELECT O.ID, O.ORDER_NO, O.AMOUNT FROM T_ORDER O WHERE O.STATUS :P_STATUS ORDER BY O.ID INTO :ID, :ORDER_NO, :AMOUNT DO SUSPEND; -- 每處理一行掛起一次客戶端才能逐行取到 END;SUSPEND是這段代碼的核心。沒有它存儲過程會把所有行算完只返回最后一組值有了它服務(wù)端每算出一行就掛起客戶端取一行再喚醒內(nèi)存占用是常數(shù)級別的。FOR SELECT ... INTO里的變量名前必須加冒號這是 PSQL 里區(qū)分「字段名」和「變量名」的語法漏了冒號會報(bào)「列名不明確」??蛻舳苏{(diào)用有兩種// 方式一當(dāng)表查最靈活能帶排序和過濾 IBQuery1.SQL.Text : SELECT * FROM SP_ORDER_LIST(:S) ORDER BY ID; IBQuery1.ParamByName(S).AsInteger : 1; IBQuery1.Open; // 方式二TIBStoredProc適合無返回集的存儲過程 IBSP.StoredProcName : SP_ORDER_CLOSE; IBSP.ParamByName(P_ID).AsLargeInt : 1024; IBSP.ExecProc;配套的還有事件機(jī)制用來做「數(shù)據(jù)變了通知所有客戶端刷新」。服務(wù)端在觸發(fā)器里POST_EVENT客戶端注冊同名事件CREATE TRIGGER TR_ORDER_EVENT FOR T_ORDER ACTIVE AFTER INSERT OR UPDATE POSITION 0 AS BEGIN POST_EVENT ORDER_CHANGED; END;IBEvents1.Database : IBDB; IBEvents1.Events.Text : ORDER_CHANGED; // 多個(gè)事件名用換行分隔 IBEvents1.OnEventAlert : DoOrderChanged; IBEvents1.Registered : True; // 注冊之后服務(wù)端才會推POST_EVENT的名字建議用大寫短名老版本對事件名長度限制得比較緊不要寫成一句描述。更關(guān)鍵的是OnEventAlert回調(diào)是在客戶端庫的后臺線程里觸發(fā)的在里面直接操作 VCL 控件會因?yàn)榭缇€程訪問出玄學(xué)崩潰正確做法是TThread.Queue或者PostMessage把刷新動作丟回主線程。我第一次用事件通知時(shí)就在這里翻過車表現(xiàn)為「偶爾」崩查了兩天才定位到線程上。4.4 UDF拿到源碼后自己編一個(gè)外部函數(shù)庫內(nèi)置函數(shù)不夠用時(shí)InterBase 支持外部函數(shù)UDF把 C 函數(shù)編成動態(tài)庫在數(shù)據(jù)庫里聲明之后就能在 SQL 里調(diào)用。/* myudf.c —— 編成動態(tài)庫后由服務(wù)端加載 */ #include string.h /* 參數(shù)用 CSTRING 聲明時(shí)收到的是以 \0 結(jié)尾的字符串指針 */ long STRLEN_UDF(char *s) { if (s NULL) return 0; return (long) strlen(s); }# Linux 下編成 .so位數(shù)必須和服務(wù)端一致32 位服務(wù)端只認(rèn) 32 位庫 gcc -shared -fPIC -O2 -o myudf.so myudf.c # Windows 下編成 DLL cl /LD myudf.c /Fe:myudf.dll編出來之后丟到服務(wù)端的 UDF 目錄然后在庫里聲明DECLARE EXTERNAL FUNCTION STRLEN_UDF CSTRING(256) RETURNS INTEGER BY VALUE ENTRY_POINT STRLEN_UDF MODULE_NAME myudf;三個(gè)參數(shù)各有講究CSTRING(256)告訴服務(wù)端按定長字符串傳參如果用VARCHAR(256)聲明傳進(jìn)去的是帶長度前綴的結(jié)構(gòu)體指針函數(shù)簽名就得跟著改BY VALUE表示返回值按值傳整型必須加這個(gè)漏了會讀到一個(gè)野指針ENTRY_POINT是導(dǎo)出符號名MODULE_NAME是不帶擴(kuò)展名的庫名。改完庫之后必須重啟服務(wù)端連接才會重新加載改完函數(shù)不重啟是最常見的「明明改了卻沒生效」。5. 避坑與排查五個(gè)把項(xiàng)目拖進(jìn)坑里的細(xì)節(jié)5.1 恢復(fù)之后主鍵沖突集中爆發(fā)現(xiàn)象從生產(chǎn)庫備份出來恢復(fù)到測試環(huán)境應(yīng)用一插數(shù)據(jù)就報(bào)violation of PRIMARY or UNIQUE KEY constraint但表里明明只有幾百行。原因gbak做完整備份還原時(shí)會把生成器的當(dāng)前值一起帶過去但如果這次恢復(fù)用的是只導(dǎo)結(jié)構(gòu)的 DDL 腳本或者用-m只恢復(fù)元數(shù)據(jù)生成器的值就回到了建庫時(shí)的初始狀態(tài)。而數(shù)據(jù)行是從別處灌進(jìn)來的ID已經(jīng)用到了幾千兩邊一撞就沖突。解決恢復(fù)完之后先對齊每個(gè)生成器再讓應(yīng)用跑起來。-- 把生成器重置到當(dāng)前最大 ID批量做的時(shí)候用腳本生成這段 SET GENERATOR GEN_ORDER_ID TO 0; SELECT GEN_ID(GEN_ORDER_ID, COALESCE(MAX(ID), 0)) FROM T_ORDER;第二句借GEN_ID的步長參數(shù)一次性把計(jì)數(shù)器頂?shù)組AX(ID)比SET GENERATOR ... TO 具體數(shù)字少一次人工查數(shù)。我現(xiàn)在的習(xí)慣是恢復(fù)腳本最后必須帶這一段每個(gè)生成器一行缺一個(gè)就等著線上報(bào)沖突。5.2 庫文件只漲不縮sweep 跑不動現(xiàn)象刪了幾百萬行歷史數(shù)據(jù)磁盤占用一點(diǎn)沒降查詢一天比一天慢跑gfix -sweep跑了幾個(gè)小時(shí)還在跑。原因刪除在 MGA 里只是把版本標(biāo)記成死真正回收要靠 sweep。而 sweep 能推進(jìn)的前提是 OAT 能往前走只要有一個(gè)長事務(wù)不提交回收立刻停擺。第二個(gè)原因是 sweep 本身是協(xié)作式的它和正常業(yè)務(wù)搶資源業(yè)務(wù)壓力大時(shí)會一直退讓。解決先查 OIT 和 OAT 的差距定位長事務(wù)再決定是手動 sweep 還是干脆做一次備份還原。# 看水位線差距差幾十萬說明有長事務(wù) gstat -h /opt/data/demo.gdb | grep -i oldest # 手動觸發(fā)回收最好放在業(yè)務(wù)低峰 gfix -sweep /opt/data/demo.gdb -user SYSDBA -password masterkey # 徹底方案備份還原空間能真正收回來 gbak -b /opt/data/demo.gdb /tmp/demo.fbk -user SYSDBA -password masterkey -v gbak -c -p 8192 /tmp/demo.fbk /opt/data/demo_new.gdb -user SYSDBA -password masterkey -vsweep只回收頁內(nèi)空間文件大小不會縮只有備份還原才會重寫整個(gè)文件、把空間真正交還給文件系統(tǒng)。所以計(jì)劃里應(yīng)該把「定期備份還原」當(dāng)成運(yùn)維動作而不是只當(dāng)災(zāi)備。5.3 Dialect 混用DATE 變成 TIMESTAMP雙引號變成標(biāo)識符現(xiàn)象客戶端查出來的日期字段多出了時(shí)間部分一條WHERE NAME ABC忽然報(bào)「列名不明確」NUMERIC(18,2)的金額在小數(shù)位上丟精度。原因這是 dialect 1 和 dialect 3 的語義差異。dialect 1 里DATE實(shí)際是帶時(shí)間的 TIMESTAMP雙引號包起來的是本文還有配套的精品資源點(diǎn)擊獲取
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
欧美日韩国产日本精品四虎网网站物| 狠狠久久婷婷| 五月婷天天搞视频| 99热成人永久免费| 丁香六月婷婷社区| 伊人在线视频| 五月婷婷激情网| 色综久久AV| 99九九这里有免费视频| 天天操天天插| 久久激情五月| 五月丁香六月婷婷色日| 色婷婷激情小说网| 大香蕉婷婷色| 色婷成人狠干| 色综合久久88色综合天天| 91婷婷丁香| 天天干夜夜b| 综合 激情 婷婷| 色婷婷六月| 五月天六月天| 99re热精品视频国| 九九久久综合| 国产成人综合在线| 无码A片一区二区免费| 99精品性爱| 精品A√| 色情综合网| 99久久高清视频| 深爱综合网| 激情五月天综合| 五月婷婷丁香成人网| 91人人爱| 9l久久久视频| 亚洲在线免费成人| 人人艹艹艹| 狠狠爱婷婷爱| 婷婷六月啪啪| 无码人妻激情| 99re8在这里只有精品| 亚洲五月天狠狠| 天天肏夜夜肏| 亚洲操B视频| 可以免费观看的AV| 欧美性久| 久久久五月天婷婷成人网| 日本天天操| 欧美性爱五月天| 色欲香综合网| 亚洲麻豆乱码国产2028| 米奇影视资源婷婷狠狠色激情欧美五月丁香 | 国产精品色色| 天天干,天天日| 夜夜 操无码| 开心深爱激情网| 综合五月亭亭9| 天天综合亚洲综合网天天αⅴ| 亚洲天堂啪啪| 九九热这里只有精品5| 五月开心久久| 久久网站免费亚洲| 丁香综合伊人AV| www.五月天婷婷.com| 色一情一乱一乱一区9| 影音先锋 萱萱| 蜜臀久久99精品久久久久久酒店| 五月丁香拍拍激情综合| 激情五月婷婷综合视频| www.色擼擼.com| 色v综合网| 五月天婷婷色情| 九九人人看| 欧美精品狠狠色丁香婷婷| 国外亚洲成AV人片在线观看| 婷婷WWW久久| www.99操| 99久热在线精品| 久久多色| 伊人婷婷五月| 中文字幕综合| 狠狠精品干练久久久无码中文字幕| 婷婷欧美综合| 五月婷庭丁香在线| 激情五月色综合国产精品| 热久久国产视频| 婷婷丁香人妻天天| 操操天堂| 91男同视频| 亚洲成人AV电影网| 天天爱天天日| 天天日天天摸| 国产日韩欧美| 婷婷丁香五月天影院| 香蕉久久国产AV一区二区| 天天激情5月天亚洲| 玖玖在线视频| 天天摸天天舔天天天天爽| 在线播放中文字幕| 激情五月开心五月丁香五月| 久久伊人9| 色婷婷丁香五月| 综合AV网| 婷婷丁香五月综合| 五月丁香婷婷成人网| 久久综合五月天| 亚洲高清在线| 人妻激情综合| 成人五月天视频播放| 婷婷五月激情网| 婷婷网五月天| 久久天堂| 五月婷婷六月奇米网丁香| 婷婷五月激情中文字幕| 色综合激情图区| 91|九色|动漫| 婷婷六月久久| a69在线视频| 狠狠色综合五月| 日亚二欧美| 五月婷婷六月丁香| 一区二区乱码视频| 天天舔天天操| AV在线不卡播放| 精品成人在线观看| 热这里| 2020日日干| 国产69久久久欧美黑人A片| 久婷自拍视频| 婷婷五月天欧美图片在线播放电驴| 操逼视频一区| 九热视频精品| 欧美色色网| 婷婷色导航| 大香蕉75线| 国产Va视频| 色日本五月天| 欧美熟妇一区二区三区| 五月婷婷无码| 99干在线视频| 99性爱视频网站| 九九热精品视频在线观看| 久久色吧| 五月丁香亭亭| 五月婷婷深深爱| 婷婷五月天激情影片| 91狠狠综合久久| 99天堂网最新| 色色亚洲视频| 久久综合伊人77777蜜臀| 99热99热| 色色五月婷婷狠狠| 丁香五月停停av| 99re6在线视频精品免费| 9久久精品视频| 五月天久久www| 久久视频在线视频| 色五月婷婷婷婷| 色五月大香蕉| 五月婷婷婷婷婷婷艺术| 丁香花狠狠婷婷亚洲中文字幕| 婷婷五月 丁香六月| 五月激情啪啪啪| 色婷视频| 五月婷婷激情日本| 久久精典| 性爱在线播放av| 91超级碰碰碰| 午夜丁香六月婷| 99精品无码| 九九蜜臀精品| 99热午夜精品| 色婷久久| 天天日综合网射| 99爱视频在线| 色噜综| 久9综合| 色婷婷先锋| 99热在线观看成人| 超碰a女人的天堂| 91色在线| 国外亚洲成AV人片在线观看| 性生活久久朋友人妻| 婷婷大香焦| 思思网站| 丁香五月手机视频| 久操操| 熟女色专区| 天天操夜夜操| se99热久久一本| 婷婷香五月天| 美妞av| 激情五月黄色| 五月色色色| 丁香婷婷激情综合五月激情| 91人人人人人人人| 爱射综合| 婷婷丁香五月高清| 婷婷激情伍月网| 777精品久无码人妻蜜桃| 日日射天天射| 成人视屏在线观看| AⅤ网站在线看| 狠狠色噜噜狠狠| 91综合在线观看首页| 婷久久| 91操人视频| 另类五月婷婷| 男女激情久久| 五月婷婷综合在线| 婷婷五月免费视频| 99热这里只有精品2016| 激情五月婷婷| 丁香五月婷婷Av| 91操人视频| 婷婷色5月激情网| 国内久久婷婷| 色色色热| 99热精品在线播放| 狠狠狠狠狠干| 丁香五月激情无码视频| 久久色五月天| 久久婷婷综合网| 51精品国自产在线| 可以直接看的AV| 天天综合网亚洲网站| 激情久久肏屄视频| 久操大屁股女人av| 一级AV片| 久操操| 天天人人人人人人人人人人人| 六月亚洲婷婷6月中文字幕| 人人操超碰| 久久国产色| 久久五月天婷婷| wwW天天干| 99热69| 中文字幕丰满孑伦无码专区| 丁香婷婷色五月激情综合| 久久久久久久久久久-久五月天婷婷| 欧美这里只有精品| 色色网站免费| 五月停停激情网| 天天插天天狠| 日本99久久| 欧美色色日韩| 五月婷久久综合| 婷婷五月天影院| 人妻少妇色综合| 综合色色婷婷| 色五月视频,小说| 中文精品久久久久人妻不| 久久人人九| 91丁香色五月| 精品动漫 无码av| 亚洲九N| 午夜色婷婷| 久久多色| 99久久性爱| 97热这里精品在线视频| AV五月丁香| 99色亚洲| 五月天婷婷网站888| 99热欲| 五月天色小说| 国产乱轮一区二区三区| 热久久这里只有三级视频| 中文成人在线| 久久ri精品视频| 一本到不卡高清DVD| 亚洲欧洲中文日韩久久AV乱码| 五月婷综合| 五月丁香色色| 色丁香五月婷婷| 五月丁香亚洲综合| 成人国产欧美大片一区| 久久九九热re6这里有精品| 99热在线观看| 一本九九色| 狠狠色狠狠色综合日日91| 久久ri精品视频| 久久综合图片| 亚洲另类婷婷综合| 欧美综合婷婷欧美综| 激情五月天综合图片小说网站| 思思99精品视频在线观看| 婷婷五月天美女| www.minyis.com【JT】实力收量可预付TG@LXSPSW8 | 五月婷久久综合| 日本人人超碰| 婷婷五月中文字幕| 五月天综合缴情网网站0| 婷婷丁香成人在线视频| 五月丁香中文| 丁香五月自拍| 午夜福利8055| 久热只有这里有精品| 欧美色骚婷婷五月天| 开心激情色婷婷五月天| 色99在线视频| 色色色热| 五月婷av| 久热这里只有精品6官网亚洲| 天天上天天爽| 人人爱摸视频| 日本欧美成人片AAAA| 久久成人亚洲欧美电影| 99人人干| 一本久道综合色婷婷五月| 婷婷五月色情| 五月天综合在线网| 婷婷久久综合久| 丁香花五月天| 爆乳熟妇一区二区三区爆乳照片| 九九九激情综合| 91丨九色丨老农村| 丁香六月爱综合| 丁香婷婷六月男男| 少妇性按摩无码中文A片| 久久九九经典| 激情二色月| 色五月天丁香婷婷| 五月停视频天堂| 91肏| 99久久性爱| 开心深爱激情网| 激情婷婷五月丁香啪啪啪| 亚洲AV网站在线观看| 内射人妻视频国内| 97在线视频人妻九色| 涩涩五| 丁香五月成人| 婷婷在线日韩综合| 五月婷婷六月丁| 色久丁香五| 天堂无码人妻精品AV一区| 色婷亚洲五月丁香| 六月丁香综合网| 亚洲精品视频在线播放| 91久久九色| yazhouzonghesese| 91色久| 先锋资源婷婷| 五月天综合色| 国产在线视频1234| 五月天天爽| www.婷婷五月天| 婷婷狠狠操| 夜夜综合色| 五月激情综合网| av在线免费播放| 亚洲精品午夜国产va久久成人| 狠狠色色| 狠狠干天天内射| 色色五月天婷婷丁香| 超碰免费人人肏| 99热久只有精品首页| 婷婷五月在线视频| 亚洲欧洲午夜成人精品av| 五月婷婷六月基地| 91女人18毛片水多国产| 亚洲色A| 婷婷五月花| 色婷婷XXXXX| www.com五月天| 玖久久网站| 欧美亚洲婷婷五月| 丁香成人视频| 九色视频入口91| 人人综合五月人人婷婷| 国产操B| 五月天激情图| 色婷婷五月丁香色| 色婷婷五月天久久| 五月玖玖| 夜夜躁爽日日| 夜夜天天久久婷婷| 91久女| 蜜桃婷婷丁香| 激情av网| 97操操操| 2020久久婷婷五月| 操B无码视频国语| 99re热免费观看视频精品| 国产精品久久久久久久久久免费| 五月丁香亭亭天天舔| 久久免费高| YW无码| 噜噜色com| 涩玖玖免费视频| 五月久久婷婷成人网| 丁香婷婷老熟女综合网| 深爱婷婷网| 九热视频在线精品15| 99在线免费视频| 任你爽视频| 99热精品一区| 久久精品色| 激情av| 色必久悠悠影院| seav天堂| 99热精品免费| 操操操www.com| 三男玩一女三A片| 国模淫穴色图| 日本不卡五月婷婷丁香| 99色精品| 亚洲妇女熟BBW| 嫩BBB槡BBBB搡BBBB视频| 疯狂做受XXXX高潮A片| 99热99re6国产在线播放| 亚洲色五月婷婷| 91美女被操| 五月婷免费视频久久久| 伊人激情网| 九色视频91疯狂| 开心四月婷婷在线色播播| 无码字幕中文| 天天干天天干天天干| 天插天啪天啪天啪| 丁香婷婷基地| 青青999| 日韩啪啪网| 中文字幕日本最新乱码视频| 欧美综合五月丁香六月婷| 午夜理论片最新午夜理论剧| 丁香五婷| 婷婷丁香成人色综合| 丁香五月先锋| 九九视频这里只有精彩| 这里只有精品,日韩视频| 婷综合六月| 欧美性爱五月天| 久草热视频在线观看| 另类激情五月天。| 五月天婷婷情色| 亚洲亚洲人成综合网络| av在线资源| 这里只有精品9| 性爱综合网| 99年操人人爽| av九九| 亚洲在线综合| www.天天干| 丁香婷婷久久老熟女综合网| 日日操夜夜操狠狠操| 碰碰碰97免费精彩视频| 伊人99久久| 日本天天色| 99超级碰碰| 色噜噜婷婷| 99色最新在线视频| 俺也去婷婷五月天第五色| 第1影院之五月婷婷| 亚洲精品久久久久久久久久飞鱼| 天天做天天爱天天爽| 思思热99er| 天天干天天拍| 激情五月丁香五月| 亚洲午夜视频| 97操碰视频| 五月婷天天搞视频| 看久久性爱99视频| 久久偷拍综合五月天| 人人综合五月人人婷婷| 久久A热| 亚州精品色情在线观看| 色激情综合狠狠婷婷| 中美日韩成人在线| av大香蕉| www.狠狠操.co m| 丁香婷婷性爱| 99久久久99久久91熟女| www.色婷婷| 婷婷五月六月丁香| 伊人超碰在线| 久久久9久| 五月色亭丁香| 国产婷婷综合| 4399在线日本A片| 色婷婷免费视频| 另类激情五月在线视频欧美| 久久视频婷婷| 任你艹| 九九这里都是精品| 久久小视频| 日日夜夜狠狠| 九色亚洲| 草榴视频网| 日本高清久| 91超碰九色| 亚洲色9| 桃色激情婷婷伊人网| 九九99视频精品| 五月丁香成人| 婷婷五月六月| 99啪啪视频| www.99热| ji'qing'luan'ren'lun| 九色色| 五月天激情国产综合婷婷| 99性爱视频| 思思久久精品| 天天操天天操天天操天天操天天操天天操天天操天天操天天操 | 99成人精品| 亚洲婷婷丁香五月视频| 色五月中文网| 一起草av| 狠狠色综合网站久久久久| 久9热视频| 久久丁香五月综合六月激情红杏视频 | 狠狠色情婷婷| 天天操综合网| 色玖玖| 伊人喵咪a V| 综合网亚洲| 99激情视频| 成人看片网站| 日韩aⅴ视频| 欧美精产国品一二三区| 午夜不卡成人一区二区| 激情综合五月天| 天天天天操| 影音先锋高清无码资源网| 性爱五月婷婷| 丁香婷婷六月天| 五月丁香综合激情网| 小视频久久久aaa| 影音先锋五月婷婷| 精品视频这里只有精品| 很很干天天干| 亚洲乱码日产精品BD| 婷婷五月天丁香激情| 思思热这里只有精品视频666| 三十路磁力链接| www.色9| 深爱开心激情网| 日韩超碰在线| 狠狠色噜噜狠狠狠777奇米| 91丨九色丨东北熟女| 丁香九月色| 激情四射五月天偷偷看婷婷| 婷婷成人五月天| 日韩AV免费看| 丁香婷婷综合精品六月初| 五月天激情小说欧美激情| 久草五月| 久久丁香| 激情五月婷婷视频一区二区三区| av网址在线| 伊人网啪啪| 大香人妻| 色婷婷婷婷五月天| 五月婷婷色色爱| 国产亚洲99| 五月婷婷天堂| 五月天综合在线观看视频| 国产精品天天狠天天看| 玖玖在线资源视频| 亚洲高清在线| 丁香五月精品视频| 婷婷色婷婷| 色蜜婷婷| 久久天天| 伊人三级激情| 婷婷亚洲五月| 影音先锋一区二区资源站| 狠狠色丁婷婷日日,伊人激情综合网| 欧美三日本三级少妇三99| 99热在线网站| 色导航色婷婷五月天在线观看| 色婷婷呢狠禁久禁| anquye五月| 思思久久99热只有频精品66| 婷婷丁香五| 久机视频这只有精品| 91色九| 99色在线观看视频| 五月天成人综合| 日韩综合久久| 婷婷月五天在线在线看| 色五月激情网| 九月婷婷综合八月丁香在线观看| 久久机热/这里只有精品| 影音先锋91资源站| 婷婷五月天基地| 色综合久久44| 公的粗大挺进了我的密道| 丁香五月激情六月| 美女xx不卡| 91久久综合| AV电影在线播放| 99热这里只有精品国产免费| 9色资源在线| 天天激情欧美美女| 99久久久国产大片区| 成人综合网站| 色色亚洲五月天| 色综合综合色| 五月天丁香婷婷网| 九九在线视频| 五月天婷婷在线啪啪视频| 国产精品成av人在线视午夜片| 久久免片| 第2色五月婷| 五月天久久小说| 日本一级特黄大片AAAAA级| 91狠狠色丁香婷婷综合久久| av在线婷婷| 久久大香蕉同僚| 婷婷激情五月天在线视频| 激情五月天.色网| 综激情网| 狠狠色 综合色区| 亚洲午夜电影| 黃色三级三级三级三级 qixing300.shrkbk.com www.jinbozs.com tianmiaosw.com | 国产高清精品色| 性爱人人网| www.激情| 影视av久久久噜噜噜噜噜三级| 日操| 久久综合中文字幕| 九九九激情综合| 久久狠狠干| 婷婷五月天亚洲综合网| 五月婷在线| 激情五月婷婷她| 色婷婷电影网| 亚洲激情综合网| 开心五月天激情网站| a色色色色色| 亚洲无码免费看| 五月丁香六月婷| 五月综合在线| 3www激情| 婷婷五月丁香高清无码| 九九激情网| 伊人玖玖综合| WWW色色色COM| 欧洲电影在线观看免费版英语版 | 伊人色综合久久久| 国产资源91在线| 色五月丁香五月激情五月激情| 99内射视频| 热日韩欧美| 久久五月婷| 亚洲操逼网| 色欲午夜无码久久久久久张津瑜| 狠狠五月综合在线| 色婷婷五月天激情综合| 丁香色六月婷婷| 五月色婷婷中文字幕| 日本黄色精品| 69人人操人人爽| 色无婷婷| 婷婷五月五月丁香| 色爆五月| 乱乱av| www.五月天| 啪啪啪综合网| 五月激情小说| 亚洲综合九九| 五月激情丁香久久综合网| 99自拍视频网站| 久久婷婷人人| 色婷婷天堂| 人人插9| 人人操操| 色婷婷免费观看| 九月综合| 五月天激情影院| 97久久人人| 99热国产精品| 丁香婷婷人妻| 美女婷婷六月色| 这里只有视频精品| 大狠狠在线| 激情五月婷婷综合视频| 婷婷五月天成人综合网| 99亚洲无码| 亚州操人在线视频| 午夜九九九九九九九九九九九九九| 色色色热热热| 婷婷激情综合网| 色五月激情五月开心五月| 色色99| 国自产拍偷拍精品啪啪一区二区| 久久综合九色综合97婷婷| 丁香伍月婷电影全集| 91碰免费视频| 亚洲顶级VA在线观看-高清完整版在线影院观看-S022AV | 五月天丁香婷| 激情综合5月| 婷婷五月天激情视频| 夜夜操天天爽| 婷婷色操| 亚洲人妻av| 婷婷中文字幕网站| 综合色网站| 大香蕉久久伊人婷婷五月丁香| 99热九九这里只有精品10| 青青草视频福利| 亚洲男女激情| 五月天社区| 91九九九九九九| 99a级片| 热99这里只是精品| 精品久久久久久久人妻| 狼人狠狠操| 天天色情站| 性色综合网| 丁香婷最新动态| 五月天激情网页| 九九99热| ..真实国产乱子伦对白在线_欧| 国产免费av网站| 久久久久久久久久8888| 日撸夜撸日操| 久久婷五月天| 狠狠色综合无线观看| 久久综合干| 色久激情在线| wwwss在线观看| 99热草草| 五月天无码| 五月婷婷六月丁香色| 九九婷婷网五月天| 久久五月天免费网站| WWW.激情| 色五月超碰| 亚洲精品一二三| 琪琪色五月天| 亚洲99精品九九在线| 色激情综合| 玖玖资源站蜜臀| 久久99精品视频| 日韩国产在线免费观看| 99秘 在线| 人人爱操| 亚洲九九婷婷| 日日操,天天操| 五月色影院| 激情五月九九九| 五月天无码视屏播放| 色婷婷亚洲婷婷| 久久久久久久久月丁| 欧美色图45678| 高清无码网址| 99精品九九| 丁香六月婷婷高清| 五月天另类激情在线| 久热久操久热久草国产91| 天天射综合网天天插| 色综合99| 日韩成人无码人妻| 欧美成人日韩| 五月婷婷97| 五月丁香做爱视频| 岛国在线观看91| 99热精品10| 五月天.com| 涩综合网| 婷婷色操| 婷婷五月天AV在线| 开心婷婷中文字幕| 色约约视频一区二区三区四区五区| 五月天天天开心激情网| 狠狠狠狠狠狠| 青青草原中文字幕| 五月天播播| 色九月婷婷| 五月丁香花激情综合网| 亚洲va成人va成人va在线观看| 九九久久偷拍| 青草激情综合| 1024你懂的欧美曰韩| 日日日日操| 丁香五月 性爱| 色欲久久久久| 久久精品天| 五月婷婷视频| 3p久久| 久久92| 久操热| 色色色com| 噜噜噜噜婷婷五月天| 人人爱国产| 免费视频舔| 五月婷在线| 丁香五月网| 99青青草99| 亚洲色视频| 色爱99| 伊人啪啪网| 丁香婷婷人妻| 中国女人内射6XXXXX| 精品99只有。| 丁香五月婷婷激情中文| 天天综合色| 天天噜日日噜综合无码| 久久久久久人妻| 丁香五月图片| 超碰国产一区| 激情久久丁香| 亚洲艹网| 91婷婷视频| 丁香六月欧美| 欧美日韩成人| 午夜不卡久久精品无码免费| 久热视频这里只有精品| 日本人人干| 五月色网| 玖玖资源站视频| 第五婷婷伊人丁香色| www.激情五月| 中文字幕色色| 91人妻人人做人碰人人爽九色| 99人人干| 五月婷婷六月丁香色| 色色爽爽天天| 五月天婷婷婷| 亚洲熟女色| WWW.桔色成人.COM入口| 五月花激情网| 操99| 操一操干一干| 婷婷四月 成人 狠狠干| 婷婷不卡基地| www.99视频| 淫荡工a| 激情四射五月天| www.色多多婷| 六月婷婷色综合| 操你av| 成人精品在线| 日本在线观看91| 欧美99热| 91日日日| 丁香六月视频免费观看| 亚洲九九夜夜| 丁香婷婷婷婷十二月在线观看视频| 色五月婷婷色| 丁香五月区| 亚洲中文无码成人| 懂色av蜜臀av粉嫩av永陈冠希| 国产精品18久久久| 久久久99免费视频| 99久久免费精品| 操操操操操操婷婷五月天| 亚洲成人无码免费| 丰满少妇猛烈A片免费看观看| 久久人妻视频| 亚洲人人操BD| caopeng超碰| 91丁香五月| 亚洲人成网站999综合| 这里有精品| 久久久婷婷五月亚洲97号色| 热99精品视频| 五月丁香六月欧美综合| 五月丁香色色网| 日韩一级网站| 久久婷五月影院| 五月激情天| 五月丁香狠狠爱| 天天爱天天操| 婷婷五月花西瓜| WWW.桔色成人.COM入口| 日本精品在线噜噜噜| 国产AV不卡福利| 色噜噜狠狠狠狠色综合久欧美| 97色色网| 婷婷综合在线| 久久五月天婷婷| 亚洲在线综合| 殴美日韩成人| 狠狠干,狠狠操| 婷婷五月天激情五月天深爱五月天| 激情五月天之六月婷婷| 婷婷六月丁香综合| 天天做天天爱天天搞| 综合久久五月天| 在线观看亚洲AV| Www.狠狠| 2015超碰| 九九精品热播| 在线观看av网站| 亚洲无码yw| 婷婷五月综合色拍| 婷婷五月天综合久久| 日本专区久久| 欧美性爱中文字幕| 丁香五月婷婷av| 91成人电影| 九热免费视频| 色综合区| 丁香五月香蕉在线| 天天 青草 制服丝袜 在线| 丁香色五月婷婷17C| 91精品久久久久久综合五月天| 99精品自拍| site:hcxsz888.com| 996er在线观看| 中文人妻主播久久| 色青青视频| 亚洲色亚洲精品| 色婷婷五月天视频网站| 色五月大| 夜夜爽天天干| www.夜夜| 久久婷婷超碰| 99热精品网| 伊人五月婷婷| 亚洲综合激情五月天婷婷| 久久久久久久久久久久久久人妻视频| 五月亚洲激情| 丁香婷婷色六月| 97热这里只有精品| 久久人人九九| www色色com| 五月天婷久久| www.com色播五月天| 五月丁香人人婷婷在线观看| 欧美午夜乱妇午夜福利| 综合网精品99| 九九99热| 色八月婷婷| 天天舔天天插天天干| 婷婷五月丁香基地| 色九网| 99精品视频在线观看| 五月丁香 狠狠爱| 五月天丁香久久| 五月在线婷色| 九九热视| 婷婷五月天av| 中文字幕在线人妻| 噜噜噜狠狠色综合| 激情综合丁| 日本在线视频播放91| 国产毛片精品一区二区色欲黄A片| 美女婷婷激情亚洲| 国内一级精品| 深爱开心五月天| 久久久无码精品成人A片小说 | 五月天电影网| 超碰97干| 色婷婷丁香花五月天| 六月婷基地| 青草视频在线蜜臀| 色五月婷婷91| 91午夜婷婷狠狠久久综合9色| 激情亚洲婷婷| 互月天综合| 91精品久久久久| 九一娱乐在线观看视频| 97操碰| 亚洲视色| 双性美人被调教到喷水A片| 九九热在线99| 日韩人妻操逼视频| 日日夜夜天天综合| 亚洲天堂制| 99精品视频在线6| 99狠狠操一| 99碰碰。| 中文字幕+乱码+中文字幕在线观看| 99精品视频免费观看| 天堂无码人妻精品AV一区| 婷婷狠狠操| 夜夜做夜夜愛| 激情五月综合网| 99啪99| 婷婷五月激情在线视频| 无码人妻少妇色欲AV一区二区| 九色 在线| 九九亚洲视频| 中文成人在线| 九九蜜臀精品| 色综合久久44| 婷婷丁香综合| 婷婷丁香五月亚洲综合网在线视频观看| 日韩aaaaa| 九九热re99re6在线精品| 国产午夜精品久久久观看| 久久久GOGO无码啪啪艺术 | 日本成人噜噜噜| 色婷婷香蕉在线| 国产色色网站网址| 亚洲国产99| 成人亚洲精品| 99在线视频资源| 99热精品网| 俺也高清无码高清视频| 亚洲视频一区| 色综合爱综合| www.zbzhongsen.com| 婷婷综合网站| 久热人妻| 九九综合伊人| 欧美熟女99| www98日本小时间到了| 九九热免费视频| 六月色婷婷综合影视| 丁香五月婷中字幕| 亚洲视频在线网| 久热网站| 99玖玖精品| 五月婷婷av| 婷婷亚洲久久| 久色五月丁香视频| 7777精品伊人久久久大香线蕉最新版| 五月丁香六月综合激情无码软件亮点| 激情玖玖综合网| 六月 丁香 视频| 六月婷婷操逼| 色五月激情网| 激情av在线| 超碰在线视屏| 开心五月婷婷五月| 99视频内射三四| 色五月婷婷、老熟女| 江苏少妇性BBB搡BBB爽爽爽| 五月丁香六月婷婷手机无线| 新激情婷婷| 26UUU欧美| 91疯狂操操操操| 婷婷丁香熟妇综合网| 久99| 亚洲黄色影视| 欧美噜一噜| 日本色超碰| 丁香五月欧美色综合| 久久久91| 99激情视频| 综合久久五月| 久热爱大香蕉在线蜜臀悦色 | 亚洲愉拍99热成人精品| 久热九九| wwwss在线观看| 六月五月婷婷| 九九99香蕉在线视频播放| 日本色色图| 色久婷婷网| 操逼综合激情网| 99亚洲视频| 五月婷六月综合在线观看| 免费观看欧美成人AA片爱我多深| 人妻操在线看| 国产色网站| 国产人妻人伦精品一区二区| 欧美亚洲婷婷五月| 色偷偷色婷婷| 五月婷婷五月天| 少妇人妻综合色6699| 99热1| 五月丁香综合网| 激情五月六月婷婷| 婷婷在线播放av| 91综合视频丁香| 婷色五月天| 婷婷激情五月综合基地| 97婷婷狠狠久久综合9色| 婷婷六月啪啪| 狠狠激情五月天| 天天操天天爱天天日| 抽插特写| 久久久久人妻网址| 婷婷射婷婷舔| 99热 这里只有精品 国产 日韩| 97luluse| 99这里只有| 人人干人人操人人摸| 婷婷色五月噜噜| 97香蕉人人在线观看| 99热官网| 九九大香蕉黄色影院| 99久久思思| AV在线免费网站| 久99久视频精品| 大香蕉婷婷| 婷婷色五月丁香六月欧美啪| 凹凸7777操操操| 超碰在线超碰| 久99婷婷色综合| 久久九九色| 久久五月丁香| 99热精品9| 思思热闹这里只有精品| 精品九九网| 婷婷D区| 99久视频| 久久大香蕉同僚| 丁香六月久| 五月天婷婷久色| 99热在线观看| 永久免费一区二区三区| 五月丁香久久久| www.色婷婷.com| 影音先锋色婷婷| 五月天伊人网| 色综合色色色色色| 婷婷五月天成人动漫 | 99热精品在线| 97色婷婷| 久久大香蕉同僚| 五月婷婷丁香俺日污视频| 久久成人综合五月天| 天天做综合| 另类专区在线| 久操97| 日韩情色在线观看| 丁香五月 性爱| 婷婷丁香九色| 人与禽A片啪啪| 美日韩成人| 五月婷婷啪啪| 狠狠色色| 99啪啪视频| 欧美久久婷婷| 99碰网站| 精品99视频| 亚洲人成色A777777在线观看| 韩国三级五月天婷婷。| 热久久视频99| 久久婷婷亚洲五月天| 五月天小说激情| 五月综合亚洲| 亚洲精品小视频| 色五月婷婷大| 五月丁香啪啪综合网| 俺也去综合| 丁香六月激情蜜桃| 亚洲va欧美va国产综合久久久| 精品综合五月| 天天日天天做天天操| 狠狠草综合网| 婷婷五月花西瓜| 91婷婷五月天嫩女| 人人摸人人澡人人| 色欲五月婷婷| 五月色网| 丁香婷婷大香蕉| 日本猛少妇色XXXXX猛叫| 五月香婷婷| 激情操逼婷婷| 天天日P天天射P| se99热久久一本| 五月玖玖| 黄色99视频| 天天操天天操| 丁香婷在线| 婷婷五月天六月丁香| 香蕉操亚洲| 婷婷婷婷色| 国产av天堂| 香港九九六区八区99| 五月婷婷色白丝| 丁香五月影视| 五月婷婷深深爱爱| 婷婷爱婷婷| 天天狠狠夜夜狠狠2023| 婷婷五月香蕉| 99自拍视频在线观看| 熟女人妻视频| 五月天堂色色| 另类亚洲2| 精品无码人妻一区| 人人舔人人| 99无码超碰| 色婷婷成人做爰A片免费看网站 | 综合久久高清| 色99色| 真实的国产乱XXXX在线91| 色婷亚洲| 五月婷婷黄色| 伊人狠狠操| 热五月婷婷| 性做久久久久久久免费看| 色激情网| 人妻AV在线| 婷婷丁香五月天亚洲| 日本在线99| 男男野外做爰全过程69| 伊人久久大香线蕉综合网站| 成人网站在线观看视频| www,婷婷五月天777me,com| 六月丁香五月婷婷| 天堂爱爱| 五月婷婷视频| 99热久久这里只有精品| 9久9久9久女女女九九九一九| 99在线热| SESE无码AV| 五月婷婷,六月丁香| 亚洲免费成人电影AV| 丁香五月天婷婷在线视频| 天天看夜夜看| 26uuu| 丁香五月天天| 婷婷久久五月天亚洲欧美国产日韩在线观看 | 五月天婷婷自拍图片在线观看| 夜夜骑天天玩天天日| 五月天综合婷婷| 丁香五月婷婷久久久| 久久久久久天天日天天爱| 99精品在线观看| 国产精品色婷婷AV综合色色| 91碰碰碰| 久久香蕉婷婷| 婷婷综合五月天激情| 激情图片婷婷| 大香蕉福利导航| xxxx五月| 九九99九九99| 九色视频入口91| 婷婷五日b| 日本五月婷婷| 色香久久| 曰日爽日日操| www.97视频| 思思99热热热99| 超碰在线免费9| 99精品久| 热99久久这里只有精品| 色99网站| 五月婷在线影院| 这里只有精品1| 伊久大香蕉| 五月婷婷天天色| 狠狠干五月天| 99热e| 天天日天天插| 亚洲欧洲一二| 伊人色欲五月天| 久久精品99国产精品日本| 久碰视频| 亚洲精品99| 久久色五月| 色色国产| 91亚洲天堂| 开心激情综合| 九一九九黄色| 天天色综合网吨吧| www.色五月| 婷婷天天舔| 中文字幕永久在线| 精品久久婷婷五月天| 偷拍五月丁香| 色色五月婷婷| 97天堂| 婷婷丁香社区网| 大香蕉伊人久久| 九九久久五月天| 色婷婷在线播放| 操久久网| 人妻AV在线| 丁香五月激情婷婷视频| 色情婷婷五月天| 99色在线视频观看| 婷婷五月天激情小说| www。五月天激情| 亚洲综合色色| 久久婷婷六月| 中国女人做爰A片| 思思热热久久| 婷婷五月丁香成人网|