国产成人欧美一区二区三区vr_久久国产精品人人爽人人爽_国产精品永久免费播放_肉欲啪啪a∨无码精品一区二区_国产超短裙jk丝袜在线_亚洲AV片高清资源在线观看_国模无码一区二区三区久久_国产成年人未进视频_中文字幕无码精品夜_一区二区三区在线视频免费看_亚洲成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
返回資訊列表
亚洲在线a| 久久久久骚| 午夜欧美精品久久久| 精品国产自在在线99| 日小BB小视频| 九九九九9999| 安微少妇操BBB| 久久侵犯人妻爽爽爽| 亚洲AV秘 精品久久老牛影视| 超碰99在线| 99只有精品| 熟妇人妻精品一区二区视频色欲| av天堂手机版追回| 九九干| 97超碰欧美精品| 97精品第3页| 一色网男人的天堂| 婷婷视频网| 探花一区二区三| 中文字幕97| 中文字幕在线第二页| 国产午夜福利视频在线| 中出789在线视频| 东京热激情视频一二三区 | 中文字幕 一区二区 亚洲无码| 五月丁香拍拍激情综合三级| a片久久久久久久久久久久 | 欧美人与性动交a美精品| 久久久久婷婷| 欧美亚洲中文字幕| 久久国内| 欧美性爱www免费版| 国产欧美日本亚洲精品| 日韩美女操b| 黄色免费网| 久九九九九九九九热| 久久久久深夜无码| 狠狠干2020| 日韩美女高潮喷水视频| 中文字幕av一区二区三区人妻少妇| 青青草大香蕉在线视频| 操曰本熟女| 欧美91精彩| 国产传媒美日韩av| 乱码人妻一区二区三区| 蜜桃精品视频一区二区三区| 欧美久久人体| 国产区在线| 欧美色91| 一个国产在线综合网站| 国产欧美日韩精品中文| 欧美性爱在线无码| 久久超碰久| 久久久久久大| 欧美97在线观看| 美日韩一卡二卡三卡免费人妻精品| 九九热免费国产视频婷婷伊人| 久久极品一区二区| 91无摭挡| 五月丁香六月婷| 激情婷婷| 国产精品天干天干综合网麻豆 | 97伊人| 亚洲深夜福利| 日韩成人高清一区二区| 日日操免费视频| 国产高清精品一区二区三区毛片 | 美女露胸露奶头| 亚洲素人网| 久久久性少妇| 无码人妻一区二区三区色欲aⅴ| 操逼啊啊啊91| 精品熟女一区=区三区| 亚洲AV乱码专区国产噜噜亚洲| 婷婷色网| 日韩精品在线视频,日韩精品……| 日本在线观看网址| 亚洲情色五月天 | 亚洲精品国产精品成人| 欧美久久伊人| 人妻一区二区三区| 男人天堂无码| 一区二区三区高清天码| 色婷婷综合久久久久中文国产精品一区中文字幕,国产福利电影一区二区三区 | 亚洲欧美一区二区不卡视频播放| 91少妇高潮| 亚洲中文字幕熟女| 性吧在线视频| AV久日| 亚洲麻豆av一区二区| 韩国成人精品久久久免费看| 欧美综合第一| 日日超碰亚洲| 亚洲中文字幕av| 97露脸精品丝袜| 成年在线视频日本亚洲在线视频区精品江靖宇公司 | 国产精品ww久久| 可以免费观看的日韩av毛片| 1区2区3区在线视频| 一摸二插三插| 中文字幕亚洲热播人妻| 97硬碰| 九七超碰人人乐| 免费av在线播放二区| 久久大香蕉| 后入日本1234| 在线中文字幕极品av| 动漫片子网站3黄| 极品色| 人、人、摸,人、人、草| 婷婷国产精品九区| 搞中出久久| 丝袜制服字幕在线| 欧洲性爱无码区| 亚洲天堂电影精品一区| 国产精品原创巨作?v网站| 亚洲双插| 色墦五月丁香| 后入合集| 亚洲综合五月天| 91综合天天看| 亚洲色图大香| 欧美亚洲情色| 亚洲综合影片| 翔田千里AⅤHD无码| 深夜啪啪啪视频免费| 性91| 极品白嫩福利在线| 搡老女人911熟妇老熟女| 日本一二三高清| av网站免费看| 大香蕉啪啪啪啪在线| 久操97| 青青11操操操操操操操操| 东京热AV男人的天堂| 欧美日韩第一页| 九九亚洲色在线观看| 青娱乐国产盛宴视频| 亚洲黄a三级三级三级看三级| 国产一区免费午夜视频| 青女偷拍网| 五月天婷婷色| 亚洲色图欧美一区二区不卡| 综合国产97| 中文字幕交换人妻| 亚洲精品人体| 亚热日本熟女| 超碰久热| 色吧5亚洲| 精久久久91| 国产精品一区二区校花| 夜夜嗨一区二区三区三州加勒比| 91精品综合久久久久久五月丁香| 淫荡网址| 韩日巨乳美女免费视频在线观看| 久久久精品国产亚洲AV无码| 另类图片欧美激情综合| 欧美精品不卡一二三四在线91| 9999免费精彩视频| 超碰夫妻97| 成人网址在线观看| 亚洲色婷婷久久91| 99精品在线| 午夜人妻精品综合在线| 中文字幕日韩电影人妻| 97干在线视频| 人人操人人射人人干| www色色色com| 精品性爱一二三区| 精品久久久av无码免费| 国产热av| 久久111| 五月天综合在线| 日韩激情无码影院| 91蜜桃传媒精品久久久一区二区| 伊人久久大香蕉线AV五月天| 精品v1区| 色婷婷亚洲婷婷| 色在线综合| 亚洲天堂另类| 国产精品一区二区后入| 91狠狠综合久久久久久| 久久婷综合| 激情黄色片在线观看| 大香蕉92| 欧美 亚洲 另类 综合| 亚洲色五月| 色乱二区| 久久九九视频九九视频| 午夜性刺激视频免费观看| 人妻人久久精品中文字幕| 美女淫穴| 日韩在线国产字幕| 99久草| 久久久青草青青国产亚洲免观精品高清完整版_97久久综合区小说区图片区,国精品 | 国产福利小视频高清在线观看| 亚洲天天在线| 色吧 综合| 东北毛片| 一区操逼| 国产最新小视频在线播放下载 | 国产人伦精品一区二区三区 | 亚洲在线A| 曰本91情色| 999久久久九| 精品射1999| 91麻豆天美国产欧美日| 人妻熟女午夜精品在线| 怡红院怡春院| 久久6热精品99视频| baiduhicn.com。| 韩国女主播青草在线| 射丝袜高跟鞋99| 婷婷三区| 91真人天天在线| 亚州色图狠狠干| 一二三啪啪专区| 久久精彩视频9| 操我啊啊啊啊啊| 蜜桃视频精品一区二区| 成人影 天天操 亚洲| 婷婷色香| 欧美影音在线| 五月婷久久| www.91久久| 91一起操| 在线啊啊啊啊| 亚洲人久久久网| 综合大香蕉美。| 丰满熟妇大乳做爰| 久久一区二区蜜桃| 中文字幕av亚洲精品| 国内毛片国产欧美拍| 亚洲国产精品成人综合| 久操视频资源站公开| 熟女人妇一区二区三区| 日本午夜精品理论片A级APP发布| 欧美日韩第一页| 欧美色图天堂在线| 97久久精品亚洲| 亚洲 欧美 91| 天天α片| 国产中午字一暮区| 麻豆AV一区二区天美传媒| 麻豆精品.欧美精品.日韩精品.| 欧亚 另类 久| 亚洲一区日韩精品中文字幕| 乱伦1色页| 久久一级无码精品毛片6| 色香蕉影院| 久久熟妇五十路一区| 久噜噜| av天堂加勒比| 国产精品不卡一区二区电影| 丁香六月东京热| 婷婷97| 97超碰碰| 黄色电影在线播放综合网站| 岛国片在线观看视频亚洲| 欧美性爱97超碰| 97超碰资源网| 日韩本不卡视频在线观看| 国产精品成久久久久午夜午夜| 人人艹亚洲| 狠狠操狠狠爱| 碰人碰碰人人开房人肉| 97AV在线观看| 午夜大香蕉| 国产性爱欧美性爱在线| 日本综合色图| 日本三级日本三级99| 自拍丝袜美腿人妻| 久久粉色| 口爆吞精在线观看| 青青草吊丝| 蜜桃狠狠色伊人亚洲综合 | 九九九九一区| 国产福利影视| 天天天操天天天爱| 蜜臀AV秘一区翔田千里| 精品视频日日夜夜| 中文字幕av一区二区三区人妻少妇 | 免费成人自拍视频在线| 色欲日韩欧美在线一区| 国产视频大全| 91动漫操逼视频| 国产传媒1234区| 老熟乱一区二区三区四区| 无码操逼网| 精品网站9999| 熟妇色99| 97自拍一区| 视频国产欧美在线播放| 中文字幕一区av| 热热色青青草| 柠檬AV导航| 色欲久久99精品久久| 最新亚洲人成网站在线影院| 久九九九九九九热| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区二区 | 色噜噜国产在线| 久久这里只精品| 成人性爱视频在线看| 日日夜夜天天| 午夜福利合集| 丁香婷婷九月| 97人人夜| 色色99| 亚洲美腿丝袜香蕉影视欧美成人| 青青草天天亲夜夜操网| 丰满人妻一区| 91强热人妻| 狠色婷婷久久一区二区三区_| 热99这里有精品综合久久| 99综合网| 国产精品点击进入在线影院高清| 欧美久久草熟女| 人妻三级在线中文字幕| 黄色小说亚洲| 亚洲a色| 欧美性爱中文字幕无线码| 91天天爱| 美女操逼福利视频| 欧美亚洲清纯| 五月婷婷激情综合| 日韩兔费看黄片| 殴美日韩m| 免费自拍三级综合| 蜜臀久久精品久久久久视频| 韩国黄色片精品久久久| 影音先锋日本乱伦| 天堂综合| wwwss在线观看| 97视频免费| www鬼畜国产男人的天堂| 啊啊啊好大好深| 日本精品国产视频| 久久男女激情视频网站| 伦理第一页| 夫妻四区五区六区| 先锋色眉乱伦资源| 狠狠干91| 激情人妻另类| 六六久久日韩不卡| 男人天堂无码| 婷婷五月花| 放黄片放3级黄片没穿衣服| 夜夜操91744565| 欧美操人视频| 97操97干| 亚州乱码中文字幕综合久久久| 欧美操人视频| 超碰色美女| 国产欧美一区二区| 色色色综合网| 另类TS人妖一区二区三区| 亚洲美女黄色| 国产视频一区二区三区久久亚洲天堂| 一区二区影院| 日韩美女操b| 亚洲欧美另类激情小说| 人妻无码视频一区二区三区久久| 蜜桃臀av在线观看| 国产专区第一页| 婷婷久久久精品| 无码欧美有限公司| 97人人模人人爽人人| 欧美色图综合| 校园春色亚洲色图| 亚洲综合大片| 色偷综合| 老熟妇综合| 亚欧精品久久久久久久久久久| 久操com| 综合 亚洲 欧美| 欧美三级偷拍| 久久久免费视频18| 青青国产在线拍揄自揄拍| 色色操| 日本www操操操| 伊人操你| 老司机午夜精品视频| 67914在线兔费成人视频| 国产天天看| 美女露胸露奶头| 欧美强奸乱能| 日韩,欧美,中文在线| 人妻干天天| av网站在线看| 秋霞午夜成人福利片片| 丰满欧美放荡少妇在线| 欧美亚洲清纯| 后入式福利| 久久久精品久久| 好舒服视频| 日本亚洲vr欧美不卡高清专区| av天天在线观看| 丁香六月啪啪| 99热免费| 激激五月| 天天爽天天干| 日韩专区数据列表-第3230页-精品国产一区二区三区香蕉 久久99熟女人妻中文字 | 被体育老师抱着c到高潮| 亚洲精品天堂久久A∨51成人漫| а√天堂资源官网在线资源| 亚洲国产av中文字幕久久| 人人做天天爱| 激情网色| 国产精品爽爽va在线观看98| 欧美日韩国内不卡| 亚洲色图亚洲无码强奸乱伦| 日韩精品在线观看网站| 人妻精品视频一区二区| 亚洲激情在线| 性色av一区二区| 情色五月天网| 国产风韵犹存熟妇三区| 久久久啊啊啊| 国产内射爽爽大片| 久久精品国产亚洲AV无码做| 亚洲AV无码AV吞精久久久久| 精品一区二区亚洲国产| 白丝1区2区3区| 精品国产网站| 久热这里| 一本色道综合久久欧美| 日本五十路熟女一区二区| 静品嫩模一区二区| 色噜噜国产在线| 高清肉丝中文无码| 国产熟女无套内射| 国产精品亚洲一级av第二区| 伊人黄色视频免费观看| 中文字幕日韩精品一区二区三区| 啊啊啊久久久视频| 91黑人狂躁丰满熟妇| 26uuu欧美日韩| 大香蕉免费乱伦视频| 九九玖玖精品| 天天综合,91入口| 四虎免费在线观看| 人妻日日干| 国产精品蜜乳AV| 国产精品久久久视频| 噜噜噜亚洲精品| 日躁天天爽爽| 静品嫩模一区二区| 欧洲小说色图视频另类| 久久精品熟妇丰满人妻99| 黄人人操人人操| 激情久久av一区av二区av| 欧亚不卡| 嗯嗯啊啊操我| 9九九九九视频在线观看| 大吊色| 日本在线伊人啪啪| 乱伦日本色图AⅤ| 熟女高潮合集-永久久久-成人AV| 97超碰护士| 欧美成人黄网色网站| 欧美成人精品一区二区三区| 欧美高清91| 日本韩欧美在线播放a| 亚洲精品天天影视综合网| 亚洲 欧美 第一页 | 在线国产福利网址导航| 日韩情色AV| 一级黄色性爱裸体视频| 欧美亚洲国内自拍| 亚洲资源吧| 乱论91| 久久大陆| 狼狼色丁香久久婷婷综合五月| 成 人 影视 一区 二区 三区 四区| 黄页网站成人免费| 狠狠综合| 九九九国产| 99精品在线| 亚洲欧美校园| 后入美女国产| 后入式免费视频| 综合久久婷婷| 97色综合中文网| 亚洲夜夜欢无码一区二区| 中文字幕第7页| 在线国产探花| 天天肏夜夜肏| 骚货人妻偷情自拍在线视频| 久久东京热久久| 天美传媒av 在线| 伦理第一页| 另类小说五月天| 九九久久久| 中文字幕亚洲欧美在线不卡| 操逼天美3区| 欧美色日本| 天天插夜夜操| 欧美精品,四区。五区| 二色av| 夜夜爽夜夜| 天天插天天舔舔天天干| 欧美人与动性人交a| 96国产污污污丝袜| 日韩一区二区三区四区五区| 国产一二三福利视频网| 青青草视频这里只有精品| 妇女性内射冈站HDWWWCOM| 操B久久| 91艹B视频| 日本久久久久久久久久| 青青11操操操操操操操操| 免费无码国产精品v片在线观看| 激情综合av| 综合影视国产无码| 日本韩国五十路六十路七十路老熟女作爱视频网站| 高清不卡视频| 懂色av色欲av蜜臀av| 不卡六六在线91| 丰满少妇精品一区二区| 伊人五月天| 国产精品麻豆视频网站| 亚洲欧洲日韩中文字幕一区| 蜜臀人妻少妇久久在线观看| 蜜乳AV一区二区三区四| 日本αv| 久久久少妇诱惑精品视频| 日韩三级一区 | 99精品久久| 麻豆综合一区av| 超碰综合97在线| 国产四虎在线| 五月天婷婷综合| 免费人成在线观看网站品爱网| 九九九九精品在线| 中文字日本乱码| 免费夜夜爱黄色视频毛片| 国产精品久久久久久久AV大片| 精品久久久久成人码免| 国产怡红院| 亚洲欧美日韩精品久| 999精品久久久久久久| 日本东京热大香蕉a片| 狠狠狠狠狠狠| 操逼视频亚洲| 国产Aα| 操逼操逼操| 日本精品一区二区三| 亚洲人在线| 亚洲情色第一页| 九九热三级片| 超碰97久| 天操天操夜操夜月月年年操操| 亚洲男人天堂2016| 亚洲AV免费在线观看| 日本欧美国内在线| 国产成久久综合片| 一本色道综合久久欧美日韩精品| 搡老女人老91妇女熟女| 视频二区熟女人妻| 精品美女在线视频| 久久a久久| 欧美夜夜狠| 亚洲男人天堂Av| 五月丁香色色网| 国产视频不卡在线观看| 综合久久久久久久综合网| 亚洲av无码国产精品字幕| 人妻夜夜爽天天爽三区麻豆AV网站| 久久婷婷苹果| 91天堂丝袜美腿| 久久香蕉国产线看观看亚洲女人 | 超碰到97情色| 超碰无码五月97| 久久久免费懂色| 蜜桃传媒一区二区亚洲| 97se综合网| 动漫片子网站3黄| 北条麻妃99精品青青久久| 亚洲天堂中文字幕无码男同| 夫妻四区五区六区| 欧美综合色站| 骚逼一区二区| 手机不卡视频不卡在线一二三区| 国产亚卅97| 欧美熟妇人体| 国产噜噜噜噜噜久久久久久久久| 96AV久久久| 蜜桃一区二区三区| 麻豆人妻偷人精品无码视频| 97亚洲国产| 日日躁天天躁狠狠躁| 国产日韩久久| 久久精品一区二区一8| 玖玖爱在线视频免费观看| 国产91福利小视频在线观看| 国产熟女完整版中字| 亚洲成人一区二区精品| 极品色www影院| 婷婷六月色| 亚洲综合图色在线| 狠狠操狠狠燥| 国产精品熟女一区二区三区| 天天夜躁日日躁狠狠2002| 91精品人妻电影| 日韩三级一区 | 绑缚麻绳人妻寝取完整版| 免费啊啊啊| 97色综合中文网| 成人精品久久久午夜福利| 国产日韩欧美亚洲精品95| www色色com| 亚洲自拍另类丝袜综合| 四虎影视国产精品| 性夜影院爽黄A爽免费动漫| 亚洲一区二区三区中文字幕| 操逼日韩无码| 欧洲乱码视频| 粉嫩AV一区二区夜夜| 成人aⅴ一区二区三区| 99精品热| 久久九精品| 91殴美| 亚洲综合精品国产一区| 亚洲、日韩、综合、另类| 国产情色在线| 国产精品内射婷婷一级二| 强奸乱亚洲| 玖玖爱综合| 美女91网| 黑丝自慰喷水网站| 好爽,再快点啊哈嗯嗯嗯嗯| 九久久精| 国语国产操逼伊人AV网| 欧亚乱色熟一区二区三四区| 超碰吊日色| 国产黄色 A 片免费看| 欧美熟妇视频| 熟女熟妇一区二区三四区| 欧洲精品区| 最新日本中文字幕| 色情综合网| 亚洲91综合| 视频在线观看免费一区二区三区 | 久久久少妇诱惑精品视频| 中文字幕一区二区三区高清| 国产精品情侣啪啪| 一区二区影视| 色综合尤物| 亚洲风情综合网| 国产AV毛片| 97 视频在线| 中文字幕国产| 粉嫩少妇自慰在线| 84YTCOM性无码| 欧美综合骚| 亚洲欧美日韩中文播放 | 亚洲高清欧美总合| 特级丰满少妇一级AAAA爱毛片| 日韩99神马视频片| 狠狠婷婷亚洲中文综合久久| 91原创在线观看| 亚洲毛片久久| 久久九九99| 国产91丝袜 在线播放| 婷婷久久五月| 九九九999久久久网站| 亚洲一区二区三区欧美日韩| 久久久久久99999国产精品| 欧美日韩激情无码专区| 91欧美性| 免费强奸av| 亚洲一区二区av| 五月天激情小说| 中文字幕乱码在线观看| 亚洲精品天堂久久A∨51成人漫| 少妇色综合| 97国产高清视频在线观看| 色臀aV| 亚洲欧美精品一区天堂久久 | 伊人精品视频| 国产毛片片精品天天看视频| 69视频福利导航| 久艾草在线精品视频在线观看| 被窝影院午夜看片无码| 丁香婷婷激情五月天无毒不卡 | 婷婷香蕉欧美在线一区二区三区| 97啪啪| 骚女高跟AV在线| 激情接吻视频久久久久久| 国产97在线播放| 人妻天天爽夜夜爽爽| 素人一区二区三区日韩| 日韩精品9区| 色婷久久| 26UUU欧美激情一区二区| 99999这里都精品| 六月激情婷婷| 国产乱伦性爱区| 日韩精品系列| 成年女人一区| 日本人人操人人操| 国产乱子伦一区二区三区在线观看| 国产专区路线| 在线观看日韩av不卡| 欧美成人免费在线观看| 欧美色自拍| 熟女人妻av在线资源,黄色的资源 粉嫩国产精品久久粉嫩 | 99黄页网站| 六六久久日韩不卡| 天天色天天干天天射| 亚洲九九视频| 一区二区视频你懂的| 久热无码| 综合免费无码中文| 91被操| av日韩中文字幕| 怡红院怡春院| 六月丁香啪啪| 不卡啪啪视频| 老熟女搡BBBB搡BBBB视频| 欧美日韩人妻精品一区二区三区| 人妻酒店出差被中出免费在线播放| 亚洲第一无码播放立川理惠| 精品久久久久久中文字幕视频免费| 亚洲做性| 97视频www| 欧美精品在线观看| 岛国黄色大片网站| 日韩无码a片| 2017亚洲天堂| 欧美三四五区| 一本大道久| 91超碰碰在线| 夜夜操天天肏| 亚洲AV免费在线观看| 97国产精选| 久久爽爽精品| 欧美猛交黑寡妇中文字幕| 91蜜臀熟女| 日本色色色| 九九精品无码专区免费| 香蕉国产精品麻豆亚洲欧美日韩| 久久嫩草| 久久久久久久久久久久97| 深夜激情| 91老熟女91老女人| 色悠久久久av| 色拍偷亚洲| 亚洲怡春院| 密臀AV在线| 国产精品色哟哟| 极品久久久久久久久久久久久久| 国产白领连续中出在线观看| 韩国久久97| 久久久久久亚洲精品中文字幕人妻| 99热官网| 大胆91| 91丝袜美女| 少妇二级| 十八禁黄色成人网站观看| 国产白领连续中出在线观看| 不卡超碰护士AV在线免费播放| 青青草亚洲一区| 嗯……啊…嗯嗯…啊…好舒服| 蜜臀精品1区2区| 黄呦呦在线| 日日日骚女人精品| 午夜综合在线| 九九热精品| 91综合网站| 欧美性xxxxx狂欢| 中国zzijzzijzzwww精品| 日韩Va亚洲va欧美Ⅴa久久| 欧美性爱日韩性爱| 亚洲性爱无码乱伦av| 六月丁丁香| 日本有码影片下载| 日韩美女高潮喷水视频| 91超碰在线播放| 性欧美999| 欧美不卡在线一区二区| 久久东京伊人一本到鬼色| 91操人| 国产精品女同| 97露脸精品丝袜| 91精品免费| 超碰78| 午夜一区二区三区国产| 中字幕人妻一区二区三区| 丰满人妻一区二区三区四区| 黄色av一区二区在线| 国产精品经典一卡久久久| 亚洲精品一卡二卡三卡福利视频网站 | 日本护士高潮| 97综合激情| 香伊人在线| 92人人操人人| 97超碰69| 人人摸人人添人人操| 国产欧美日韩在线不卡第一页| 蜜桃色色网站视频三区| 免费综合亚洲中文| 国产精品 久久久精品一牛| 快灬快灬 一下爽蜜桃在线观看| 精品人妻一区二区三区四区| 国产极品粉嫩馒头一线天av| 超97在线精品视频| 91站街按摩店老熟女熟女| 二区熟妇韩日| 超碰一区二区| 狠狠操,使劲操| 国产精品无码论坛| 怡红院怡春院| v91av| 免费αⅴ在线观看| 熟妇在线视频一区二区| 蜜桃臀一区二区aV| 日韩性爱一级片| 91精品啪在线观看国产城中村| 5252色欧美在线| 精品一区二区三区丰满熟女-亚洲欧美一区| 被男人吃奶很爽的毛片| 97超碰jingpin| 在线电影亚洲色图| 亚洲久久久| 激情综合五月| 精品乱码在线观看| 少妇人妻好深太紧了vr91| 精品妇女一区二区三区| 天美麻豆黄色录像| 亚欧成人中文字幕一区| 久久只有精品一区二区三区| 精品国产乱码久久久A| 成人性爱电影网| 天天天天天天天天综合| 成人线上超碰| 91婷婷伊人狠人| 欧美日韩亚洲天堂| 成人日本视频人妻在线| 加勒比性爱成人在线| 久久久精品91八戒| 久妇网| 玖玖久久久| 东北丰满熟女国产一区 | 大干人妻| 韩国一级AAA| 欧洲精品人妻| 狠狠操官网| 另类 综合 日韩 欧美 亚洲| 精品无码一区二区三区| 丝袜熟女2P| 男女啪啪网站免费视频| 殴美性色a级欧美| 亚洲欧美日韩不卡人妻| 国产少妇与亚洲av| 午夜精品久久一区二区| 久久久久久久九九九九九九| 在线观看中文字幕| 中文字幕二区日韩天堂| 91视频精品| 97欧美精品综合| 一区操逼| 国产2.3.4区| 大香蕉丝袜一级片| 丝袜综合网| 日本在线不卡123| 最新国产精品| 亚洲无限观看| 日日碰狠狠添天天爽超| 综合色久欲| 大香蕉宗合网在线| 亚洲国产精品成人久久蜜臀| 国产青视频| 成人a大片在线观看| 国产精品久久久久久久免牛肉蒲团| 亚洲欧美国产其他二区| 亚州欧美在线| 欧美亚洲激情小说| 欧美日韩亚洲一区二区在线观看| 91无码人妻| 国产在线76页| 国产91福利小视频在线观看| 歐美性天天| 色色丁香| 久久产精品一区二区三区电影 | 久久嫩草国产成人一区| 无码操逼视频一下| 亚洲天天影视色综合| 国内精品久久久久影院亚洲| 黄片免费日韩| 都市激情人妻一区二区青青操视频 | 天天操夜夜嗨| 国产精品白丝www| 青青草在线视频人人想人人上| 天天色天天干天天射| 密臀成人视频久久久| 熟妇一区二区三区| 久久精视频美日韩在线视频| 91日韩国产欧美亚洲另类精盘州至城都| 超碰1024久久| 高清国产av无码| 欧美国产精品久久九九| 人妻日日夜夜精品| 人人操人人叉人人插人人| 九九热国产| 亚洲区限制级| 99精品久久| 蜜乳视频网站| 手机在线大香蕉| 亚洲熟女一区| 国产嫩草精品A88AV在线| 网页导航五月天免费一二三区| 999久久久免费精品国产牛牛| 久久久久幕乱码| 亚洲情色一区综合| 天天色综合图片| 浪人综合网| 日韩成人在线性爱视频| 亚洲熟女诱惑| 美国三级日本三级久久99| 美骚妇av高清在线| 资源在线观一 二| 九九黄色网| 亚州操逼图| 亚洲一级黄色毛片| 久久 精品| av2014 日韩在线中文字幕| 欧洲亚洲人人爽爽视频| www.97在线| 久99热| www超碰| 中文字幕一区二区韩| 二男一女成人A片| 欧美中文字幕日韩在线| 欧美精品三级黄片| 熟妇色99| 中国韩国明星一极片一区乱码毛片人妻熟女一区二区三区 | 亚洲图片欧洲图片aⅴ| 亚洲国产精品无码AV久久久| 久久大黄片| 丰满人妻一区二区三区免费 | 91精品国产高清久久久久久,亚洲成人 | 熟女91网| 60秒免费视频| 久久人妻一区二区三区高清 | 99精品国产户外露出| 亚洲?V高清一区二区三区尤物| 情色图区| 99热这里只有精品18| 色悠悠伊人网五月天| 2019亚洲男人天堂| 久肏视频字幕| 国内外激情在线| 97在线免费看视频| 天天干18禁| yiqicaoav| 亚洲男人综合| 国产av激情无码久久天堂| 天堂а√在线最新版在线 | 欧美色66| 日本精品免费一区二区三区四区| 欧美色五月| 人妻天天爽夜夜爽爽| 蜜桃成人1区2区3区| 中文字幕视频一区视频二区| 800zy一区二区| 国产中文福利| 日韩人妻丝袜美腿中文| 操死我了啊啊啊| 一级AAA片一区二区三区| 国内一级精品| 国产JDAV无码视频在线观看| 午夜视频黄| 国产亚洲色婷婷久久99精品91葵花宝典 | 亚洲欧美日韩国产丝袜自拍中文| 久久久男人的天堂| 9久久久久久| 91人妻人人澡人人爽人人精品| 另类亚洲一区二区三区| 欧美一级久久久丰满| 人妻81p| 日本中文字幕在线电影| 中文字幕人妻丝袜| 男人网站婷婷| 97se亚洲| 亚洲精品乱码线路中文字幕| 老司机射| 国产白嫩精品久久| 亚州熟妇精品| 97日韩欧美| 一个国产在线综合网站| 欧美日韩精品一区二区三区高清| 吻戏激情性巴克| 国产农村妇女精品一二区| 夜夜操夜夜高潮夜夜爽国产精品区| 精品无码久久| 日韩人妻播放| 91 亚洲 欧洲| 大白逼三四级| 色色毛片| 免费一级精品啪啪视频| 天天舔天天 | 国产AV无码AV| 欧美|91色综合| 超碰是碰在线观看| 欲香欲色| 99热66| 97伪v| 98人妻精品一区二区色欲| 久久99午夜精品一区人妻| 欧中日成人免费影视| 精品丰满熟妇人妻一区| 日韩强奸av| 亚洲图片 91| 四虎影视永久在线观看精品免费网站| 久久超碰国产一区二区三区| 一起草精品人妻| 伊人久久国产免费观看视频| 色综合超碰超| 高清国产精品福利网站| 9999久久久久| 中文一区在线日| 国产福利电影| 五月丁香久久| 少妇高潮一区二区三区在线| 国产精品久久久久久久AV大片| 欧美日韩国产中文精品字幕自在自线,| 一本色道久久综合熟妇| 亚洲国产精品9999在线观看| 麻豆视频test| 欧美78P| 岛国成人av在线播放网址| 91狠婷| 夜夜精品视频| 亚洲国产无码精品首页久久久| 东京热大香焦| 秋霞成人一级在线观看| 97超碰色屌| 在线视频97| 亚洲人成色9999精品久久 | 91福利网在线观看| 青青欧美在线| 中文字幕制服诱惑| 欧美综合站| 欧美日韩亚洲天堂| 亚洲熟女中文字幕在线| 91男同| 国产美女口爆吞精视频| 天天日天天射天天干| 大色综合| 亚洲最大的黄色电影网站。 | 手机在线A片| 九九九九97| 久久黄片国产一区二区| m欧洲一级午老| 一级AV性爱| 欧美色图 人妻| 香蕉久久AⅤ...| 国产吹潮女在线观看| 一区二区影院| 亚洲丝袜二区在线| 亚洲无码久久久久久久| 精品国产a∨一区天美传媒| 在线中文字幕极品av| 亚洲狠狠入| 色播五月丁香| 国产午夜精品理论片a大结局| 96精品在线| 国产无马在线| 日韩啪啪啪视频| 黄色一级视| av日韩中文字幕| 婷婷成人久久久精品| 女人精品内射国产99| 青青草色插素人| 岛国艾薇凹凸视频天堂| 91热| 中文字幕一区 二 区 三 四 五 区日 日 骚 | 蘋果手機免費看成人Av| 日韩欧美国产一区二区三区四区 | 久久成人国产| 国产精品久久久久久久久久久久久久| 九九九九久久久| 超碰日韩人妻| 亚州日韩97| 久操操| 69av一区二区三区| 国产精品高朝久久久久久久| 色色五月天婷婷| 成人无码在线超碰网| 9997se| 亚洲综合在线高清| 国产一级137片内射麻豆| 怡春院久久| 欧美一区二区日韩传媒搭讪精品| 黄色性爱网网| 97久久精品| 亚洲人妻久久久| 日本黄 R色 成 人网站| 久久av无码| 九九九九免费高| 精品视频日日夜夜| 日本精品中文字幕视频| 日韩精品一区,二区 九九...老司机| 99色悠悠| 嫩草一区二区在线观看| 精品免费视频国产一区| 色天欧美| 99操| 狠狠爱综合网| 久草视频在线视频在线视频在线观看 | 亚洲综合色图欧美| 美女淫穴| 熟女日韩| 久久草在线综合视频| 91搞逼视频| 极品少妇久久久| 久久久精| 秋霞一区二区三区四区五区六区七区| 天堂种子在线www网资源| 欧美性爱日韩性爱| 中文字幕91综合| 天美传媒AV在线| 99久在线精品99re8| 99国产精品人妻人伦| 亚洲一区日韩| 欧美日韩色综合网| 夜夜草天天| av线电影| 美女毛片999| 成人网欧美风情| 亚洲无码色| 99免费在线视频| 人人摸人人干人人拍97| 日韩在线一区高清在线| 国产精品第一页国产大屁股视频免费区| 羞答答AV中文字| 久久超碰98| 久草综合视频| 高树玛利亚无码流出| 亚洲欧洲美腿丝袜| 伊人久久大香大香线蕉中文 | 午夜福利久久久噜久噜久久综合| 9九九九九视频在线观看| 高清在线偷拍自拍视频| 日韩中文字幕人妻视频| www.av在线视频| 国产精品无码久久久久2025| 亚洲天堂一区二区久久| 亚洲男人综合| 九九精品无码专区免费| 97超碰人人模人人拍人人| 熟女乱3伦999| 欧美最婬乱婬爆婬牲视频| 久久超碰天天| 欲香欲色综合天天伊人| 超碰 欧美| 欧美日韩另类激情图片| 噜噜噜亚洲精| 久久色精品视频在线|