色五月色开心色婷婷色丁香,五月婷婷丁香花综合网,婷婷丁香五月激情综合在线,五月婷婷六月丁香动漫,婷婷丁香五月激情综合在线,丁香花中文字幕在线观看,播五月色五月开心五月网,开心激情综合网,狠狠色丁香婷婷综合最新地址,丁香视频在线观看,狠狠做六月爱婷婷综合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 個文件約 4.86MB含 33 個 C 源碼、15 個可執(zhí)行程序、8 個動態(tài)庫以及頭文件、庫文件、幫助文檔、SQL 腳本和 gdb、gbk 示例數(shù)據(jù)庫覆蓋安裝、卸載、運(yùn)行配置與基礎(chǔ)數(shù)據(jù)操作。已有 341 人學(xué)習(xí)下載對遺留系統(tǒng)維護(hù)和舊版 Delphi 數(shù)據(jù)訪問研究仍有參考價值。讀者可獲得較完整的安裝組件、數(shù)據(jù)庫引擎依賴文件、編程接口示例和初始數(shù)據(jù)庫樣本便于理解 BDE、ODBC 等連接方式背后的文件組成也可用于排查舊項目運(yùn)行環(huán)境缺失、數(shù)據(jù)庫初始化與許可配置等問題。1. 接手一個只剩 .GDB 文件的老系統(tǒng)才明白 InterBase 6.0 是什么形態(tài)交付包里沒有安裝手冊只有一個 4MB 出頭的.GDB文件和一堆 Delphi 控件源碼這是不少人第一次接觸 InterBase 6.0 時的真實(shí)場景。它并不是那種需要獨(dú)立 DBA 運(yùn)維的數(shù)據(jù)庫服務(wù)整個庫就是一個文件拷到目標(biāo)機(jī)器、配好連接串、把控件拖到窗體上就能讀寫。這份資源的價值也在這里服務(wù)端、客戶端連接庫、控件源碼和示例應(yīng)用湊成一套拿下來就能把一個數(shù)據(jù)庫應(yīng)用從前端到存儲層全部跑通。這篇按我拆包的順序?qū)懴戎v清 InterBase 6.0 的事務(wù)模型和文件組織再把它在本機(jī)跑起來然后把生成器、觸發(fā)器、存儲過程、UDF 這幾塊核心實(shí)現(xiàn)逐段拆開最后落在「拿到控件源碼之后改哪里」這個實(shí)際問題上。手里攥著老項目要維護(hù)的人和想拿一個輕量嵌入式數(shù)據(jù)庫練手的人都能照著走一遍。2. 技術(shù)底座MGA 架構(gòu)下的事務(wù)版本與頁面組織2.1 多代版本架構(gòu)讀不擋寫寫不擋讀先糾正一個很容易帶偏的認(rèn)知InterBase 6.0 不是靠回滾段做并發(fā)的。執(zhí)行 UPDATE 時它不原地覆蓋那一行而是把記錄的新版本寫進(jìn)數(shù)據(jù)頁舊版本留在原處只在記錄頭里把「替換事務(wù)號」標(biāo)成當(dāng)前事務(wù)。別的讀事務(wù)只要自己的快照事務(wù)號比這個替換號小就繼續(xù)讀到舊版本一點(diǎn)都不會被卡住。這就是所謂多代版本架構(gòu)MGA它的直接結(jié)果是讀事務(wù)永遠(yuǎn)不用等寫事務(wù)寫事務(wù)也不會因?yàn)橛腥嗽趻弑矶抨牎]有回滾段帶來的另一個差別在回滾語義上。執(zhí)行 ROLLBACK 時數(shù)據(jù)庫并不做「反向補(bǔ)償」它只是把那個事務(wù)在事務(wù)清單里標(biāo)記為已死這個事務(wù)寫下的所有版本立刻變成垃圾數(shù)據(jù)等著被回收。所以回滾一個剛插了十萬行的事務(wù)幾乎瞬間完成不會像日志型數(shù)據(jù)庫那樣還要回放一遍。這套設(shè)計的代價也很明確垃圾版本不會自動消失需要靠 sweep 機(jī)制回收而 sweep 能不能推進(jìn)取決于「最老活躍事務(wù)」OIT和「最老事務(wù)」OAT這兩個水位線能不能往前走。這就引出了老項目里最典型的一類故障。只要有一個連接開著事務(wù)不提交——哪怕它只是SELECT了一下——OAT 就被釘在原地比它新的所有垃圾版本都回收不了庫文件只漲不縮查詢越來越慢。我在一個工控項目上見過庫文件從 200MB 漲到 3GB最后查出來是一個報表模塊的TIBTransaction忘了Commit掛了半個月。所以看一個 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ù)否則別碰它一旦用錯整個系統(tǒng)的并發(fā)直接降到單線程。2.2 單文件、頁與事務(wù)計數(shù)器的物理組成.GDB文件內(nèi)部是按頁組織的頁大小在建庫時定死可選 1024、2048、4096、8192 字節(jié)。第 0 頁是數(shù)據(jù)庫頭記錄了頁大小、事務(wù)水位、影子文件信息往后是頁分配頁、事務(wù)清單頁TIP、指針頁、數(shù)據(jù)頁、索引頁和 BLOB 頁。理解這套分層最實(shí)用的工具是gstat它不做任何修改只讀取元信息。# 只看庫頭頁大小、OAT/OIT、下一個事務(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的輸出里有幾個參數(shù)值得記住Page size決定了單頁能放多少行也間接決定了 BLOB 的讀取效率Oldest transaction就是 OATOldest active是 OIT兩者相差幾百以內(nèi)算正常差到幾十萬說明有長事務(wù)在拖后腿Next transaction是一直遞增的事務(wù)號漲到 20 億附近會有溢出風(fēng)險正規(guī)做法是做一次備份還原把事務(wù)號重置回低位。-d看的是數(shù)據(jù)頁的填充率如果大量頁只填了 30%說明刪除和更新留下的空洞多該做一次gbak備份還原把空間收回來。頁大小定下來之后想改唯一的辦法是gbak備份再gbak -c -p 8192還原沒有在線改的路徑。所以建庫前要想清楚如果表里有一堆VARCHAR(200)加上幾個 BLOB 字段用 4096 或 8192 能少很多跨頁讀如果只是幾百張配置表、單行很小1024 反而更省內(nèi)存。單個文件大到一定程度就得拆成多文件-- 追加第二個數(shù)據(jù)文件起始頁號接在主文件之后 ALTER DATABASE ADD FILE /opt/data/demo_02.gdb STARTING AT PAGE 200000 LENGTH 200000;這條語句里的STARTING AT PAGE是主文件的頁號邊界不是字節(jié)數(shù)寫錯會導(dǎo)致新文件永遠(yuǎn)用不上。我一般只在受文件系統(tǒng)單文件上限限制的場景下才拆拆完一定要用gstat -h確認(rèn)Database files那一行變成了兩個否則等于白寫。2.3 服務(wù)形態(tài)本地直連還是 TCP 遠(yuǎn)程InterBase 6.0 的一個特點(diǎn)是同一個客戶端庫既能連本地文件也能連遠(yuǎn)程服務(wù)區(qū)別只在連接串怎么寫。這一點(diǎn)經(jīng)常被忽略然后在部署時踩坑——因?yàn)檫h(yuǎn)程連接里那個路徑是「服務(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)程弱得多多個進(jìn)程同時寫同一個文件時鎖沖突會很難排查所以只要業(yè)務(wù)里有第二個人同時寫就別圖省事老老實(shí)實(shí)裝服務(wù)端走 TCP。遠(yuǎn)程連接的另一個前提是服務(wù)名要能解析。客戶端庫默認(rèn)用gds_db這個服務(wù)名去找端口主機(jī)上必須有一行登記# 服務(wù)端和客戶端的 services 文件里都要有這行端口默認(rèn) 3050 gds_db 3050/tcp # InterBase 服務(wù)名與監(jiān)聽端口 # 改完確認(rèn)端口真的在監(jiān)聽 netstat -an | grep 3050注意客戶端報unavailable database時先別懷疑庫文件損壞八成是這行沒登記或者被防火墻攔了。3. 跑起來從服務(wù)啟動到控件發(fā)出第一個查詢3.1 安裝與最小可用配置服務(wù)端裝完之后要先確認(rèn)三件事進(jìn)程在跑、端口在聽、SYSDBA能登進(jìn)去。很多人卡在第一步是因?yàn)榘芽蛻舳撕头?wù)端裝混了——客戶端只需要一個連接庫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ù)端一起提供的命令行客戶端它同時也是一個 SQL 腳本執(zhí)行器后面建庫、灌表結(jié)構(gòu)、跑遷移腳本都靠它。第三步如果提示用戶名口令錯誤說明安裝時設(shè)的SYSDBA口令不是默認(rèn)值得找當(dāng)時的部署記錄如果提示unavailable database回到 2.3 節(jié)查服務(wù)名登記。Windows 上還有一個常見問題應(yīng)用程序目錄里的gds32.dll和系統(tǒng)目錄里的版本不一致??蛻舳藥斓陌姹颈仨毢头?wù)端大致匹配混用不同版本時表現(xiàn)是能連上、能查詢但一取 BLOB 或者一調(diào)存儲過程就崩排查成本極高。我的習(xí)慣是把服務(wù)端自帶的那份客戶端庫直接拷到 exe 同目錄讓它優(yōu)先加載別指望系統(tǒng)的搜索路徑。3.2 isql 建庫建表跑通第一個庫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建庫時定死UNICODE_FSS是 6.0 里能存多字節(jié)字符的字符集存中文就別用NONE否則排序和長度計算都會出問題。建表這塊有兩個 6.0 時代特有的寫法值得用上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ù)器時間不是客戶端時間這一點(diǎn)在跨時區(qū)的多客戶端場景里很關(guān)鍵——用客戶端賦時間會出現(xiàn)同一批數(shù)據(jù)時間倒掛。BIGINT是 64 位整型只在 dialect 3 下可用用它做主鍵是為了避免幾百萬行之后INTEGER溢出。NUMERIC(18,2)在 dialect 3 下映射到 64 位整型存儲精度不會丟做金額字段比DOUBLE PRECISION靠譜得多。3.3 控件對接連接、事務(wù)邊界與參數(shù)化查詢Delphi 那套控件里連 InterBase 最直接的是 IBXInterBase Express它不依賴 BDE直連客戶端庫部署時少一層中間件。核心是三個控件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); // 必須和建庫時一致 IBDB.SQLDialect : 3; // dialect 對不上會報類型轉(zhuǎn)換錯 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ù)端建庫時的DEFAULT CHARACTER SET對上對不上的表現(xiàn)是中文變問號或者VARCHAR(32)明明只存了 20 個漢字卻報超長。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)不自動提交一個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ú)立計數(shù)器和表無關(guān)專門用來發(fā)號。CREATE GENERATOR GEN_ORDER_ID; SET GENERATOR GEN_ORDER_ID TO 0; -- 取下一個號第二個參數(shù)是步長 SELECT GEN_ID(GEN_ORDER_ID, 1) FROM RDB$DATABASE;GEN_ID的第二個參數(shù)是增量正常情況下傳 1需要一次預(yù)留一段號比如批量導(dǎo)入時傳 N。RDB$DATABASE是系統(tǒng)表永遠(yuǎn)只有一行用來把函數(shù)當(dāng)查詢跑。這里有一個必須記住的性質(zhì)生成器不受事務(wù)控制。取號這個動作在事務(wù)回滾后不會退回所以號一定有空洞。很多人拿它直接當(dāng)訂單號展示給用戶看結(jié)果發(fā)現(xiàn)編號不連續(xù)被業(yè)務(wù)方追著問。我的做法是生成器只做物理主鍵業(yè)務(wù)單號單獨(dú)用「日期 序列」拼序列另有自己的表去維護(hù)。反過來如果業(yè)務(wù)真的要求連號那就不能靠生成器得在一張T_SEQ表上做UPDATE ... SET CUR CUR 1并配合行鎖代價是并發(fā)性能直線下降這個取舍要提前跟業(yè)務(wù)說清楚。4.2 觸發(fā)器把業(yè)務(wù)約束下沉到數(shù)據(jù)庫層觸發(fā)器在 InterBase 里分 BEFORE 和 AFTER還分行級和語句級。行級觸發(fā)器里能用NEW和OLD兩個上下文變量分別代表新值和舊值。-- 自定義異常拋出時客戶端能拿到這條消息 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決定同一個表上多個同類觸發(fā)器的執(zhí)行順序編號小的先跑。上面這兩個觸發(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ù)邏輯時千萬別用它。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ū)分「字段名」和「變量名」的語法漏了冒號會報「列名不明確」。客戶端調(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; // 多個事件名用換行分隔 IBEvents1.OnEventAlert : DoOrderChanged; IBEvents1.Registered : True; // 注冊之后服務(wù)端才會推POST_EVENT的名字建議用大寫短名老版本對事件名長度限制得比較緊不要寫成一句描述。更關(guān)鍵的是OnEventAlert回調(diào)是在客戶端庫的后臺線程里觸發(fā)的在里面直接操作 VCL 控件會因?yàn)榭缇€程訪問出玄學(xué)崩潰正確做法是TThread.Queue或者PostMessage把刷新動作丟回主線程。我第一次用事件通知時就在這里翻過車表現(xiàn)為「偶爾」崩查了兩天才定位到線程上。4.4 UDF拿到源碼后自己編一個外部函數(shù)庫內(nèi)置函數(shù)不夠用時InterBase 支持外部函數(shù)UDF把 C 函數(shù)編成動態(tài)庫在數(shù)據(jù)庫里聲明之后就能在 SQL 里調(diào)用。/* myudf.c —— 編成動態(tài)庫后由服務(wù)端加載 */ #include string.h /* 參數(shù)用 CSTRING 聲明時收到的是以 \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;三個參數(shù)各有講究CSTRING(256)告訴服務(wù)端按定長字符串傳參如果用VARCHAR(256)聲明傳進(jìn)去的是帶長度前綴的結(jié)構(gòu)體指針函數(shù)簽名就得跟著改BY VALUE表示返回值按值傳整型必須加這個漏了會讀到一個野指針ENTRY_POINT是導(dǎo)出符號名MODULE_NAME是不帶擴(kuò)展名的庫名。改完庫之后必須重啟服務(wù)端連接才會重新加載改完函數(shù)不重啟是最常見的「明明改了卻沒生效」。5. 避坑與排查五個把項目拖進(jìn)坑里的細(xì)節(jié)5.1 恢復(fù)之后主鍵沖突集中爆發(fā)現(xiàn)象從生產(chǎn)庫備份出來恢復(fù)到測試環(huán)境應(yīng)用一插數(shù)據(jù)就報violation of PRIMARY or UNIQUE KEY constraint但表里明明只有幾百行。原因gbak做完整備份還原時會把生成器的當(dāng)前值一起帶過去但如果這次恢復(fù)用的是只導(dǎo)結(jié)構(gòu)的 DDL 腳本或者用-m只恢復(fù)元數(shù)據(jù)生成器的值就回到了建庫時的初始狀態(tài)。而數(shù)據(jù)行是從別處灌進(jìn)來的ID已經(jīng)用到了幾千兩邊一撞就沖突。解決恢復(fù)完之后先對齊每個生成器再讓應(yīng)用跑起來。-- 把生成器重置到當(dāng)前最大 ID批量做的時候用腳本生成這段 SET GENERATOR GEN_ORDER_ID TO 0; SELECT GEN_ID(GEN_ORDER_ID, COALESCE(MAX(ID), 0)) FROM T_ORDER;第二句借GEN_ID的步長參數(shù)一次性把計數(shù)器頂?shù)組AX(ID)比SET GENERATOR ... TO 具體數(shù)字少一次人工查數(shù)。我現(xiàn)在的習(xí)慣是恢復(fù)腳本最后必須帶這一段每個生成器一行缺一個就等著線上報沖突。5.2 庫文件只漲不縮sweep 跑不動現(xiàn)象刪了幾百萬行歷史數(shù)據(jù)磁盤占用一點(diǎn)沒降查詢一天比一天慢跑gfix -sweep跑了幾個小時還在跑。原因刪除在 MGA 里只是把版本標(biāo)記成死真正回收要靠 sweep。而 sweep 能推進(jìn)的前提是 OAT 能往前走只要有一個長事務(wù)不提交回收立刻停擺。第二個原因是 sweep 本身是協(xié)作式的它和正常業(yè)務(wù)搶資源業(yè)務(wù)壓力大時會一直退讓。解決先查 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)空間文件大小不會縮只有備份還原才會重寫整個文件、把空間真正交還給文件系統(tǒng)。所以計劃里應(yīng)該把「定期備份還原」當(dāng)成運(yùn)維動作而不是只當(dāng)災(zāi)備。5.3 Dialect 混用DATE 變成 TIMESTAMP雙引號變成標(biāo)識符現(xiàn)象客戶端查出來的日期字段多出了時間部分一條WHERE NAME ABC忽然報「列名不明確」NUMERIC(18,2)的金額在小數(shù)位上丟精度。原因這是 dialect 1 和 dialect 3 的語義差異。dialect 1 里DATE實(shí)際是帶時間的 TIMESTAMP雙引號包起來的是本文還有配套的精品資源點(diǎn)擊獲取
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
亚洲啪啪啪啪视香蕉| 曰韩人妻中文字幕在线| 五月综合色| 97超碰人人模人人拍人人| 亚洲污一污二| 澳门人妻久久| 亚洲五月丁香花狠狠干一区二区三区 | 亚洲精品国产AV天美传媒| 91亚洲不卡一区| 熟女激情综合网| 色九九久九九| 竹菊一区二区三区AV线| 国产女人视频三四五区| 91热色| 色女综合| 日韩人妻精品久久久久| 成人三级片无码| 影音先锋日本乱伦| 97在线视频观看| 啊啊啊好疼| 日韩超碰精品综合| 第二页中文字幕| 男人的天堂亚洲| 日本午夜久久电影| 一区二区三区精品视频| 一区三区啪啪| 国岛片视频| 操国产逼| 久久精品一区二区一8| 蜜臀在线视频| 神马久久久久久| 麻豆天天躁天天揉揉AV| 人人摸人人舔一区二区| 久久精品99| 极品久久久久久久久久久久久久| 91亚州欧美| 欧美色图天堂网m| 国产亚洲人妻综合日韩 久久| 欧美综合色| 亚州欧美一区| 欧美第一页| 亚洲限制级| 精品中文日韩字幕视频| 久操影视| 亚洲狠狠入| 亚洲图片欧美偷拍| 欧美日韩97| 超碰78| 久久久97| 老熟女搡BBBB搡BBBB视频| 精品无码一区二区三区色欲| 99国产精品视频尤物| 欧美十八禁导航成人| 亚洲人妻中文高清| 久久精彩免费视频| 精品人妻视频一区二区三区蜜桃视频| 亚洲色图国产另类| 99超碰碰| 中英熟女操女| 九九性爱网| 粉嫩国产精品久久粉嫩| 劲爆欧美人妖三区91| 亚洲综合 欧美| 亚洲高清综合网| 日本成人在线不卡一区二区三区| 乱伦3P视频| 久久精品小视频| 天天夜夜久久| 男人久久天堂| 成人av免费观看| 亚洲激情网一二三四区| 亚洲永久永久永久永久一级一级一级精品| 91N综合网在线| 男人的天堂99| 色婷婷影视| 欧美中文字幕一区| 天天天天天超碰| 国产性爱强奸乱伦大全| AAAA欧美日韩| 超碰视97中文| 久久久蜜桃一区二区三区| 天天综合精品| 亚洲AV成人无码久久精品播放| 人人澡人人爽人人精品| yaouchengrenav| 欧美三级不卡| 久操视频这里只有精品| 强奸乱伦av电影| 成人日本片久久久蜜桃| 欧美一级AAAAAAA| 国产91乱伦| 中文字幕丰满子伦无码专区在线视频最新 | 91丝袜美腿片| 肥臀熟女一区二区三区视频| 综合免费无码中文| 日本青青草在线| com 首页 18岁 禁区 女优 免费 精选 同城 | 欧美色图私拍91| 久9爱精品| 男女激烈网站最新| 午夜精品久久久久久久男人的天堂 | 久久久久久人| 日韩成人大片一区二区| 久久神马影院| 高清孕妇孕交| 后入精品| 婷婷丁香六月| 人妻欧美| 测评在线观看AV| 久久中出在线| 97aiaiai| 夜夜嗨一区二区| 一区超碰一区| 亚洲色图殴美色图激情乱伦| 密臀AV在线| 国产主播福利| 亚洲色图第四色| 欧美激情色婷婷花野真衣一区二区| 少妇三p| 91精品久久久久久77777| 亚洲一区二区av| 欧美人妻精品一区二区| www.色吧5.com| 在线97在线| 久久91精品国产9丨久久分亭| 偷窥自拍亚洲色图| 欧美精品97| 成人一级二级| 日韩精品黄片免费观看| 国产精品色色| 国产深喉视频一区二区| 亚洲无码精品AV久久久| 日韩天美| 999精品国产高清一区二区| 精品久久久久瑟瑟| 嗯啊抽插大香蕉网页| 亚洲一区二区专区-国产丝袜精品丝袜-成人AV| 国产无码三级视频在线观看| 国产av热热色| 国产福利第一视频| 伊人专区一区二区三区| 麻豆国产成人精品| 亚洲Av无码成人精品国产| 天天爽入口| 蜜臀99精品国产高清在线观看| 91最新综合| 夜夜狼人妻| 99在线观看视频在线高清| 乱伦3P视频| 美女被艹尤物视频| 人妻精品一区二区| 殴洲老熟女| 日本精品无码三级网站| 日韩一级二级三级| 亚洲少妇色| 成人性爱美曰韩| 97久久久久久久精| 欧美性爱第一区| 国产乱不卡| 欧美性天天影视| 可以看的av| 国产精品久久久久久久免牛肉蒲团| 高树玛利亚无码流出| 久久无码电影| 精品一二三区女同| 天天日天天舔天天喷天天射| 中文字幕一区 二 区 三 四 五 区日 日 骚 | 成人性爱全视频观看| 欧美在线啊啊| 九九九九九九九九九五码| 凹凸视频特色日本特黄| 国产亚洲精品美女久久久| 玖玖大干人妻| 黄日韩| 国产精品一二三免费网站| 国产精品视频自拍在线| 国产精品一区二区手机看片| 78精品在线| 色第一页| Julia在线播放亚洲久久| 午夜福利免费福利视频| 欧美成年人性爱视频免费观看| 欧亚日本情色| 天堂伊人久久| 天天影视网色欲色香| 综合熟女| 日韩欧美视频青青| 男人的天堂在线有码| 成人午夜小视频手机在线看| 成人无码在线视频网站| 偷拍精品一区二区三区| 亚洲男人天堂手机版| 男人网站婷婷| 亚洲视频二区 | 精品久久无码午夜福利| 国产极品馒头逼| 九九九只有精品| 亚州熟妇精品| 动漫区日韩区欧美区| 青青草视频久久| 丁香九月激情| 中文字幕日韩综合| 久久久久中出| 啊啊啊啊啊啊啊国| 97爱亚洲综合色| 旡码电影特区| 91美腿丝袜在线观看| www99热| 免费在线观看AV无码网站| 欧美精品日韩久久久九| 好爽视频在线观看视频| 天堂v无码免费视频| 久久内射| 99在线观看| 国产女人成人精品视频| 欧美亚洲尤物久久| 久久人人爽爽人人爽人人片αV| 91一区二区三区蜜桃| 日韩欧美亚欧在线视频| 四虎午夜影院| 制度丝袜99| 国产精品人妻熟女aⅴ| 精品视频免费在线一区| 国产尹人在线视频免费| av九九| 日本综合久久| 诱惑人妻欧美一区在线播放| 日本孕妇孕交| 懂色Av| 国产粉嫩蜜臀av一区二区三区| 操逼操2| 91性高朝久久久久久久久| 黄色香蕉视频网站一区| 操逼逼中文字幕| 精品成人av一区二区三区在线| 久久婷婷色| 91精品国产综合久久久蜜臀| 天天看特黄的免费网站| AV在线播放网址| 日韩综合97p| 一区二区三区免费视频入口| 国产成年免费大片黄在线观看| 男人a天堂手机在线版| 口爆综合网| 玖玖综合色| 国产人妻精品一区二区三区秋霞 | 日韩精品 视频一区二区| 国产精品一区二区三区免费视频| 花花AV导航| 黄片视频,下载| 色噜噜综合在线| 小说区 图片区色 综合区| 97色色国产视频| 91AV天堂| 91在线限制级| 国产精品人妻免费精品| 91欧美高清| 欧美色图成人网一区二区| 啊啊啊轻点在线观看| 三上悠亚在线毛片91| 金莲网址| 日韩97视频!在线| 91天美传媒在线观看| 亚洲美女精品九九视频| 日韩欧美字幕亚洲一区二区 | 欧美亚洲国产自久久| 亚洲色棕合| 日韩中文字幕国产| www.狠狠干.coom | 色九久| 国产成人无码啪| WWW黄片COM| 久久久无码精品人妻二区| 性色中出| 亚洲丝袜诱惑| 这里都是精品在线观看| 久久人爽| 影音先锋新男人| 亚洲系列第一页| av网站在线看| 亚洲综合图文| 91欧美高清| 色婷婷狠狠| 九九热久久99精品re| 日本天天操| 日韩欧美tv一区二区在线观看| 中文字幕欧美丝袜07资源| 亚洲成人性爱在线观看| 男人的天堂在线| 伊人操你| 97久久精品国产| 国产91 丝袜在线播放00-百度| 探花一区在线| 97超碰欧美手机在线| 成人三一级一片aaa| 亚洲图片欧美制度| blacked精品一区国产| 五十路二区在线| 免费αⅴ在线观看| 91九色丰满高潮| 国产激情av女片自拍| juliaann丝袜大战黑鬼| 日本日逼高清| 久久这里只精品| 超碰在线国产| 91天天| 亚洲无套久久嗯嗯| 国产二区三区免费视频| 国模不卡一本二本三电影| 成人性爱AV在线免费观看| 中文字幕乱碼在线| 日韩欧美中文| 中文字幕一区二区无码成人| 区一在线观看| 四虎国产精品永久地址入口| 超碰 国产熟女精品一区| 极品色www影院| 精品一区二区三区麻豆| 久久九七| 在线国产探花| 久操操AV电影| 999色欧美中文字幕| 国产一级片| 91美女在线观看| 啊啊啊在线观看免费视频| 一级@啪啪视频| asc国产精品| 五月天激情婷婷| 欧美亚洲自拍另类人妻| 97久久久久久久久久| www99热| 亚洲**2021在线观看| 97精品中文字幕| 五月婷婷基地| 久久美女国产| 久久久精品无码亚免费| 996热| 日韩性爱一级片| 国产第二页| 色五月网址| 自拍内地三级在线观看| 大香蕉手机在线| 人妻久热在线| 五月婷婷丁香| 欧美日韩色综合网| 欧美性夜| 精品久久久一本一道| 精品人妻夜夜草| 免费一级毛片在线视频观看| 国产最新小视频在线播放下载| 九九九九一区| 亚洲无限观看| 九九九九九九九九九五码| 五月丁香久久| 亚洲欧美在线观看2021| av优播| 97av,com| 人妻酒店出差被中出免费在线播放| 99自拍视频在线| 2020中文在线一区二区三区| 97超碰磁| 中文字幕天堂在线| 夜夜躁狠狠躁日日躁av| 好爽要喷了| 国产精品久久久999| 国产超碰国产97| 99ri在线视频| 女人高潮大叫一级毛片| 久久久久亚洲Aⅴ无码| 一级做a爰片性色毛片久久| 日韩精品资源| 国产三级中文字幕粉嫩| 九九人妻| 蜜臀99久久国产| 91热色| 久久久内射良家| 福利一级版子| 亚洲资源网| 夜夜爽爽夜夜精品视频| 九九九九欧美| 欧美91丝袜| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区二区老师 | 国产乱码久久久| 麻豆人妻偷人精品无码视频| 亚洲黄色网址| 99蜜月精品久久| 91碰碰| 亚洲人精品午夜不卡| 一级黄碟| 日韩综合色图| 日韩在线国产字幕| 亚瑟国产精品久久无码| 免费精品人妻一区二区三| 26uuu欧美日韩| 日本人妻中文字幕精品| 一区二区视频在看| 青娱乐亚洲自拍| 天天射,天天操,天天爽-国内精品一区二区三区-成人AV | 一类无码操逼视频| 欧美亚洲色图另类国产| 日韩人妻免费精品| 大香蕉综合| 国产九月婷婷| 加勒比AV网| 日本精品久久久久久久| 久久久久久中文版| 射 色综合| 97超碰色| 久草草一二三四区久久| 日韩91网| 91狠狠色丁香婷婷综合久久| 东北夫妻性偷拍| 九九九久千久久激情蜜桃在线看 | 国产精品久久久久无码Av网曝门| 婷婷五月天av| 亚洲欧美日韩偷拍色图| 国产精品爱欲| 婷婷AV一区二区三区| 人人摸人人干| 日韩钢筋无码高清啾啾啾| 91激情综合| 日本久久久精品电影| 亚洲操操操无码| 91色婷婷综合久久中文字幕二区| 加勒比AV网| 久久久久久亚洲精品不卡人乳| 18精品一区| 午夜黄色免费在线观看| 久欲AV| 亚洲.欧美.丝袜.中文.综合| 欧美999999| 性欧美91| 日韩欧美午夜视频在线| 91丝袜在线观看视频在线观看| 综合91网| 日韩成人私密一级精品av| 国产人伦a片信息免费片| 男人兔费天堂| 久九9精品| 亚洲中文字幕熟女| 亚欧国产无码精品在线| 国产精品 午夜福利| 殴美色网| 青娱乐 成人娱乐在线| 欧美日本国产日韩激情视频| 麻豆亚洲Av成人无码一区精品| 中文字幕、久久精品国产2020、久久综合久久自在自线精品自、亚洲 | 夜夜欢天天干| 8050午夜少妇无码| 亚洲超碰综合网| 在线综合网| 91GD.COM| 自拍亚洲综合| 9/A片 | 超碰碰97资源站| 少妇高潮喷水无套久久久久久| 大香蕉一级黄色片久久| 屌色在线97视频| 精品成人av一区二区三区在线| 国产真实野战在线视频| 内射白嫩美女| 97超碰欧美中文字幕| 女人高潮大叫一级毛片| 精品国产综合久久福利,热99这里有精品综合久久,99热这里只有免费国产精品,精 | 夜夜操av亚洲一区二区| AV中亚| 婷婷伊人| 91色插| 最好看的中文字幕在线2018| 99精品热| 26uuu久久| 色婷网| 国产AV超爽| 欧美一二三级精品在线| 人人人人人人少妇| 婷婷色香伊人| 亚洲 欧美 中文 日韩超碰 | 奇米狠999| 2000亚洲男人天堂| 黄色小视频日本txt| 亚洲色图欧美另类在线| 1禁看欧美黄片免费看| 一二视频神马久久传媒| 亚洲aV无码成人在线观看| 人人澡人人澡人人| 水澄无码AV| 乱伦av麻豆| 性爱乱伦网址| 午夜性| 岛国片在线视频网站| 男人的天堂2000| 久久久久久久精| 男人综合网| 久久久久久久一级黄色打同平台| 亚洲?V高清一区二区三区尤物| ,国产乱人伦精品一区二区三区| AAAA级日本片免费视频| 久草精品视频| 亚洲丝袜二区| 国产日韩色综合| 91碰碰| 69人妻精品一区二区绯色| 亚洲国产美女久久久久| 欧美国产操逼| 大香蕉伊人色偷偷在线| 人人 操人人 操人人| 亚洲欧美啪啪| 日韩伦理视频| 96久久精品一二三区色欲| 蜜臀久久99精品久久久久久婷婷| 黄呦呦在线| 大香蕉综合在线| 日韩无码视频黄色| 97久久久久| 久久鲁夜| av天天在线观看| 国产精品一区午夜福利| 校园春色 欧美| 国产视频第2页| 欧美成人9797| 国产又粗又长又爽又色| 日韩免费看在线黄色片| 鸥美中出| 99热99re6国产在线播放| 国产欧美一区二区| 婷婷五月色| 国产一进一出视频网站| 中文字幕99999| 青青草原成人| 色欲色香天天天综合网www-亚洲综合国| 中文激情网| 一牛影视成人片免费| av网站免费看| 大香蕉日韩| 欧美熟女逼久久久久久| 97视频在线观看高清资源| 人人操AV| 岛国精品视频在线观看| 嗯啊抽插大香蕉网页| 久久国产AⅤ| 日韩97P| 亚洲熟妇白浆无码AV| 亚洲欧美精品久| 夜夜操夜夜爽夜夜高潮| 好淫网一二三视区| 67914亚洲精品| 色综合色综合网| 国产亚洲禁久一区二区 | 国产精品交换一区二区| 婷婷色五月激情| 四虎影院成年人片| 超碰97首页| 男女激烈网站最新| 偷窥自拍A片| 久久久草成人网站久久久草成人久久久草久久久 | 爱射综合| 亚洲操人| 免费一级毛片在线视频观看| 国产剧情AV不卡在线观看| 麻花豆传媒剧国产MV出差| 少妇一区二区三区精选| 91香蕉国产尤物视频| 拍拍拍拍大尺度黄色三级片拍拍拍拍拍照| 天天干天天日天天射黄色片| 亚洲成人精品久久久| yazhousetuoumei| 欧美性区| 欧美午夜视频| 青操影院| 国产又粗又长又大的视频| 日韩99999| 美女高潮国产高清| 亚洲欧美天堂| 无码一区二区精品视频久久久春药| 搡老熟女免费视频| 欧美一区二区三区入口| 日本色色的视频| 中字乱伦AV| 欧美色图天堂在线| 午夜呻吟欧美| 久久伦理视频久久大香蕉视频| 无码人妻精品一区二区三区九九| 亚洲九九视频在线观看| 大香蕉中文| 国产91精品久久久久久久网曝门| 国产97在线播放| 色淫网站优优视频| 国产精品女aA片爽爽视频| AV一起草在线| 国产成人精品日本亚洲语言| 超碰人人乐97| 久久99草| 五月天亚洲色图| 日韩在线一区高清在线| 超碰91在线| 91欧美偷拍| 人妻喷水| 日本一区二区三区午夜观看| 精品久久人妻成人网| 成人精品电影| 91模特在线观看| 亚洲无码com| 黑人无码一区二区| 国产suv精品一区二区四| 综合久久99亚洲人妻中文在线| 亚洲色婷婷综合久久一区二区三区| 欧美精品宗合| 亚洲一区日韩| 欧美熟妇亚洲版| 亚洲黄色AV电影| 国产熟女完整版中字| 91九九九小逼| 99热8| 开心五月天激情网| 综合国产影视三级| 九九热国产| 伊人97超碰| 亚洲欧美首页| 婷婷AV一区二区三区| 刺激性视频黄页| 99少妇| 亚洲欧综合另类无码一区| 久久久久中出| 久草免费在线视频| 亚洲最大无码中文字幕网站| 久久大线蕉一区| 夜色综合| 嗯嗯嗯好爽| 日日骚一区二区三区| 韩日性爱av| 1区2区3区中文字幕日韩| 天天综合欧美| 日日操天天操| 天天射天天色成人| 丁香五月天激情网站| 欧美亚洲se91| 久久久久久一日韩字幕无码| 美女人妻色网站| 一本色道人妻久久| A 天堂在线观看视频| 偷拍超碰| 新亚洲无码| 99精品九九九九九九| 欧美在线综合| 国产熟女完整版中字| 欧美熟女妇同| 欧美精品三区| 美女露胸露屁股| 超碰九7免费| 人妻激情偷乱视频一区二区三区| 99999国产| 长长久久曰曰夜夜成人网| 变态综合色| 日日夜夜干| 午夜爽爽爽| 91人人爽人人爽| 熟妇综合一区二区三区| 色爱综合网欧美| 看免费的黄片| 中文字幕一区二区三四五区日日骚| 亚洲一曲日韩精品| 性交一区二区在线播放| 强奸乱伦av电影| 国产精品对白自产拍| 三级三久久线久久99久目本WW| 欧美成人精品一区二区男人蜜臀| 五月婷婷激情网| 男人天堂新在线| 大香蕉在线视频15| 国产日韩精品人妻久久久久色欲网站| 日日干男人的天堂| 日本成人免费一区二区三区| julia国产在线| AVE乱伦| 天天日天天操心| 日本孕妇孕交| 亚洲第91页| 在线黄色污污网站| 九月丁香综合网| 日韩大香蕉AV影片| 国产白嫩精品久久| 欧美色性爱| 日韩熟女精一区二区三区不卡| 18精品一区| 逼逼逼逼操操操操操操操操操午夜剧场| 青青草无码视频| 久久久久久久人妻| AA级电影三区| 亚洲乱熟女一区二区| 啊啊啊 在线观看| 93人人操人人| 中文字幕97| 久久久久久久久久久久九| 婷婷五月天影院| 亚洲电影中字一区二区| 男人的天堂三级| 午夜成人福利影视| 亚洲成人免费电影| 岛国黄片网站| 国产丝袜视频| 欧美日韩精品一区二区三区高清| 国产精品一区二区三区免费视频| 超碰地址97| 少妇一线天久久久久久| 日韩成人精品视频自拍| 最新亚洲黄色免费电影| 久久69精品久久久久久久| 天堂岛av| 国产精品视频播放| 清纯唯美亚洲| 日本黄色天堂| 国产农村妇女精品一| 欧美在线干| 太久视频| 亚洲国产欧美一区二区潘金莲 | 97综合| 国产97综合| 久噜噜| 欧美精品久久96人妻无码| 天天弄天天操| 国产成人精品日本亚洲语言| 乱伦图一区| 十八禁视频一区二区| 香蕉视频精品亚洲一区二区三区在线播 | 78超碰| 四虎884| 翔田千里AⅤHD无码| 男人天堂婷婷五月天校园春色| 人人摸人人摸人人干| 亚洲九月丁香| 国产99精品一区二区三区免费| 国产偷人伦激情在线观看| 日韩猛交| 欧美日韩中文字幕人妻| 78m成人视线| yazhououmeizongya| 天天日美女的B| 亚洲成人妻日韩在线| 久久精品国产99国产精品亚洲| 欧美制服网站美腿丝袜| 青青草日韩无码| 深爱五月天| 色婷五月天| 激情五月天色播| 亚洲va综合va国产va中文| 99色热| 欧美日韩丝袜 | 麻豆一区二区AV天美| 久草电影网| 亚洲美女高潮喷水视频| 精品一级| 亚洲91网| 精品久久无码午夜福利| 911av网站免费观看| 国产黄色 A 片免费看| 日韩激情中文字幕有码| 超碰在线国产| 91九久| 蜜臀99999| 中文字幕第23区| 福利五区| 中日韓欧美高清| 51国产午夜精品视频| www.91逼逼.com| 日本123区操B视频| 91爽啪| 久久鲁夜| 天天碰久久入| 1024人妻熟女一区二区三区| 欧洲亚洲人妻无码久久三区四区| 欧美综合天堂| 青娱乐二区免费| 91成人久久| 95人妻爽爽人人做人人澡| 久久久久9久久久久| 狠狠色一区二区中文字幕| 日韩欧美中文字亚洲慕| 天天综合欧美| 免费网站观看www在线观| 亚洲黑丝在线| 久久国产视频性吧| 亚洲AV无码久久精品蜜桃小说| 大香蕉色欲AV| 国产精品久久久| 亚洲色图日韩精品| 欧美不卡在线美女| 本道在线| 国产黄色剧情影片麻豆免费播放| 日韩国产乱子伦App| 日本人体九九九九九九| 日韩欧美中文字| 91超碰在线| 五月综合婷婷久久网站| 九九九久千久久激情蜜桃在线看 | 夜夜嗨一区二区| 亚洲丝袜综合| 屌色在线97视频| 成人无码影片视频在线| 国产精品视频在线播放| 色色色999| 91久久久老司机| 国产 日韩 欧美高清| 国产精品无码在线| 久久肏大逼| 午夜福利视频在线一区| 欧美无圣光在线| 日韩熟女精一区二区三区不卡| 国产野战露脸在线播放| 男人天堂2012| 久久久成人免费av电影| 26uuu国产亚洲综合| 国内精品伊人久久久久影院会| 亚洲影院小综合| 少妇熟女一区二区三区| 欧美天天综| 欧美狠狠弄| 高清孕妇孕交 交| 91人妻尻屄视频| 青青草手机在线免费观看| 97欧美综合| 婷婷五月天激情网| 极品一区二区三区免费| 福利社区午夜一区二区| 日韩紧密久久| 97爱爱| 丁香五月综合| 久久九九97| 熟妇xxxxx性春色| 超碰这里只有精品| 中文字幕精品一区二| se吧提供国产乱老熟视频胖女人| 亚洲AV在线资源| 丝袜夫妻自拍| 综合色图区| 亚洲97| 亚洲色天堂日韩中| 五月天亚洲网| 日韩欧美中文日韩欧美色| 蜜屁Av| 盗摄女人妻在线| julia中文字幕在线观看| 免费a级毛片av无码久久精品中文字幕| 男人夜色天堂ss| 男人的午夜天堂| 精品久久青青草| 久久产精品一区二区三区电影| 久久久久久久久久久久久9999| 好爽免费视频| 蜜臀AV一区二区三区激情综合| 欧洲在线性爱视频| 好看的91视频| 2018天天干在线视频| 色老久久| 亚洲操人| 91久久久久久久久18| 色狠狠综合噜一二三区| 熟妇的味道HD中文字幕| 久久妇| 超碰在线国产| 女色综合| 大奶尤物鲍汁淫荡欧美视频粉嫩夜夜骚| 国产午夜福利专区综合| 91精品免费| 久久久激情| 中文字幕蜜乳av| 躁躁日曰躁2020| 国产麻豆一级精品视频| 国产成人一级av88| 黄色片大香蕉| 97欧美日韩综合| 久久综合久久综合人久久夜精品| 岛国免费黄色网址| 精品人妻一区二区免费看| 艳美熟妇先锋一二三区| 日韩黄片视频试看| 精品无码一区二区三区| 精品国产一区二区三区av在线资源| 日本一级特级毛片视频| 国产情色在线| 中文啪啪视频| 天天做日日做天天欢。| 欧美亚洲综合高清在线| 日噜夜夜夜夜夜夜夜夜夜夜爽爽爽爽爽爽爽爽爽爽爽爽 | 春色综合网| 欧美一区二区成人一卡| 丁香五月久久| 95自拍视频在线观看| 九九九999久久久网站| 韩日欧亚a级| 嗯嗯啊啊视频在线看| 一区二区三区在线美女| 淫淫综合网| 欲射影视| 你操综合| 欧美成人性爱视频大全| 日韩三A大片在线观看| 欧美色图99| 国产乱码精品久久久久久| 狠狠干综合| 精品黑人一区二区| 国产美女自拍AV| 国产乱子伦一区二区三区在线观看| 色妇91| 神马久久网| 天天添天天干电影| 蜜臀操逼黄色视频操的好爽| 精品日韩人妻精品一二三区| 超碰97综合| 爱丝福利| 欧美亚州色的图| 人人澡综合涩| 婷婷伊人一区| 伊人久久88国产女| 99碰碰| 久久免费精品视频免一| 亚洲国产奇米影视久久| 熟女激情综合网| 97久久超碰| 亚洲色阁| 人妻精品一区二区| 久艹伊人精品综合在线| 九九热超碰97亚洲最新香蕉 | 很狠操| 色婷婷综合久久中文字幕雪峰 | 久久男人的天堂| 中文字幕激情小说| 欧美性少妇| av草草在线电影| 久久久99999久网站| 精品97久久综合| 麻豆福利视频导航| 99999精品成人| 三级片大波波| 蜜桃久久久久久久| 7月婷婷综合| 日本一区二区电影网站| 91爱综合| 神马久久久久眼| 精品久久久av| 国内精品不卡无毒99999| baisiav| 日本裸体久久色噜噜| 久久色激情一区二区三区| 色噜噜人妻av 中文字幕| 志村玲子视频一区二区| 亚洲另类综合欧美| 蜜桃久久久久久久| AV丝袜少妇| 国产丰满少妇久久久精品影院| 999久久久| 91红杏| 亭亭丁香激情| 九九九久千久久激情蜜桃在线看 | 国产一区二区欧美日本| 久久一区二区三区入口| 2020国产精品| 九九综合| 久久伊人在线五区| 日韩在线97| 风月影院男女十八禁| 9久9久9久9久视频网站| 超碰超碰超碰超碰的大鸡吧操黑丝袜| 友优传媒精品在线一区二区| 欧美 综合| 天天欧美欧美亚洲网| 熟女丝袜视频| 午夜精品久久久久| 91无摭挡| 最新AV在线| 日韩精品资源专区二区| 亚洲国产婷婷在线播放| 亚洲日韩精品在线播放| 女色视频社区| 中文字幕人妻色偷偷久久皮| 黄站在线免费观看| 操逼操逼操| 日韩国产欧美伦理在线| 欧美很很操视频| 草b在线| 欧美骚少妇| 亚洲美女AV无码| 韩国三级一线观看久| 久9re热视频这里只有精品| 精品欧美А∨无码黑人大荫蒂| 国产粉嫩出水在线播放| 99久久久无码| 美女爽爽爽刺痛洞洞| 中文字幕99999| 久草免费福利在线播放| 亚洲少妇色| 操曰本熟女| 97在线观看| 美女被艹尤物视频| 美腿丝袜偷拍亚洲欧美| 久久久久密臀一区二区| 后入精品| 天天看天天在线精品| 91 手机在线播放 绯色| 日本高清熟女久久一区| 伊人国产成人av网站| 日韩人妻一区二区精品| 青青草啪啪网| 我要去看2个日本美女.com曹逼| 日韩精品人妻一| 国产不卡片| 嫩草影院永久在线制服丝袜| 色网亚洲人| 夜夜天天噜狠狠爱2021| 精品视频在线观看| 亚州性色| 97超碰欧美精品| 学生妹天天看| 国产超碰国产97| 欧美日韩久久精品爱爱| 久久美女国产| 精品人妻视频一区二区在线播放| 18禁中文字幕| 国产四虎在线| 精品中文一区二区| 好色综合| 超碰人人草| 91欧美性| 色色色色网站| 久久久久久久9999| 色伊人91| 五月天久久婷婷亚洲| 超碰在线一区| 婷婷五月天av| 综合情欲网| av网页一区二区三区| 啊啊啊在线观看免费视频| 91色图| 日日干日日| 国产精品乱码久久久久久久久| 另类 日韩 熟女| 天天超级碰碰碰| 99re热有精品视频国产| 国产精品亚洲四五区在线观看| 国产日本一区二区三区蜜臀在线观看| 欧美色五月| 久久久久国色αv免费观看| 99日精品欧美国产| 亚洲欧美国产精品久久久久久久| 日本护士高潮| 90后后入| 丁香久久| 91丝袜在线观看| 欧美黑人猛交春色影视大全| 一区二区不卡视| 91美女在线精品视频| 插入逼91| 91天天综合网,天天综合网| 午夜福利无毒不卡| 不卡一区视频| 日本午夜精品理论片A级APP发布| 久久9免费视频| 色噜噜狠狠色综合日日| 大香蕉视频啪啪啪啪| 国产成人亚洲精品自产在线| 草草电影院| 天天综合网1| 欧美性爱十八禁| 国产v片在线免费观看| 亚洲日韩一区电影| 综合网亚洲| 国产60区。| 性色av蜜臀av色欲aV| 色婷婷一区二区三区久久午夜成人不| 岛园激情| 性色综合网| 欧美少妇第一页| 探花在线免费观看视频国产一区| 92大香蕉| 极品五月天噜噜| 国内毛片无遮挡国产| 日本三级韩国三级美三级91| 热九九精品| 天堂v无码免费视频| 97在线资源| 思思99热| 亚洲欧美色图小说| 熟女91网| 欧美人妻久久精品二区三区 | 欧美日韩国产电影| 熟女六十路| 精品人妻中文字幕高清| 亚拍在线| 熟女人妻久久中文字幕一二区| 亚洲熟女精品| 蜜臀Av一区二区三区| 超碰97网址| 亚洲中文字幕精品久久久久久直播| 白嫩少妇| 9ⅰ久久久天天| 97综合在线观看| 国产三区免费在线观看| 亚洲欧美日韩偷拍色图| 九色 蝌蚪 熟女自 | 97精品在线视频| 98福利在线视频| 青青草九九九九九| 亚洲国产午夜真人一级片中文字幕精品黄网站 | 日韩熟女无码| 在线洲亚线| 久久久久久久久久久久黄色| 天天综合色| 免费作爱一级视频| 国产精品分类在线观看| 91色婷婷综合久久中文字幕二区| 色综合99999| 色婷婷蜜臀av| 久久精品一区二区三区不卡| 久久99午夜精品一区人妻| 视频一区二区三区精品| 免费操逼91| 9ⅰ久久久天天| 色鬼在线综合| 婷婷五月天福利| 午夜福利免费福利视频| 一个国产在线综合网站| 2021国产成人精品久久| 人妻丝袜二区| 亚欧美色图| 亚洲欧美国产va在线| 超碰 另类 欧美 | 不卡中文字幕aⅴ在线| 精品九区| 国产精品久久久亚洲第一牛牛_在线观看 | 日本精品九九九| 淫乱图区| 日本熟女中文| 日韩一级久久毛片| 97爱综合| 国产精品剧情| 亚洲成人贴图| 一本色道久久综合熟妇| 婷婷干黄色| 亚洲 欧美 小说| 后入式999| 久久精品国产亚洲AV片多多| 97久久精品国产| 婷婷五月天av| 欧美日韩中文亚洲v在线综合| 日韩电影在线观看网址| 嗯嗯嗯好爽| 亚洲色吧网| 狠狠狠一区二区三区| 操人妻少妇中文| 国内精品999| 大香蕉 222| 色女99一级片在线观看| 中文字幕丝袜美腿| 91 丝袜在线| 99久久综合| 好舒服视频| 激情久久日韩精品中文字幕麻豆| 蜜桃臀AV在线| 色色97爱| 免费操逼91| 青草草免费网站av|