免费国产精品自在自线-91精品国产色综合久久久浪潮-99热久久免费频精品-国产精品国模在线观看-久久亚洲国产精品成人?V秋霞-久久国产一级A片免费播放-亚洲国产欧洲综合97久久-久久国产白嫩美女呻吟高潮

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
返回資訊列表
狠狠色丁香婷婷久久综合| 天天撸夜夜爽| 182tv992tv人之初午夜免费观看| 青草青草久热这里只有精品| 色五月婷婷激情基地| 九九色逼| 成人午夜无码视频| 欧美激情综合色综合啪啪五月| 夜夜操夜夜爽| 综合激情五月丁香| 久久久宗合| 成人无码精品1区2区3区免费看| 久久九九热视频| 超黄亚洲瑟瑟网站| 五月丁香日本在线视频观看| 99久久久免费| WWW99热| 91在线97视频| 色五月婷婷成人| 九九99精品| 思思热在线免费视频| 丁香五月开心亚洲| 日韩五月婷婷久久| 丁香五月花| 五月丁香综合中文| 91爱操| 国产精产国品一二三在观看 | 97操碰日本女人| 99久久九九| 丁香五月天啪啪a日本| 婷婷日| 99热这里都是精品| 久久99精品久久久久久噜噜| 婷婷欧美激情| 超碰99资源站| 91porn一起草| 久久婷婷综合基地| 99自拍视频网站| 五月天小说激情| 午夜69成人做爰视频| 亚洲第一第二网站| 人人播| 99毛片| 日日夜夜久| 天天噜天天爱| 99热精品9| 伊人大香五月天| 婷婷99中文字幕| 中文字幕黄色电影网址| 丝袜激情网| 中文字幕久久婷九女同| 97操男人的天堂| 草草色情综合网| 99热这里都是精品| 色婷插| 午夜精品久久久久久久爽| 五月婷婷激情网| 婷婷中文字幕| 日日鲁鲁鲁夜夜爽爽狠狠视频97| 久9热视频在线| 淫五月停停| 激情操逼婷婷| 久久精品99久久久久久久久| 99在线视频精品| 99在线免费视频| 激情亭亭五月| 99热99网| 丁香五月六月欧美| 婷婷五月在线视频| 色五月激情| 91碰碰| 色噜噜狠狠一区二区三区| 国产 亚洲 在线| 日本色婷婷| 五月婷婷之综合激情| 五月天综合婷婷| 五月丁香六月情| 五月激情婷婷在线| 99久久精品免费精品国产_国产精品久久久久久_国产在线|日韩_久久国产精品电影 | 老师的粉嫩小又紧水又多A片视频| 欧美操人| 国产44页| 欧美成性色| 热这里只有精| 婷婷五月天激情电影小说| 五月丁香激情综合久久| 99精品综合视频| 综合激情婷婷| 99欧美三级视频| 99色日本| 亚洲 精品 综合 精品| 人妻操操色| 五月激情天天干| 亚洲五月天激情| 91碰在线| 色五月丁香五| 婷婷五月色| 97激情五月天| 国产性爱一级| 日本精品人妻无码77777| 婷婷五月天淫荡| 超碰在线中文字幕| 久99热| 99在线免费视频| 人人爱操| 精典久久| 天天色,天天日,天天做| 婷婷五月av| 婷婷五月天淫荡| 97五月天婷婷综合激情网| 丁香婷婷六月激情文学| 六九色综合婷婷五月天| 99热在线观看| 欧美日韩成人在线| 五月天婷婷免费视频| 99热最新| 97色在线观看视频| 五月激情天天干| 五月激情视频| 亚洲秘 无码一区二区三区妃光/1| 五月天婷婷色五月天| 26uuu另类亚洲欧美日本一| 久操激情| 高清国产AV| 天天插综合在线| www,26uuu,c0m,色情| 97色婷婷成人综合在线观看| 激情骚五月| 激情深爱五月婷婷| 精品女人九九九| 天天躁日日躁狠狠躁日日躁2022年5月9日| 亚洲超碰在线| 色综合天堂| 丁香综合日产精品久久| 亚洲精品乱码久久久久99| 欧洲色色| 激情av网| 婷婷五月天日本无码| 激情九月婷婷| 日韩欧美一道四区中文字幕| 天天射色五月天| 五月天激情国产综合婷婷| 婷婷激情四射五月天| 婷婷六月网| 婷婷天堂站| 久久色吧| 久久五月天激情| 99国产在线精品视频| 激情五月天婷婷直播| 婷婷五月天激情网| 婷五月天丁香婷五月| 亚洲综合五月天综合| 人人操AV| 超碰精品在线| 丁香五月激情天AV无码| 久久婷婷内射| 国内一级精品| 在线观看的av| 日本不卡中文字幕| 日韩九区| 激情网第九色| 9+1视频网址| 五月婷色色| 国产美女视频久| 国产色色小草视频| 中文av网| 日韩欧美成人片| 婷婷六月啪啪| 99碰网站| 操一区| 婷丁香五月天| 色色五月天丁香| www.久久9| 婷婷五月激情视频| 六月丁香狠狠爱| 婷婷色色婷婷| 色婷婷A| 丁香五月婷婷亚洲综合精品| 婷婷综合激情| 九九精品片一| 亚洲AV影片在线观看| 六月丁香婷婷色综合| 色综合天天| 婷婷激情五月天在线视频| 婷婷五月天丁香| 秋霞午夜理论| 影音先锋 萱萱| 婷婷激情五月综合丁| 91呦呦呦| 激情小说婷婷小说| 极品少妇XXXX精品少妇偷拍| 天天狠狠色噜噜| 久久性爱网| 思思热99在线视频| 六月婷婷久久| 婷婷丁香六月天| 天天在线天天综合网色| 婷婷九九色| 亚洲欧美一区二区三区四区爱爱动图| 久久视频婷婷| 激情婷婷五月天| 色色日韩无码| 婷婷五月网图片区| 精品无码久久久久久久久| 亚洲传媒在线观看| 四月婷婷五月丁香| 五月天色婷好好| 色情婷婷| 亚洲成人婷婷| 婷婷五月丁香综合亚洲| 久久九网| 91久久1118| 天天爱天天做天天日| 99热成人| 久久怡红院| 色5月婷婷色| 五月婷婷色五月| 怡红院院在线导航网| 狠狠色色色| 色婷婷色99国产综合精品| 欧美 日韩 成人在线| 一级黄色影片| 天天操天天操天天操天天操天天操| 色婷婷五月综合| 青青草a在线| 奇米色大香蕉| www婷婷| 九玖欧洲亚洲| 九九黄色网| 91男人操女人视频| 亚洲中文字幕av| 五月婷婷中文网| 色婷婷影音| 久久这里只有精品99| 99热这里只有精品 搜| 亚洲一区二区无遮挡A片| 丁香五月婷婷网| 六月亭亭久久综合激情| 婷婷五月天在线看| 91色在线 | 日韩| 色五月亚洲| 婷婷综合在线| 激情五月天色爱| 色五月婷婷自拍| AA丁香综合激情| 激情綜合W W W,激情五月天| 久久午夜理论| 99热在线观看免费中文| 色婷婷激情五月天| a级毛片一区二区免费视频| 亚洲视频二区| 激情综合五月开心狠狠| 色99综合视频| 色吧网综合| 色丁香五月婷婷| 五月天婷婷青青草| 久久小视频免费| 久久婷婷国产| 国产黄色一级片| 久久综合99综合| 婷婷午夜精品久久久| 丁香五月婷婷天| 99久久婷婷国产综合精品草原| av一区免费看| 久久全意婷婷| 久久综合久色欧美综合狠狠| 色情综合网| 五月天婷婷色在线视频免费观看| 欧美日韩成人高清在线| 亚洲成人av在线播放| 91无码一区人妻A片蜜| 99色视频| 99热综合| 99热在线观看精品| 日本色色色| 五月激情在线| 精品人妻伦一二三区久久| 成人婷婷五月| 激情网站综合五月天| 在线观看国产高清视频免费网站 | 丁婷婷五月天在线播放| 欧美xx激情视频在线观看| 五月青青草综合| 五月天日日操夜夜操 | 熟女人妻一区二区三区免费看| 97中文在线| 亚洲综合五月| 99热碰碰| 色欲婷婷五月天| 日韩99视频| 天天操婷婷| 综合激情网激情五月。| 五月天激情无码| 婷婷五月天激情丁香| 丁香五月狠狠综合欧美| 五月花婷婷最新| 99re8热精品免费视频| 天天综合精品| 丁香六月婷婷缴情欧美| 五月丁香婷婷激情图片| 激情久久综合网| yiqicaoav| 六月色婷婷综合影视| 殴美97色| 国产三级片91| 五月开心婷婷中文字幕| 色婷婷综合五月| 狠狠操.COM| 五月丁香欧美在线| 另类 在线| 爱操人妻| 久久怡红院| 人人色人人弄人人操| 亚洲偷| 婷婷五月欧美| 91热久久| 很很干在线视频| 国产在线另类五月婷婷| 激情五月天婷婷在线网址发给我| 超碰人人草| 亚洲va成人va成人va在线观看| 91九色在线| 丁香五月花| 六月丁香五月婷婷| 玖玖资源在线视频| 91无码一区人妻A片蜜| 激情综合丁香| 久久HD| 天天插天天插天天日| 五月婷婷香蕉| 婷婷中文字幕| 欧美成人精品A片免费一区99| 日韩一级一片内射视频4K| 97操碰在线97| 亚洲婷婷在线播放十月| 亚洲国产色色| 色噜噜狠狠色综合日日| 色欲AVV| 国产精品汇聚精彩第二页 - 高清完整版在线 - 青蛙AV | 狼友视频在线观看18| 91久久综合亚洲鲁鲁五月天| 五月婷六月综合在线观看| 欧美综合在线五月天色婷婷| 激情五月婷| 中文字幕在线观看视频www| 亚洲成人AV电影在线| 国产精品电影网| 日本99热| 欧美高潮9| 婷婷免费无马| 色噜噜婷婷| 亚洲av免费在线| 精品久久久91久久影视网| 黄色99热| 婷婷夜夜夜夜| 五月激情小说| 九九大香蕉黄色影院| ri电影在线| 色色AV色色色东莞| 日韩少妇内射免费播放| 久久色婷婷| 婷婷香五月| 888精品福利地址| 婷婷基地爱| 天天操天天操天天操天天操天天操| 在线中文AV| 综合色影| 九九婷婷五月天| 欧美色色色| 色月丁| 激情5月婷婷狠狠干| 五月天狠狠色| 中文字幕精品推荐免费在线观| 丁香五月六月久久综合 | 婷婷五月丁香青青草在线| 六月丁香五月亭亭| 亚洲视频另类| 91九色视频在线观看| 久操干| 九九re精品视频在线观看| 91色综合网| 婷婷丁香五月麻豆| 狠狠色婷婷丁香六月| 九九色婷| 国产精品国产| 啪啪色区| 久热中文字幕在线线观看| 热99在线| 久久婷婷热| 天天色粽合合合合合合合| av中文网| 操逼在线视频| 五月婷婷色欲| 《》【无码】想被搞到爽AV应募而来的超M素人 西纯子 10musume-011723-01 | 亚洲精品乱码久久久久久按摩观| 日韩99视频| 亚州第一黄网| 国产一二三四五六七八视频| 丁香五月之久操视频| 婷婷五月成人色综合| 久久久久久97| 中文字幕九九九九| 成人一级片| 日韩无码系列| 播五月丁香三月婷婷| 精品99*| 91视屏在线观看com.wwwvv| 日本九九九九| 狠狠色综合五月人人| 伊人丁香六月婷婷| 婷婷99| 天天日天天插天天操| 成人精品在线观看| 激情综合女人网五月播播| 97综合在线| 五月天电影网| 久久婷婷亚洲| 五月激情婷婷开心| 丁香婷婷五月天亚洲| 国产AV网页| 久久婷婷视频| 色激情五月| 六月婷婷激情| 丁香六月婷婷五月婷婷| 婷婷丁香综合| 丁香色婷婷| 丁香五月天天高清在线| 丁香五月影视| 中文字幕在线人妻| 激情伊人五月天| 久久精品国产精品| 久热这里只有精品6| 婷婷97| 激情综合在线播放| 另类婷婷五月天啪帕帕| 国产亚洲精品久久久久久郑州| 婷婷五月草| 国产美女精品| 天天日天天操天天干| 大香蕉久久伊人婷婷五月丁香| 亚洲天堂有码| 五月婷A V在线| 欧美色骚婷婷五月天| 五月久久网| 精品五月花| 99综合| 久久九九热视频| 婷婷五月六| 五月丁香av在线| 日日干日日s| 五月天婷婷一起草| 激情五月无码| 婷婷五月天激情在线观看 | 五月激情丁香啪啪| 五月激情综合深爱| 开心激情网五月| 亚洲va在线| 天天操夜夜爽| 99性爱视频| 五月婷婷六月丁香综合| 五月丁香中文字幕| 五月玖玖| 内射人妻视频国内| 激情五月狠狠喔| 少妇婷婷五月天| 99婷婷国产最新视频| 色99自拍| 五月天大香蕉| 综合久久婷婷99| 99ri视频在线观看| 九九精品99| 六月婷婷色五月| 天天久| 2020日日干| 岛国AV网| 七七色色综合| 亚洲综合婷婷| 激情综合网五月丁香| 欧美成人精品A片免费一区99| 无码少妇高潮喷水A片免费| 久久婷婷色五月| 26uuu国产| www.夜夜爱.com| 99啪在线| 天天操夜夜玩!| 国产激情综合五月久久| 欧美日韩中文国产一区发布| 免费看无码视频A级| 色情播放| 激情第四色| 婷婷五月激情综合啪啪| 激情五月婷婷伊人| 天天爱天天爽| 91九色视频在线观看| 99视频地址| 激情五月婷黄版| 五月天婷婷小说| 国产综合视频婷婷| 色婷婷五月天无码视频| 婷婷五月丁香av网站| 五月婷婷综合在线视频小说| 国外亚洲成AV人片在线观看| 淫视馆aV二区一区| 婷婷五月天电影网| 色伊人婷婷| 玖玖综合色| 婷婷色五月天色| 99综合免费视频| 清色五月天| 综合久| 国产黄色一级片| 九九这里有精品| 精品自拍97| caopeng97日韩| 五月丁香六月激情欧美综合| 91久久久久久久久18| 国产67194| 五月婷婷色播| 性日本激情| 九九热精品| 久久亚洲色导航| 开心激情婷婷| 97五月天婷婷| 26UUU欧美激情一区二区| 婷婷色丁香五月| 婷婷亚洲色| 亚洲无码成人性爰网| 2018国产大陆天天弄| 丁香综合网| 97人人操com| 大香蕉网站,大香蕉综合| av国产精品偷| 色色五月婷婷| 男女久久婷婷五月天| 国产中文字幕在线视频免费观看| AV在线中文| 五月夜丁香| 人人操人人爰人人一天天碰夜夜拍夜夜爽-中国A级毛片天天看天天谢… | 99在线免费视频播放| 激情五月婷黄版| 丁香婷婷免费| 婷婷六月综合| 激情五月婷婷在线区| www91色网站| 亚洲色综合| 另类激情五月在线视频欧美| 六月激情久久婷婷| 激情图片99| 人妻激情久久| 久久精品99| 激情五月六月婷婷| 五月综合六月婷婷| 99精品在| 性爱网久久| 婷婷色av| 五月花成人网| 伊人99热| 五月天开心色情网| 97碰人人操| 狠狠色综合图片| 婷婷五月天伊人| 91超碰在线播放| 国产精品久久7777777精品无码| 手机在线日韩视频中文字幕| 无码色综合| 婷婷综合久久综合| 亚洲另类毛片| 国产第99页| 婷婷字幕在线| 激情综合网五月| 久久久久人妻精品| 丝袜激情网| 色婷婷88| 开心五月婷婷| 亚洲精品又粗又大又爽A片 | 伊人9999| 网站免费一站二站| 99久久九九| 久久伊人大香蕉| 婷婷六月色| 开心婷婷五月| 99久久精品免费精品国产_国产精品久久久久久_国产在线|日韩_久久国产精品电影 | 激情久久综合| www.色五月| 婷婷色5月天在线。| 天天操夜夜夜拍拍拍| 性生活久久人妻| 欧美日韩国产一区二区| 一起草AV| 激情婷婷另类| 精品99这里有| 夜夜夜夜夜骑撸| 蜜臀综合久草| 五丁香激情综合| 99精品视频网| 超碰亚洲欧美| 99久久久久久| 五月天激情无码高清 | 国产毛片精品一区二区色欲黄A片| 激情文学综合婷婷五月天丁香花| 大香蕉狼人久久| 秋霞簧片| 日本色色图| 亚洲色9| 激情小说婷婷五月| 人人摸人人搞| 色情五月| 色婷婷影音| 玖玖综合色| 百度一下国产精品A| 99热最新网址| 综合久久高清| 成人在线免费网址| 丁香婷婷六月天| 婷婷91| 五月婷久草| 五月婷综合性中心| 玖玖在线视频| 综合五月婷婷| 久热一本| 中文字幕在线免费观看视频| 超碰成人影视| 六月色国内综合| 九九色热| 婷婷丁香视频在线观看免费| 免费视频无码| 超碰男人色| 无码色色| 五月丁香婷婷婷激情爱爱| 97色色在线视频| 欧美A片在线视频免费观看| 99热这里只有精品亚洲| 中文字幕在线免费看线人| 天天日夜夜B久久| 欧美人与性动交CCOO| wwxx日本| 伊人久久婷婷| 五月婷婷干| 天天网曰日曰夜夜综合永久免费| 五月天婷婷乱论小说| 久久98热re| 五月丁香婷婷综合| 五月激情六月| 色哟呦av| 热99这就是精品视频| 色欲九区| 亚洲深喉aV| 天天干天天操| 开心五月婷婷婷美女| 五月丁香成人| 国语精品探花| 亚洲AV网站| 亚洲妇女熟BBW| 久热播这里只有精品| 中文字幕综合色| 久久久com| 九九热在线观看视频网站| 亚洲成人精品三区| 91九色网| xx人人xx| 91热er| 九九久久污| 91一起操| AV在线观看网站| 深爱激情五月天色婷婷| 91人操人人人操人| 九九九九精品精| 激情五月丁香五月| 久久这里只有精品热在99| 色六月天天激情综合网| 婷婷久久久久| 久久免费丁香| 日本黄色精品| 久婷婷五月天影院| 色九月丁香婷婷蜜桃在线观看| 超碰在线国产| 久久ab| 色综合婷婷| 99热这里只有精品55| 婷婷五月天亚洲综合| 激情欧美婷五月| 美妞av| 色色影院aaaav| 久久国产性爱A V| 99er这里只有精品| 亚洲欧洲色色| 天天色天天爽| 色色亚洲无码| 99色播| 天天干肏夜夜| 中文字幕性爱丰满| 日本婷婷综合精品| 99 色色吧| 天天天日天天天干| 亚洲视频色婷婷| 激情五月天com| 国产精品色色| 9有码中文| www.99热这里只有精品| 噜噜视频| 无遮挡国产高潮视频免费观看| 乱岳熟女50岁| 久久亭亭电影| 五月伊人网| 五月色婷婷AV| 国产精品色婷婷AV综合色色| 99综合| 五月丁香激情综合网| 国产在线aaa片一区二区99| 日韩无码亚欧无码| 思思99热在线| 综合视频久久| 色婷综合| 青青草六月丁香| 开心深爱激情网| 丁香婷婷婷五月综合色情| 欧美精品久久久久久视频观看| 婷婷五月激情视频在线| 搡BBBB搡BBB搡18 | 婷婷激情伍月网| 伊人www22综合色| 东北熟女高潮99综合99| 26uuu激情五月天| 狠狠狠狠狠狠狠狠| 伊人久久大香蕉网| 亚洲日韩欧美综合VA| 99视频在线观看地址| 99在线er热| 日韩AAAAA| 丁香花五月天激情| 色碰碰视频| 激情四射婷婷色色色| 五月激情婷婷在线| 涩婷婷视频快播人妻| 日日夜夜天天爽| 五月久久综合| 九九性视频| 伊人热婷婷| 色情成人五月天| 99热狠狠操| 任我肏| 久久精品色| 99热官网| 丁香五月婷婷骚视屏| 婷婷丁香九色| 亚洲日韩欧美综合VA| 永久热91| 97操视频| 亚洲第一色色色色| 五月激情四射网站| 舔色婷婷| 国产精品久久99| 国产肥白大熟妇BBBB视频| 色婷婷影音| 99热色婷婷| 天天日天天爽| 人人视频色| 91精品婷婷国产综合| www.五月天婷婷| 日本成人噜噜| 99黄色性生活| 婷婷综合中文字幕| 999婷婷综合| 五月噜噜| 九九色影院| 免费在线观看av网站| 99热97美女| 婷婷丁香五月婷婷| 国产午夜精品一区二区| 天天色丁香| 九九婷婷网五月天| 五月天婷婷色色| 狠狠色成人影片| 91se在线视频| 久久AAAA片一区二区| 91viP在线看| 色婷婷99| 99久久婷婷| 思思热精品免费视频| 嫩草AV久久伊人妇女超级A| 丁香婷婷综合激情五月色| 91精品久久久久久久久久| 色综合香蕉视频| 欧美人人草| 99热这里只有精品1025| 99爱在线免费视频| 亚洲成人婷婷| 激情视频91| 久久九九网| 丁香六月天之亚州热女| 2022人人操人人看| 九九aV| 操嫩逼电影| 91精产一区三区免费观看| 人妻人人操| 99高级会所久久| 伊人久久丁香五月91| 六月色婷婷| 69热在线| 欧美日韩中国| 综合av在线| 色五月婷婷综合在线| 婷婷五六月丁香| 特黄三级又爽又粗又大| 九九性视频| 深爱激情五月婷婷| 97色五月天| 9色在线| 五月丁香婷婷伊人| 亚洲亚洲人成综合网络| 日本久久人| 人妻啪啪啪| 一區四區歐美日韓| 免费黄色视频网址| 色五月激情综合网站| 欧美日本韩国亚洲| 亚洲色99| 色五月在线观看| 久草a片| 九九99免费视频| 噜噜吧天天爱| 9久久久久久久久久久| 激情五月天小说|五月天开心激情网|亚洲精品国产自在现线|黄色五月天 | 久久久久久综合88| 啪啪色区| 99日这里只有精品| 亚洲色色精品| 亚洲一区二区无码蜜乳av| 成人 在线 日韩| 人妻九九九九| 色99在线观看| 六月婷婷狠狠| hd五月婷婷在线| 天天爱天天做天天爽| 久久欧洲久久| 亚洲一区二区无码蜜乳av| 99re在线观看视频| 亚洲色优| 超碰在线免费| 97久久视频| 老美AA片| 影音先锋91资源站| 欧亚洲在线高清视频| 丁香五月首页| 日日夜夜婷婷| 97精品人人A片免费看| 不卡在线视频| 九九色婷婷Av| 成人婷99最新| 天天天天天操| 91se在线观看| 九九综合久久| 狠狠第四色| 色色色在线播放| 狠狠爱婷婷爱| 国产精品久久久久久久久久免费| 久久99免费视频网站| 色五月成人| 丁香六月天之亚州热女| 亚洲操逼片| 九九操屄| 欧美大奶熟女噜噜噜噜| 色小说五月婷婷| 99性爱| 丁香六月婷婷色播| 婷婷五月无码| 国产精品18久久久| 九九碰九九爱97超碰| 996热re视频精品视频这里| 久久人人九| 色综啪啪网| 超碰99在线观看| 26uuu精品一区二区| 图片区 小说区 区 亚洲五月| www.99免费视频| 天天做天天爱天天爽| 六月婷婷激情| 九九热99热| 97色一二三| 五月婷婷啪啪啪啪| 丁香五月黄色| 日韩另类| 五月婷婷日本| 色色色色色色网| 久久久久久久91| 五月婷婷色丁香| 九月色婷婷| 激情婷婷内射| 伊人婷婷大香蕉在线| 久热这里只有精品在线观看 | 九九色综合| 狠狠色性| 五月激情影院| 五月婷婷乱| 国产亚洲色婷婷久久99精品91 www.riverspirits.org www.hnnun.com www.changh | 九色在线五月婷婷网址| 久草久青福利| 玖玖九九超碰| 亚洲色五月婷婷| 99精品自拍视频| 综合色播| 丁香五月网在线观看| 婷婷五月丁香激情图片| 久久婷婷成人| AV天堂淫乩| 青吴乐视频| 大伊香蕉精品视频在线| hd五月婷婷在线| www.91AV.COM| 99毛片| 被强行糟蹋的女人A片| 婷婷免费无视频| 国产激情在线观看| 亚洲人妻av| 久久a热| 人人色婷婷五月天| 91黄色五月天视频| 日日日日日| 五月丁香婷婷综合| www.五月激情.com| 色婷六月| 婷婷五月天久草在线| 97人人干人人操| 久色国产| 天天干天天叉| 久久五月天婷婷视频| ady狠狠入| 被强行糟蹋的女人A片| 97人妻碰碰碰久久香蕉| 五月激情五月婷婷五月天在线| 色婷青青| 97精品综合久久| 国产色色色色| 成人丁香婷婷五月天| 激情文学天天| 久久久婷婷婷| 97干欧美| 97超碰在线免费观看| 在线看黄色| 婷婷五月天综合色| AV伊人青草丁香六月| 最新日韩久热免费视频看看| 97成人在线视频| 色色五月婷婷狠狠| 国产古装妇女野外A片| 国产一级视频a| 国外亚洲成AV人片在线观看| 人妻av在线| 图片区 小说区 区 亚洲五月| 超碰免费成人| 五月婷婷色| 国产伦亲子伦亲子视频观看| 少妇激情五月天| 狠狠干狠狠色| 99啪啪视频| 噼里啪啦完整版中文在线观看| 亚洲中文字幕网| 婷婷丁香无码专区| 激情婷婷五月天丁香| 色色五月综合| www.日本久久videos| 99久久综合网| 婷婷不干网| 色婷婷最新域名| 97热视频| 啪啪婷婷五月天激情| 婷婷五月综合激情小说| 超碰在线9| 9l视频自拍9l九色成人| 五月婷久久久久综合| 97操男人的天堂| www.99色| 五月丁香啪综合| www.久久99| 9 1在线视频| 韩国情人在线电视剧免费观看高清版全集| 欧美天天性| 99精品在线观看视频| 六月丁香综合999| 六月婷婷中文字幕| 99国产精品久久久久久久久久久| 99ri6在线视频| 国产色色网站网址| 激情久久久久久久久久| 日韩在线观看网址| 97碰碰人人| 丁香五月天狠狠| 久久99免费视频| 综合逼五月激情婷婷| 任你日视频| 免费成人中文字幕| 天天成人综合视频| 无码激情AAAAA片-区区| 亚洲色综合| 婷婷天堂综合| 97碰免费视频在线| 色色a| 日日夜夜天天爽| 婷婷午夜精品久久久| 葵花AV在线| 欧美色色色色色| 1级欧美日韩| 久久99这里只有精品视频 | 五月做爱| 天天爽天天摸天天爱| 九九热这里只有精品9| 婷婷五月天无码熟女| 五月丁香激情综合网| 六月丁香深深爱综合网| 五月天丁香| 开心深爱五月天| 婷婷狠狠操| 日日操夜夜爽天天天| 亚洲视频一区| 五月伊人婷婷| 狠狠人妻色综合| 伊人色综合网| 五月天成人小说网| 伊人玖玖综合| 亚洲色视频| 涩涩婷婷五月| 色综合av超碰| 五月丁香婷婷色| 五月天无码视屏播放| 五月丁香狠狠地噜噜噜噜| 婷婷五月综合社区在线| 人人操av| 亚洲小说五月婷婷| 99热第一页| 久久99网站| 色婷婷六月丁香综合欲精品| 99视频久久| 亚洲丁香花五月丁香花| 女婷久久| 九九亚洲视频| 十月丁香婷婷| 五月婷婷色色色| 热婷婷久| 99热在线观看| 九九热在线99| 99热这里全都是精品| 青青草搞屄视频网站| 色九综合| 婷婷中合| 婷婷五月花| 天天爱天天做天天| 六月丁香深深爱| 久久只有这里精品免费| 97自拍99| 色九月综合| 69超碰在线| 五月婷婷啪啪| 99热网站| 丁香五月婷婷五月| 亚洲国产成人在线| 99人妻碰碰碰久久久久视| 中文字幕婷婷五月天在线观看| 免费亚洲婷婷| 99ri在线视频| av在线观看免费| www.henhenl| 综合一区二区三区| www.婷婷| 五月丁香婷婷在线| 色停停香蕉视频| 色天堂在线| 色婷婷精品视频| 色婷六月| 啪啪综合| 久久99热这里只有精品| 99精品综合| 青青草免费公开视频| 免费视频WWW在线观看网站| 国产精品第一国产精品| 婷婷六月丁香五月图区| 六月婷婷操逼| 色婷婷19| AA丁香综合激情| 91碰免费视频| 99久扒热| 久久66er久久| 五月丁香婷婷激情澎湃四射| 天天做天天爱天天爽综合网| 91成人电影| 激情第四色| 久久六月综合| jiujiu热在线视频| 三级大香蕉网| 无码人妻电影| 五月婷婷 激情按摩| 成人综合视频在线| 五月丁香直播| 色狠久| 亭亭玉月丁香| 九九九九中文字幕| 色很很96| 狠狠高潮精品亚洲1| 国精产品一区一区三区免费视频| 99热最新国内| 亚洲精品色色| 成人在线视频一区| 免费视频WWW在线观看网站| 五月天婷婷人妻| 婷婷久久久| 欧美碰碰| 婷婷激情综合网| 激情五月婷| 婷婷综合亚洲| 亚洲综合激情五月| 四川BBB搡BBB搡多人乱亂| 丁香六月啪啪| 丁香五月婷婷五月天| 婷婷色狠狠| 骚货艹网站视频| av国产精品| 天天插天天很| 免费无码毛片一区二区A片| 蜜桃婷婷五月| 99热综合| 看婷婷五月天网| 99色在线| 在线成人网站| 五月开心激情| 丁香六月色婷婷欧美| 九九综合色| 激情综合综合综合| 成人免费黄色短视频| 色情五月天se| 激情五月黄色| 欧美狠狠地| 婷婷五月精品中文| 国产精品99久久久久久猫咪| 日本狠狠网| 一逼色综合| 五月婷丁香| 六月米奇色综合| 色婷综合| 色婷丁香| 激情五月婷婷色综合| 久热re视频在线观看网站| WWW,五月| 成人一级片| 免费观看全黄做爰的视频| 天天草天天日| 情一色一乱一伦一91A| 亚洲久久激情| 五月婷婷综合精品| 久热九九| 97操碰在线97| 丁香色婷婷五月天| www.com操| 五月亭大香蕉| 久9视频| 日本色综合| 激情合网婷婷| 久久久久久激情| 好吊兆人妻| 久久丁香五月| 可以看的AV网站| 综合xx网| 亚洲色综合| 日本少妇AA一级特黄大片| 婷婷五月天av| 国产激情久久久| h在线看免费版在线看| 五月丁香天天| 天天情天天狠天天透| 伊人色综合久久久| 亚洲天堂青草| 午夜天堂一区人妻| 天天干电影| 五月天久久综合| 色五月天成人| 综合色吧| 丁香婷婷十月| www.精品99| 欧美精品99久久久| 超碰9| 久久婷婷五月综合激情国产| 婷婷五月丁香综合桃花色网| 91男女视频在线观看| 成人做爰A片免费看视频| 爱久综合| 九九伊人网| 中文av网站| 色播综合| 久久精品国产精品| 全部老头和老太XXXXX| 乱岳熟女50岁| 色色色九九九五月婷婷| 九色激情| 久久青青日本视频| 久久五月婷婷丁香| 天天插天天插天天操| 这里只有精品,日韩视频| 婷婷久久视频| 99这里只有精品99| 色色射| 97碰免费视频在线| 婷婷六月色| 丁香伊人五月色婷婷五十路| 久久香蕉丁香| 深爱丁香网| 丁香六月婷婷色XXXXX| 综合久| 国产精品美女久久久久AV超清| 日本三级第一页| 成人电影AV在线观看| 男人天堂伊人五月丁香| 婷婷亚洲五月色综合| 婷婷五月天亚洲综合| 色婷婷影视| 懂色av粉嫩AV蜜臀AV| 踪合专区啪啪| 麻豆五月丁香婷婷| 色香蕉影院| 91热久| 婷婷色五月亚洲| 色五月天丁香婷婷| 激情综合网激情五月婷婷| 久久久婷丁香五月天激情综合| 夜夜骑操AV| 色婷婷玖玖影院| 亚洲在线激情婷婷五月| 婷婷六月综合基地| 日本二级毛片二级毛片| 久久激情视频| 九九热免费视频| 日韩国产在线精品| 丁香六月激情综合| 五月丁香大相交| 丁香五月天激情四射网络不好| 五月天婷五月天综合网在线观| 久久多色| 九九99香蕉在线视频播放| 婷婷五月激情在线| 天天干天天做| 99热这里在线精品| 九九久久五月天| yellow视频在线观看91| 丁香五月天社区| 91精品久| 色永久| 亚洲天堂九九九| 色五月女| 九九色黄色| 五月天亚洲色| 欧美日韩成人高清在线| 欧美激情VA永久在线播放| 婷婷综合九月| 激情婷婷久久| 超碰激情网| 欧美精品18| 激情五月网站| 久操香蕉| www,超碰| 深夜男女福利刺激影院一区| 亚洲第一第二网站| 亚州激情在线视频| 日韩丰满少妇无码内射| 99成人无码| 九色 在线| 色情综合网| 一级操逼内射在线视频| 91九色欧美| 99色热|