色五月色开心色婷婷色丁香,五月婷婷丁香花综合网,婷婷丁香五月激情综合在线,五月婷婷六月丁香动漫,婷婷丁香五月激情综合在线,丁香花中文字幕在线观看,播五月色五月开心五月网,开心激情综合网,狠狠色丁香婷婷综合最新地址,丁香视频在线观看,狠狠做六月爱婷婷综合av,久久激情五月丁香伊人

ARTICLE DETAIL

資訊詳情

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

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

InterBase 6.0老庫(kù)拆解:MGA事務(wù)、生成器與Delphi控件維護(hù) 簡(jiǎn)介InterBase 6.0 數(shù)據(jù)庫(kù)安裝包與開發(fā)示例合集面向使用 Delphi 6 構(gòu)建客戶端/服務(wù)器數(shù)據(jù)庫(kù)應(yīng)用的開發(fā)者及數(shù)據(jù)庫(kù)學(xué)習(xí)者可用于搭建本地測(cè)試環(huán)境、研究早期 RDBMS 的部署結(jié)構(gòu)與 API 調(diào)用方式。壓縮包共 130 個(gè)文件約 4.86MB含 33 個(gè) C 源碼、15 個(gè)可執(zhí)行程序、8 個(gè)動(dòng)態(tài)庫(kù)以及頭文件、庫(kù)文件、幫助文檔、SQL 腳本和 gdb、gbk 示例數(shù)據(jù)庫(kù)覆蓋安裝、卸載、運(yùn)行配置與基礎(chǔ)數(shù)據(jù)操作。已有 341 人學(xué)習(xí)下載對(duì)遺留系統(tǒng)維護(hù)和舊版 Delphi 數(shù)據(jù)訪問研究仍有參考價(jià)值。讀者可獲得較完整的安裝組件、數(shù)據(jù)庫(kù)引擎依賴文件、編程接口示例和初始數(shù)據(jù)庫(kù)樣本便于理解 BDE、ODBC 等連接方式背后的文件組成也可用于排查舊項(xiàng)目運(yùn)行環(huán)境缺失、數(shù)據(jù)庫(kù)初始化與許可配置等問題。1. 接手一個(gè)只剩 .GDB 文件的老系統(tǒng)才明白 InterBase 6.0 是什么形態(tài)交付包里沒有安裝手冊(cè)只有一個(gè) 4MB 出頭的.GDB文件和一堆 Delphi 控件源碼這是不少人第一次接觸 InterBase 6.0 時(shí)的真實(shí)場(chǎng)景。它并不是那種需要獨(dú)立 DBA 運(yùn)維的數(shù)據(jù)庫(kù)服務(wù)整個(gè)庫(kù)就是一個(gè)文件拷到目標(biāo)機(jī)器、配好連接串、把控件拖到窗體上就能讀寫。這份資源的價(jià)值也在這里服務(wù)端、客戶端連接庫(kù)、控件源碼和示例應(yīng)用湊成一套拿下來就能把一個(gè)數(shù)據(jù)庫(kù)應(yīng)用從前端到存儲(chǔ)層全部跑通。這篇按我拆包的順序?qū)懴戎v清 InterBase 6.0 的事務(wù)模型和文件組織再把它在本機(jī)跑起來然后把生成器、觸發(fā)器、存儲(chǔ)過程、UDF 這幾塊核心實(shí)現(xiàn)逐段拆開最后落在「拿到控件源碼之后改哪里」這個(gè)實(shí)際問題上。手里攥著老項(xiàng)目要維護(hù)的人和想拿一個(gè)輕量嵌入式數(shù)據(jù)庫(kù)練手的人都能照著走一遍。2. 技術(shù)底座MGA 架構(gòu)下的事務(wù)版本與頁(yè)面組織2.1 多代版本架構(gòu)讀不擋寫寫不擋讀先糾正一個(gè)很容易帶偏的認(rèn)知InterBase 6.0 不是靠回滾段做并發(fā)的。執(zhí)行 UPDATE 時(shí)它不原地覆蓋那一行而是把記錄的新版本寫進(jìn)數(shù)據(jù)頁(yè)舊版本留在原處只在記錄頭里把「替換事務(wù)號(hào)」標(biāo)成當(dāng)前事務(wù)。別的讀事務(wù)只要自己的快照事務(wù)號(hào)比這個(gè)替換號(hào)小就繼續(xù)讀到舊版本一點(diǎn)都不會(huì)被卡住。這就是所謂多代版本架構(gòu)MGA它的直接結(jié)果是讀事務(wù)永遠(yuǎn)不用等寫事務(wù)寫事務(wù)也不會(huì)因?yàn)橛腥嗽趻弑矶抨?duì)。沒有回滾段帶來的另一個(gè)差別在回滾語(yǔ)義上。執(zhí)行 ROLLBACK 時(shí)數(shù)據(jù)庫(kù)并不做「反向補(bǔ)償」它只是把那個(gè)事務(wù)在事務(wù)清單里標(biāo)記為已死這個(gè)事務(wù)寫下的所有版本立刻變成垃圾數(shù)據(jù)等著被回收。所以回滾一個(gè)剛插了十萬行的事務(wù)幾乎瞬間完成不會(huì)像日志型數(shù)據(jù)庫(kù)那樣還要回放一遍。這套設(shè)計(jì)的代價(jià)也很明確垃圾版本不會(huì)自動(dòng)消失需要靠 sweep 機(jī)制回收而 sweep 能不能推進(jìn)取決于「最老活躍事務(wù)」OIT和「最老事務(wù)」OAT這兩個(gè)水位線能不能往前走。這就引出了老項(xiàng)目里最典型的一類故障。只要有一個(gè)連接開著事務(wù)不提交——哪怕它只是SELECT了一下——OAT 就被釘在原地比它新的所有垃圾版本都回收不了庫(kù)文件只漲不縮查詢?cè)絹碓铰?。我在一個(gè)工控項(xiàng)目上見過庫(kù)文件從 200MB 漲到 3GB最后查出來是一個(gè)報(bào)表模塊的TIBTransaction忘了Commit掛了半個(gè)月。所以看一個(gè) InterBase 庫(kù)健不健康第一件事不是看數(shù)據(jù)量是看 OIT 和 OAT 差了多遠(yuǎn)。還有一點(diǎn)要注意事務(wù)隔離級(jí)別在 InterBase 里是通過 TPB事務(wù)參數(shù)塊傳的isc_tpb_concurrency是快照隔離最常用isc_tpb_read_committed配isc_tpb_rec_version是讀已提交而isc_tpb_consistency會(huì)加表級(jí)鎖除非你在做批處理維護(hù)否則別碰它一旦用錯(cuò)整個(gè)系統(tǒng)的并發(fā)直接降到單線程。2.2 單文件、頁(yè)與事務(wù)計(jì)數(shù)器的物理組成.GDB文件內(nèi)部是按頁(yè)組織的頁(yè)大小在建庫(kù)時(shí)定死可選 1024、2048、4096、8192 字節(jié)。第 0 頁(yè)是數(shù)據(jù)庫(kù)頭記錄了頁(yè)大小、事務(wù)水位、影子文件信息往后是頁(yè)分配頁(yè)、事務(wù)清單頁(yè)TIP、指針頁(yè)、數(shù)據(jù)頁(yè)、索引頁(yè)和 BLOB 頁(yè)。理解這套分層最實(shí)用的工具是gstat它不做任何修改只讀取元信息。# 只看庫(kù)頭頁(yè)大小、OAT/OIT、下一個(gè)事務(wù)號(hào)、影子文件 gstat -h /opt/data/demo.gdb # 看數(shù)據(jù)頁(yè)的填充率和高水位判斷是不是碎片太多 gstat -d /opt/data/demo.gdb | more # 看索引深度深度從 3 變成 4 通常意味著索引膨脹 gstat -i /opt/data/demo.gdb-h的輸出里有幾個(gè)參數(shù)值得記住Page size決定了單頁(yè)能放多少行也間接決定了 BLOB 的讀取效率Oldest transaction就是 OATOldest active是 OIT兩者相差幾百以內(nèi)算正常差到幾十萬說明有長(zhǎng)事務(wù)在拖后腿Next transaction是一直遞增的事務(wù)號(hào)漲到 20 億附近會(huì)有溢出風(fēng)險(xiǎn)正規(guī)做法是做一次備份還原把事務(wù)號(hào)重置回低位。-d看的是數(shù)據(jù)頁(yè)的填充率如果大量頁(yè)只填了 30%說明刪除和更新留下的空洞多該做一次gbak備份還原把空間收回來。頁(yè)大小定下來之后想改唯一的辦法是gbak備份再gbak -c -p 8192還原沒有在線改的路徑。所以建庫(kù)前要想清楚如果表里有一堆VARCHAR(200)加上幾個(gè) BLOB 字段用 4096 或 8192 能少很多跨頁(yè)讀如果只是幾百?gòu)埮渲帽?、單行很?024 反而更省內(nèi)存。單個(gè)文件大到一定程度就得拆成多文件-- 追加第二個(gè)數(shù)據(jù)文件起始頁(yè)號(hào)接在主文件之后 ALTER DATABASE ADD FILE /opt/data/demo_02.gdb STARTING AT PAGE 200000 LENGTH 200000;這條語(yǔ)句里的STARTING AT PAGE是主文件的頁(yè)號(hào)邊界不是字節(jié)數(shù)寫錯(cuò)會(huì)導(dǎo)致新文件永遠(yuǎn)用不上。我一般只在受文件系統(tǒng)單文件上限限制的場(chǎng)景下才拆拆完一定要用gstat -h確認(rèn)Database files那一行變成了兩個(gè)否則等于白寫。2.3 服務(wù)形態(tài)本地直連還是 TCP 遠(yuǎn)程InterBase 6.0 的一個(gè)特點(diǎn)是同一個(gè)客戶端庫(kù)既能連本地文件也能連遠(yuǎn)程服務(wù)區(qū)別只在連接串怎么寫。這一點(diǎn)經(jīng)常被忽略然后在部署時(shí)踩坑——因?yàn)檫h(yuǎn)程連接里那個(gè)路徑是「服務(wù)端視角」的不是你自己機(jī)器上的路徑。連接串寫法走的協(xié)議適用場(chǎng)景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)程多人共用一臺(tái)庫(kù)服務(wù)器srv01:/opt/data/demo.gdbTCP 遠(yuǎn)程跨平臺(tái)部署服務(wù)端是 Linux本地直連省掉了網(wǎng)絡(luò)往返和權(quán)限校驗(yàn)啟動(dòng)快、部署簡(jiǎn)單很適合隨應(yīng)用程序一起分發(fā)的單機(jī)版。但它的并發(fā)模型比遠(yuǎn)程弱得多多個(gè)進(jìn)程同時(shí)寫同一個(gè)文件時(shí)鎖沖突會(huì)很難排查所以只要業(yè)務(wù)里有第二個(gè)人同時(shí)寫就別圖省事老老實(shí)實(shí)裝服務(wù)端走 TCP。遠(yuǎn)程連接的另一個(gè)前提是服務(wù)名要能解析。客戶端庫(kù)默認(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í)先別懷疑庫(kù)文件損壞八成是這行沒登記或者被防火墻攔了。3. 跑起來從服務(wù)啟動(dòng)到控件發(fā)出第一個(gè)查詢3.1 安裝與最小可用配置服務(wù)端裝完之后要先確認(rèn)三件事進(jìn)程在跑、端口在聽、SYSDBA能登進(jìn)去。很多人卡在第一步是因?yàn)榘芽蛻舳撕头?wù)端裝混了——客戶端只需要一個(gè)連接庫(kù)Windows 上是gds32.dll服務(wù)端才有后臺(tái)進(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í)行器后面建庫(kù)、灌表結(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)目錄里的版本不一致。客戶端庫(kù)的版本必須和服務(wù)端大致匹配混用不同版本時(shí)表現(xiàn)是能連上、能查詢但一取 BLOB 或者一調(diào)存儲(chǔ)過程就崩排查成本極高。我的習(xí)慣是把服務(wù)端自帶的那份客戶端庫(kù)直接拷到 exe 同目錄讓它優(yōu)先加載別指望系統(tǒng)的搜索路徑。3.2 isql 建庫(kù)建表跑通第一個(gè)庫(kù)CREATE DATABASE是客戶端工具語(yǔ)句不是服務(wù)端 SQL所以必須在isql里執(zhí)行。路徑同樣按服務(wù)端視角寫。# 建庫(kù)頁(yè)大小和字符集在這里定死后面改不了 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)庫(kù) isql -user SYSDBA -password masterkey -i schema.sqlschema.sql里第一句必須是CONNECT /opt/data/demo.gdb;后面才是 DDL。PAGE_SIZE和DEFAULT CHARACTER SET建庫(kù)時(shí)定死UNICODE_FSS是 6.0 里能存多字節(jié)字符的字符集存中文就別用NONE否則排序和長(zhǎng)度計(jì)算都會(huì)出問題。建表這塊有兩個(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) ); -- 訂單號(hào)唯一單獨(dú)建索引查詢走索引而不是全表 CREATE UNIQUE INDEX IDX_ORDER_NO ON T_ORDER (ORDER_NO);DEFAULT NOW是服務(wù)端求值的取的是數(shù)據(jù)庫(kù)服務(wù)器時(shí)間不是客戶端時(shí)間這一點(diǎn)在跨時(shí)區(qū)的多客戶端場(chǎng)景里很關(guān)鍵——用客戶端賦時(shí)間會(huì)出現(xiàn)同一批數(shù)據(jù)時(shí)間倒掛。BIGINT是 64 位整型只在 dialect 3 下可用用它做主鍵是為了避免幾百萬行之后INTEGER溢出。NUMERIC(18,2)在 dialect 3 下映射到 64 位整型存儲(chǔ)精度不會(huì)丟做金額字段比DOUBLE PRECISION靠譜得多。3.3 控件對(duì)接連接、事務(wù)邊界與參數(shù)化查詢Delphi 那套控件里連 InterBase 最直接的是 IBXInterBase Express它不依賴 BDE直連客戶端庫(kù)部署時(shí)少一層中間件。核心是三個(gè)控件TIBDatabase管連接TIBTransaction管事務(wù)TIBQuery管數(shù)據(jù)集。// 數(shù)據(jù)庫(kù)連接路徑前綴決定走本地直連還是 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); // 必須和建庫(kù)時(shí)一致 IBDB.SQLDialect : 3; // dialect 對(duì)不上會(huì)報(bào)類型轉(zhuǎn)換錯(cuò) IBDB.LoginPrompt : False; IBDB.Connected : True; // 事務(wù)顯式控制別指望自動(dòng)提交 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ù)端建庫(kù)時(shí)的DEFAULT CHARACTER SET對(duì)上對(duì)不上的表現(xiàn)是中文變問號(hào)或者VARCHAR(32)明明只存了 20 個(gè)漢字卻報(bào)超長(zhǎng)。isc_tpb_wait和isc_tpb_nowait的選擇直接影響用戶體驗(yàn)nowait遇到鎖沖突立刻拋lock conflict on no wait transaction適合后臺(tái)批處理快速失敗wait會(huì)掛起等待適合交互界面。查詢部分建議全部走參數(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)后面加字段不會(huì)崩 Memo1.Lines.Add(IBQuery1.FieldByName(ORDER_NO).AsString); IBQuery1.Next; end; IBQuery1.Close; IBTrans.Commit; // 讀事務(wù)也要提交不然 OAT 卡住最后那句Commit是重點(diǎn)。IBX 里TIBTransaction默認(rèn)不自動(dòng)提交一個(gè)TIBQuery打開又關(guān)掉事務(wù)仍然是活的它對(duì)應(yīng)的快照事務(wù)號(hào)就一直掛在 OIT 上。前面說的庫(kù)文件瘋長(zhǎng)源頭往往就是這種「只讀了一下」的代碼。如果一次操作要寫多張表用TIBUpdateSQL配合TIBQuery的緩存更新把提交點(diǎn)收在業(yè)務(wù)動(dòng)作結(jié)束那一刻比一條 SQL 一次提交安全得多。4. 核心模塊拆解生成器、觸發(fā)器、存儲(chǔ)過程與 UDF4.1 生成器與主鍵發(fā)號(hào)GEN_ID 的正確用法生成器Generator是 InterBase 里的獨(dú)立計(jì)數(shù)器和表無關(guān)專門用來發(fā)號(hào)。CREATE GENERATOR GEN_ORDER_ID; SET GENERATOR GEN_ORDER_ID TO 0; -- 取下一個(gè)號(hào)第二個(gè)參數(shù)是步長(zhǎng) SELECT GEN_ID(GEN_ORDER_ID, 1) FROM RDB$DATABASE;GEN_ID的第二個(gè)參數(shù)是增量正常情況下傳 1需要一次預(yù)留一段號(hào)比如批量導(dǎo)入時(shí)傳 N。RDB$DATABASE是系統(tǒng)表永遠(yuǎn)只有一行用來把函數(shù)當(dāng)查詢跑。這里有一個(gè)必須記住的性質(zhì)生成器不受事務(wù)控制。取號(hào)這個(gè)動(dòng)作在事務(wù)回滾后不會(huì)退回所以號(hào)一定有空洞。很多人拿它直接當(dāng)訂單號(hào)展示給用戶看結(jié)果發(fā)現(xiàn)編號(hào)不連續(xù)被業(yè)務(wù)方追著問。我的做法是生成器只做物理主鍵業(yè)務(wù)單號(hào)單獨(dú)用「日期 序列」拼序列另有自己的表去維護(hù)。反過來如果業(yè)務(wù)真的要求連號(hào)那就不能靠生成器得在一張T_SEQ表上做UPDATE ... SET CUR CUR 1并配合行鎖代價(jià)是并發(fā)性能直線下降這個(gè)取舍要提前跟業(yè)務(wù)說清楚。4.2 觸發(fā)器把業(yè)務(wù)約束下沉到數(shù)據(jù)庫(kù)層觸發(fā)器在 InterBase 里分 BEFORE 和 AFTER還分行級(jí)和語(yǔ)句級(jí)。行級(jí)觸發(fā)器里能用NEW和OLD兩個(gè)上下文變量分別代表新值和舊值。-- 自定義異常拋出時(shí)客戶端能拿到這條消息 CREATE EXCEPTION E_AMOUNT_INVALID 訂單金額必須大于 0; -- 主鍵發(fā)號(hào)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ā)號(hào)之后執(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í)行順序編號(hào)小的先跑。上面這兩個(gè)觸發(fā)器必須按 0、1 排否則校驗(yàn)里拿到的NEW.ID還是空。EXCEPTION拋出去之后客戶端TIBQuery會(huì)收到一條EIBErrorMessage里帶的就是E_AMOUNT_INVALID那條文本這是把校驗(yàn)規(guī)則放在數(shù)據(jù)庫(kù)層最實(shí)際的好處——不管前端是 Delphi、Java 還是命令行工具規(guī)則都跑不掉。需要注意BEFORE 觸發(fā)器里改NEW的字段是有效的AFTER 觸發(fā)器里改就沒有意義了因?yàn)橛涗浺呀?jīng)落盤。另外語(yǔ)句級(jí)觸發(fā)器FOR EACH STATEMENT在行級(jí)操作里拿不到NEW/OLD它主要用來POST_EVENT做業(yè)務(wù)邏輯時(shí)千萬別用它。4.3 可選中存儲(chǔ)過程與事件通知存儲(chǔ)過程分兩種一種用EXECUTE PROCEDURE調(diào)用、只做副作用另一種帶SUSPEND可以被SELECT當(dāng)表查叫可選中存儲(chǔ)過程。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是這段代碼的核心。沒有它存儲(chǔ)過程會(huì)把所有行算完只返回最后一組值有了它服務(wù)端每算出一行就掛起客戶端取一行再喚醒內(nèi)存占用是常數(shù)級(jí)別的。FOR SELECT ... INTO里的變量名前必須加冒號(hào)這是 PSQL 里區(qū)分「字段名」和「變量名」的語(yǔ)法漏了冒號(hào)會(huì)報(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適合無返回集的存儲(chǔ)過程 IBSP.StoredProcName : SP_ORDER_CLOSE; IBSP.ParamByName(P_ID).AsLargeInt : 1024; IBSP.ExecProc;配套的還有事件機(jī)制用來做「數(shù)據(jù)變了通知所有客戶端刷新」。服務(wù)端在觸發(fā)器里POST_EVENT客戶端注冊(cè)同名事件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; // 注冊(cè)之后服務(wù)端才會(huì)推POST_EVENT的名字建議用大寫短名老版本對(duì)事件名長(zhǎng)度限制得比較緊不要寫成一句描述。更關(guān)鍵的是OnEventAlert回調(diào)是在客戶端庫(kù)的后臺(tái)線程里觸發(fā)的在里面直接操作 VCL 控件會(huì)因?yàn)榭缇€程訪問出玄學(xué)崩潰正確做法是TThread.Queue或者PostMessage把刷新動(dòng)作丟回主線程。我第一次用事件通知時(shí)就在這里翻過車表現(xiàn)為「偶爾」崩查了兩天才定位到線程上。4.4 UDF拿到源碼后自己編一個(gè)外部函數(shù)庫(kù)內(nèi)置函數(shù)不夠用時(shí)InterBase 支持外部函數(shù)UDF把 C 函數(shù)編成動(dòng)態(tài)庫(kù)在數(shù)據(jù)庫(kù)里聲明之后就能在 SQL 里調(diào)用。/* myudf.c —— 編成動(dòng)態(tài)庫(kù)后由服務(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 位庫(kù) gcc -shared -fPIC -O2 -o myudf.so myudf.c # Windows 下編成 DLL cl /LD myudf.c /Fe:myudf.dll編出來之后丟到服務(wù)端的 UDF 目錄然后在庫(kù)里聲明DECLARE EXTERNAL FUNCTION STRLEN_UDF CSTRING(256) RETURNS INTEGER BY VALUE ENTRY_POINT STRLEN_UDF MODULE_NAME myudf;三個(gè)參數(shù)各有講究CSTRING(256)告訴服務(wù)端按定長(zhǎng)字符串傳參如果用VARCHAR(256)聲明傳進(jìn)去的是帶長(zhǎng)度前綴的結(jié)構(gòu)體指針函數(shù)簽名就得跟著改BY VALUE表示返回值按值傳整型必須加這個(gè)漏了會(huì)讀到一個(gè)野指針ENTRY_POINT是導(dǎo)出符號(hào)名MODULE_NAME是不帶擴(kuò)展名的庫(kù)名。改完庫(kù)之后必須重啟服務(wù)端連接才會(huì)重新加載改完函數(shù)不重啟是最常見的「明明改了卻沒生效」。5. 避坑與排查五個(gè)把項(xiàng)目拖進(jìn)坑里的細(xì)節(jié)5.1 恢復(fù)之后主鍵沖突集中爆發(fā)現(xiàn)象從生產(chǎn)庫(kù)備份出來恢復(fù)到測(cè)試環(huán)境應(yīng)用一插數(shù)據(jù)就報(bào)violation of PRIMARY or UNIQUE KEY constraint但表里明明只有幾百行。原因gbak做完整備份還原時(shí)會(huì)把生成器的當(dāng)前值一起帶過去但如果這次恢復(fù)用的是只導(dǎo)結(jié)構(gòu)的 DDL 腳本或者用-m只恢復(fù)元數(shù)據(jù)生成器的值就回到了建庫(kù)時(shí)的初始狀態(tài)。而數(shù)據(jù)行是從別處灌進(jìn)來的ID已經(jīng)用到了幾千兩邊一撞就沖突。解決恢復(fù)完之后先對(duì)齊每個(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的步長(zhǎng)參數(shù)一次性把計(jì)數(shù)器頂?shù)組AX(ID)比SET GENERATOR ... TO 具體數(shù)字少一次人工查數(shù)。我現(xiàn)在的習(xí)慣是恢復(fù)腳本最后必須帶這一段每個(gè)生成器一行缺一個(gè)就等著線上報(bào)沖突。5.2 庫(kù)文件只漲不縮sweep 跑不動(dòng)現(xiàn)象刪了幾百萬行歷史數(shù)據(jù)磁盤占用一點(diǎn)沒降查詢一天比一天慢跑gfix -sweep跑了幾個(gè)小時(shí)還在跑。原因刪除在 MGA 里只是把版本標(biāo)記成死真正回收要靠 sweep。而 sweep 能推進(jìn)的前提是 OAT 能往前走只要有一個(gè)長(zhǎng)事務(wù)不提交回收立刻停擺。第二個(gè)原因是 sweep 本身是協(xié)作式的它和正常業(yè)務(wù)搶資源業(yè)務(wù)壓力大時(shí)會(huì)一直退讓。解決先查 OIT 和 OAT 的差距定位長(zhǎng)事務(wù)再?zèng)Q定是手動(dòng) sweep 還是干脆做一次備份還原。# 看水位線差距差幾十萬說明有長(zhǎng)事務(wù) gstat -h /opt/data/demo.gdb | grep -i oldest # 手動(dòng)觸發(fā)回收最好放在業(yè)務(wù)低峰 gfix -sweep /opt/data/demo.gdb -user SYSDBA -password masterkey # 徹底方案?jìng)浞葸€原空間能真正收回來 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只回收頁(yè)內(nèi)空間文件大小不會(huì)縮只有備份還原才會(huì)重寫整個(gè)文件、把空間真正交還給文件系統(tǒng)。所以計(jì)劃里應(yīng)該把「定期備份還原」當(dāng)成運(yùn)維動(dòng)作而不是只當(dāng)災(zāi)備。5.3 Dialect 混用DATE 變成 TIMESTAMP雙引號(hào)變成標(biāo)識(shí)符現(xiàn)象客戶端查出來的日期字段多出了時(shí)間部分一條WHERE NAME ABC忽然報(bào)「列名不明確」NUMERIC(18,2)的金額在小數(shù)位上丟精度。原因這是 dialect 1 和 dialect 3 的語(yǔ)義差異。dialect 1 里DATE實(shí)際是帶時(shí)間的 TIMESTAMP雙引號(hào)包起來的是本文還有配套的精品資源點(diǎn)擊獲取
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
亚洲国产成人精品999| 久久伊人最新网址视频| 91无人区卡一卡二卡三乱码入口最新版:能让用户有更多选择的选择-经典说说-爱 | 激情看片网站| 校园春色AV天堂| 国产精品女同| 久久av一级av少妇av高潮 | 天天综合网~91| 中文字幕在线观看第二页| 思思热国产在线视频| 超碰9 7女人| 日本福利社| 校园春色综合网| 欧亚日韩三区| 亚洲av强奸乱伦| 日本综合色图| 国产精品久久久久久久久久二区三区| 免费毛片在线播放| 日本孕妇一区二区视频操逼免费看| 天天干人妻| 婷婷久久久| 午夜亚洲国产理论秋霞| 欧美精品激情| 欧美亚洲涩涩| 水野优香在线观看| 乱论91| 欧美翘臀视频网站一区二区三区| 人妻社区男人天堂| 99热这里只有精品99| 中文字幕美女91| 午夜传煤十二区精品| 少妇一区二区三区在线观看| 国产AV线| 亚洲 暴爽 AV人人爽日日碰| 久久婷婷成人综合色怡春院| 色情综合| 久久97超碰| 99自拍B亚洲| 国产又黄又粗的视频| 婷婷五月天无码| 日韩av影片在线观看| 91成人亚洲色图| 黑操B| 中文字幕美女91| 欧美国产有色电影| 五月天婷精品激情| 蜜臀视频网站| 日本淫穴在线| 五月丁香狠狠爱| 伊人国产成人av网站| 青青久操| 激情干在线| 日韩啪啪视频| 欧美aⅴ99久久黑人专区| 91强热人妻| 97在线免费| 人妻激情视频| 狠狠操官网| 国产网站在线播放| 91在线超高颜值国产| 国产熟码AV| 国产农村妇女精品1区二区| 国产一区二区a毛片| 黑人综合网| 伊人久久大香大香线蕉中文 | 久久人妻97久久久久久久| 天天操天天谢| 九九九免费视频| 大香蕉日亚洲日本亚大| 亚洲欧美日韩制服另类| 国产美女91视频| 这里只有精品久久| 色色色热| 欧美激情综合色综合啪啪五月| 人干人人人操人人摸| 另类图片综合| 国产91精品在线免费| 成人青青草原伊人| 久久久九| 97久久精品不卡| 黑人综合色| 色97综合中文字幕| 色哟哟AV| 在线色资源| 中文字幕精品亚洲熟女| 超碰无码五月97| 久欲AV| 日日干夜夜欢| 嫩草黄页| 亚洲成人在线乱码色午夜| WWW美腿丝袜香蕉中文| 操淫穴亚洲五月丁香| 91丝袜激情在线| 久久九精品| 伊人少妇久久久| 一本久久久精品| 91肉丝| 美日韩男女操屄视频| 性夜影院爽黄A爽免费动漫| 免费人成毛片乱码| 中国一级操逼视频| 91在线无码精品秘 软件| 日本精品第一视频在'| 亚洲图片偷拍视频区| 人妻熟女字幕一区二区| 九热大香蕉| 高潮综合网| 亚洲AV永久无码精品成人调教| 激情文学亚洲| 超碰在线一区二区| 精品少妇人妻av久久免费| 日本肉体xxxx裸交| 久操高青| 91伊人大香蕉| 97色欧洲| 日本成人免费一区二区三区| 在线视频免费播放一区| 天天躁日日躁AAAXX| 色嘟嘟人妻天堂网| 久久6热精品99视频| 9久久精品| 免费av在线播放二区| 青青久久手机线视频| 久久五月天婷婷| 久久欧洲| 91亚洲人| 久久久久久人妻一区精品色欧美| 亚洲精品中文字幕一区在线视频 | 国产欧美日产一区二区三区 - 国产欧美日| 国产白丝网站| 婷婷丁香五月天综合东京热| 啊啊啊好爽快点啊啊啊嗯嗯| 99蜜桃臀久久久欧美精品网站| 奶水 人妻 哺乳 在线| 人妻一区二区三区四区视频| 99国产在线 精品 视频| 色99色| 高清肉丝中文无码| 加勒比海人人操超碰在线| 精品亚洲一区在线观看| 717影院理论午夜伦八戒| 婷婷五月天久久精品视频一区二区三区| 人妻免费观看| 国产一国产一级毛片古装| 欧美日韩国产另类综合| www.久久99| 国产人妻一区二区三区欧美毛片| 色盈盈影院| 51一区二区三区| 色婷婷亚洲婷婷| 日韩中文字幕国产| 亚洲色棕合| 国产综合久久久麻桃个| av无线看| 久久久久久亚洲精品中文字幕人妻| 国产精品粉嫩福利在线| 欧美综合娱乐久久| 青娱乐av在线| 亚洲熟女一区二区| 小情侣高清国产在线视频| 蜜臀在线免费观看在线免费观看| 91宗合网| 五月婷久久| 九99久久| 亚洲精品亚洲人成在线麻豆| 亚洲综合性感在线| а√天堂资源官网在线资源| 日本天天吊| 亚洲交换| 午夜福利免费福利视频| 97久久精品亚洲中六字幕| 超碰97 线线 在现| 91N欧美| 久久啊啊啊| 国模吧 一区二区三区| 免费99精品国产自在在线| 日韩欧美成人性爱在线| 天天操人人操骚逼网站| 亚洲激情综合另类男同| 伦在线97| 亚洲高清无码AAA久久久精品| 97视频新免费| 福利视频一区二区微拍| 人妻美腿丝袜日韩| 一区二区三区精品久久| 96国产精品| 日本在线一二| 密臀视频三区免费网站| 久九九九九九九热| 92性色国产午夜福利在线661| 久久久影院| 香蕉国产精品麻豆亚洲欧美日韩| 欧美中文字幕一区 | 丁香五月天激情综合| 欧美色图99| 五月天婷婷色色| 理论久久婷婷网8| 99精品在线观看| 97久久国产| 东北黄色电影| 久艾草在线精品视频在线观看| 日本精品88888888| 夜夜天天噜狠狠爱2021| 欧美色97| 六月婷激情福利天堂69| 2023天天操夜夜操| 亚洲一区制服诱惑| 亚洲av乱伦色图网站| 无码粉嫩白虎一线天b区| h在线看免费版在线看| 我想要 啊 啊 啊| 狠插 制服 自拍| av日韩在线观看电影| 亚洲 欧美 色图| 亚洲一卡二卡在线免费| 无遮挡男女激烈动态图| 亚码人妻| 久久香蕉网| 尤物视频一区| 日韩97超碰中文字幕| 99久久精品无码一区二区毛片免费| 狠狠操一区二区| 国产精品久久伊人| 伊人影院日本| 国产成人天堂| 久久怡红院| 人人操人人爽人人操人人| 都市激情人妻一区二区青青操视频| 亚洲操人| 免费观看国产不卡av| 91丝袜人妻| 国产精品色哟哟| 5278欧美一区二区三区| 久久 国产 无码| 99操视频| 日韩午夜国产| 国产高清成人mv在线观看| 五月天婷婷综合网| av亚洲天堂资源网站| 男女啪啪啪18禁网站| 久久精品中文字幕女同| 精品91摸| 最新国产亚洲精品精品国产亚洲综合| 久久9久| 天天操天天日青青草超碰av| 欧美综合自拍成人自拍第二十页| 国产浮力影院第1页| 国产乱伦亚洲色图高清无码| 91天堂| 亚洲人久久久网| 国产一区二区三区中文字幕| 欧美性生活综合| 色色色色日本| 精品一区二区国产日韩| 97在线免费看视频| 天天操熟妇| AV天堂男人的天堂| 花野真衣| 免费一级视频特黄色大片| 午夜120视频在线观看| 7777奇米影视久久| 亚洲精品九九九| 九色 蝌蚪 熟女自 | 国产日本久久免费精品| 欧美黄色大片在线观看| 日熟女| 亚洲国产美女久久久久 | 毛片一区二区| 日韩在线国产字幕| 91熟女视频| 九九草| 成人一二三区| 色狠狠一区二区三区香蕉| 亚洲情色 无码专区| 国产乱青青草久久| ai欧美亚洲小说| 日本少妇va7777| 欧美熟女激情| 97综合国产精品高潮久久| 久久啊哟| 精品久久久久黄少妇| 9热9热综合网| 亚洲淫乱骚妇AV| 久久久久久久久久久久黄色| 伊人国产视频| 亚洲中文电影| 国产av热热色| 另类老少妇| 超碰视97中文| 精品人妻一区二区三区不卡断| 夜夜嗨一区| 亚洲熟女乱综合一区二区在线-...亚洲国产日韩欧美一区二区三区,久久久久久精 | 婷婷五月色| 色欲天天综合网| 九九香蕉网| 亚洲日本加勒比在线| 人人乐大香蕉| 欧美激情 日韩精品| 亚洲天堂自拍| SUV一区二区在线看| 1.igao73.com 加入收藏 免费专区 国产精品 中文字幕 日韩精品 欧美精品 精彩 | 国产女人高潮视频| 久久久久久久久久久久黄色| 久久精品老司| 亚洲91大片| 97国产中文| 欧美一二三| 先锋激情∨在线视频播放| 国内毛片婷婷六月色| 温婉少妇玩3p| 欧美极品女人的天堂| 真实高潮91| 91综合国产精品| 精品二区三四区五电影| 97国产精品一区| 东京热一区二区中文字幕| 强奸乱伦AV一天堂网| 中文字幕乱码人妻二区三区| 综合欧美日本三级| 91蜜臀熟女| 加勒比伊人综合| 99国产精品在线观看| 亚洲成a人v欧美综合天堂下载| Av手机版天堂网| 亚州欧美在线| 天天干天天日天天射黄色| 国产一级作爱毛片| 色蜜AV| 天美传媒Av在线| 综合情欲网| 中文一区二区三区影院| 黄色视频60分钟| 99热欧美| 天堂精品小草| 91久久国产精品| 98人妻精品一区二区色欲| 午夜电影在线观看无码专区| 婷婷综合网站| 自拍欧美| 少妇高潮九九九九| 国语精品内射在线观看| 一区,二区,三区网站| 精品少妇一区二区三区| 中国熟女老妇仑乱一区二区三区| www.av在线观看| 国产亚卅97| 久久精品电影在线| 在线观看成人性爱免费小视频| 欧美成va视频网站| 精品中文日韩字幕视频| 97视频在线| 在线视频日韩欧美国产| 禁十八久久| 精品69网| 乱伦AVxx| 亚欧美综合网。| 欧美成年人性爱视频免费观看| 狠狠爱综合网| 国产熟码AV| 激情无码日韩| 99在线观看无大码| 97爱爱| 99热婷婷| 我要色综合网站| 在线视频日韩欧美国产| 青青伊人久久| 中文字幕黄片在线| 九久9热| 玖草在线视频| 99热97| 日韩无限资源| 六月婷婷五月丁香| 久久啊啊| 欧美操人| 色色97爱| 国产男女无套视频免费观看| 欧美一品道| 玖玖玖玖精品国产剧情| 91成人久久| 欧美人妻久久精品二区三区| 麻豆性爱视频在线播放| 久久久少妇| 久久久久骚| 丰满人妻一区二区三区免费| 精品-91人妻子系列| 国内外激情在线| 亚洲啪啪性视频| 啊啊在线| 99性爱视频| 日本Suv精品一区二区| 久久人妻丝袜一区二区三| 肥佬影院91| 开心激情站| 欧美色涩| 久久久9品一区二区三区| 91东北熟女| 亚洲熟女乱色| 国产精品女生av| 97久久精品不卡| 入口操逼网站| 天啪| 亚洲av热热色| 国产 亚洲 丝袜 制服| 欧美热图99| 欧美日韩性感| 日韩性爱视频在线免费观看| 内射黑丝袜| 大香蕉520| 性色亚洲| 婷婷久草| 亚洲精品视频二区| 成人av在线播放| AV中文字幕剧情1区2区3| 亚洲偷拍自拍在线视频| 蜜臀99久久精品久久久懂爱| 日韩精品人妻中文字幕久久久| 秋霞曰韩R级| 一区二区三区不卡视频| 97久久久精品| 精品黑人一区二区| 91观看 国产白丝| 99999精品成人| 国产亚洲精品av一区| 9 9无尺码天堂网| 国产99999久久精品| 免费看片黄| 艾草av| BBBBB97COM| 天天射天天| 97色插| 免费一级a毛片久久久久久鸭绿欲| 欧美日韩97在线| 老色69| 乱伦3P视频| 91久久青青草原精品| 久久久久9| 色噜噜狠狠色综无码久久合欧美| 国产最新小视频在线播放下载| 国语精品av| 成人精品视频| 婷婷五月天小说| 嫩草在线视频| 91精品导航| 亚洲熟久久| 国产久久久9999| 久草大| 俄罗斯一区二区视频在线观看 | 禁片 高清 在线观看视频网站| 日韩AV无码中文一区二区| 欧美99999| 极品出轨视频网站| 先锋音影AV| 国模限制级电影| 欧美性爱一级操| 色欲无码人妻日韩欧美精品| 屁股久久久久久久久久| 亚洲欧美视| 1区2区3区中文字幕日韩| 麻豆久久久一区二区| 免费a在线播放v| 韩国手机不卡无码三级视频| 麻豆成人影音在线| 国产美女91| 欧美高潮| 加勒比性爱成人在线| 色天堂综合| 三上制服丝AV| 97视频观看| 久久侵犯人妻爽爽爽| 99色在线| 狠狠久久亚洲欧美专区| 免费看欧美美女黄色大片| 亚洲熟女性高潮久久久| 亚洲欧美国产中文视频| 97超碰久久| 亚洲欧美综合图片| 99热欧美| 亚洲日韩狠狠撸视频| 伊人嫩草| 中文字幕免费在线观看| 国产吹潮女在线观看| 日本久久999| 少妇三P| 欧洲Au麻豆| 国产日本熟女顶级一区二区三区视频| 久久精品人体| 99999精品视频| 超碰亚洲欧美日韩无| 天天日少妇逼AV| 欧洲综合视频| 国产精品制服丝袜中文字幕日韩一区二区三区 | 操逼逼中文字幕| 高清无码 国产精品| 乱伦av.com| 97摸视频| 亚洲中文字幕av| 东京热激情视频一二三区| 久久婷婷五月天| 久久色激情一区二区三区| 欧美亚综合色图| 久操操| 中文字幕第二页| 精品玖九九久| 欧美高清色| 波多野结衣之双飞调教在线播放| 日日干天天干夜夜爽| 久操凹凸视频| 婷婷六月色| 婷婷三区| 久久九操在线观看| 欧洲综合色| 日本成人免费一区二区三区| 色就色综合| 久久老子无码午夜伦不卡| 91亚·色| 加勒比av官网在线| 天天综合,91入口| 丝袜亚洲综合| 日韩A优精品在线观看| 99热这里只有精品9| 伊人青青一区成人视频在线观看区| 二对二中文字幕。| 999九九九九国产动| 熟女精品日韩一区二区三区| 欧美一区二区三区入口| 欧美国产日韩高清在线| 亚洲精品蜜桃久久久一区二区三区| 成人色女网| 日本熟妇色熟妇在线视频播放| 国产三级中文字幕粉嫩| 亚洲综合91| 先锋色眉乱伦资源| 一品道视频一区二区三区| 久久久久网站-538在线视频-欧美永久乱码| 久久午夜伦| 国产精品4p在线观看| 天天看天天日天天操| 国产精品分类在线观看| 久久91视频| 九九综合久久| 五月天婷婷久久| 久久久久久午夜男人的天堂| 国产少妇与亚洲av| 熟妇女人妻呻吟久久AV| 九一综合精品视品av| 四虎精品一区| 这里只有精品97| 激情五月天中文字幕色| 高清在线不卡一区二区 视频| 老熟女乱子伦中文字幕一区二区 | 青青草大香蕉视频| 91麻豆天美传媒在线| 久久久久亚洲熟妇熟女| 岛国片国产成人亚洲播放| 婷婷亚洲综合| 亚洲美女精品| 加勒比少妇AV婷婷六月天超碰超碰| 日日玩天天干| 热思思免费视频| 日本国产欧美高清在线| 日本美女性生活久久久久久久| 综合久欧洲| 蜜乳av一区二区三区| 夜夜精品视频| 人干人人人操人人摸| 亚洲男人的天堂亚洲| 欧美se亚洲| 在线电影亚洲色图| 久久性爱视频免费看| 欧美亚洲另类在线蜜桃| 日韩精品一区二区三区四虎影视| 日韩精品操少妇| 欧美日韩久久精品爱爱| 天天操夜夜操狠很操| 久久久婷| 天天综合网AV91| 国产精品天堂| 一个人免费HD91视频| 中文字幕一区二区三区蜜臀| 999熟女精品| 99999国产精品| 插日本熟女视频| 黑人天8A∨高清网站| 91 偷| 亚洲一曲日韩精品| 丝袜熟女2P| 97资源站国产精品| 欧美91视频| juliaann精品熟女一区| 5252色欧美在线男人的天堂| 亚洲图片日本AⅤ欧美在线| 精品一区二区三区蜜桃臀赵总 | 亚洲高清欧美总合| 91人妻做a观看视频| 欧美最婬乱婬爆婬性视频| 久久久久极品| 精品毛片av一区二区| 日本韩国一本产品小视频日本韩国一本产品久久久产品小视频日本韩国一本产品久 | 99精品热| 久热这里只有精品9| 国产尤物AV尤物在线观看不卡| 精品一区二区麻豆| 岛国1区2区3区在线观看| 男人天堂久久精品| 欧美综合色| 在线观看中文av字幕| 伦在线97| 国产精品不卡高清在线观看| 日本在线视频导航| 色婷婷日韩精品一区二区三区 | 夜夜嗨视频| 激情丁香五月| 亚洲男人在线观看天堂| 99久在线精品99re8| 女人天堂网| japan日本高清乱xxxx| 60秒免费小视频| 一级做a爰片久久毛片图片| 丝袜综合色图| 国产日韩色综合| 艳尻美人妻| 久久精品欧美一区二区三区不卡| 久久免费看高潮毛片韩国| 操逼A∨| 91啪9色| 亚洲 无码 偷拍| 久久做97| 日韩综合无码色欲vv| 亚洲精品一卡二卡三卡福利视频网站 | 性爱乱伦网址| 97精品人妻一二三四| 国产女人91精品嗷嗷嗷嗷| 国产精品另类一区大香蕉| 日本人妻A片成人免费看片| JuliaAnnXXX888| 六月婷婷五月丁香| 少妇综合网| 青青草伊人久久| 成人麻豆av电影网站| 四虎在线观看网站| 超碰在线成人| 九九九九热| 国产五码丝袜屁眼| 国产精品一区二区三区,亚洲综合| 国产精品在线一区二区| 中文字幕在线日亚洲9| 久久粉色| 女一区二区| 国产一区二区三区白丝| 国产自产22区| 超碰爽人妻熟女Av| 亚洲色图日韩精品| 国产农村妇女精品| 麻豆精品三区视频| 少妇滛荡视频| 69av一区二区三区| 热热色AV| 67194无码不卡| 国产精品毛片?v一区二区三区| 91欧美巨乳| 青青色综合| 园内精品自拍视频在线播放| 9精品久久久久| 日本999精品| 老色69| 人人射人人操人人摸| 一级黄色性爱裸体视频| 4tube欧美女厕所| 国产九区| 97干在线看| 99综合网| 激情啪啪拍91| 377p欧洲日本亚洲大胆| 国产精品久久| 欧美日韩亚洲少妇寂寞影院正在播放| 啊啊啊啊操死我了| 奸色色 男人天堂 天天射| 秋霞曰韩R级| 少妇啪啪自拍| 精品人妻视频入口| 1240青青草一区二区三区视频天爱| 久欲AV| 亚洲揄拍网| 91伊人影视综合| 欧美美女自慰一区二区三区| 免费一级毛片在线视频观看| 久久这里是精品| 日韩高清黄片| 狠狠操,使劲操| 青青草中文字幕| 精品久久久久综合无码| 午夜福利 成人 91| 伊人嫩草| 亚洲骚男同com| 亚州欧美综合| 综合九九| 中文字幕精品专区搜索结果91| 和协影院中文字幕三区| 大黄片做爱的大的| 亚洲影视高清三级-草1024榴社区入口-品爱AV| 人妻激情另类| 正在播放:深夜激情大战,自带黑丝袜全力输出骚穴 | 99re在线| 91欧美情色| 嫩草伊人久久精品| 久久久久亚洲熟妇熟女| 亚洲精品国产精品乱码不卡| av日韩在线观看电影| 精品欧美乱码久| 欧美色图私拍91| 很很热性爱视频| 欧美色女人| 国产久久男人天堂| 青青操青娱乐| 亚洲欧美自拍偷拍| 高清孕妇孕交 交| 日韩激情视频| 91Chinese在线| 欧美一区二区三区互相| 亚洲色棕合| 欧美色图片91| 国产无套粉嫩白浆在| 永久免费观看的毛片的网站| 中国熟女91| 亚洲18禁| 女同性恋久久| 思思热在线视频免费| 激情文学小说一区二区| 91丝袜美女| 欧美很很操视频| se吧提供91精品国产91久久久久久 | 高跟丝袜AV专区国产| 我想要 啊 啊 啊| 加勒比伊人影院| 亚洲天堂性爱| 国产又色又爽又舒服的三级视频| 99re免费视频精品全部| 72av视频| 日本狠狠干| 日韩人妻制服丝袜av| 人妻久久一区二区三区 | 日韩一区二区高清在线观看的| 中文字幕欧美丝袜07资源| 色婷婷一区二区三区久久午夜 | 美腿丝袜偷拍亚洲欧美| 五月激情在线| 国产真实野战在线视频| 日韩三级在线观看网站| 欧美男人的天堂| 久久久久密臀视频| 9久久9综合| 五月婷婷色色| a级成人毛片免费视频高清| 日本在线观看网址| 超碰碰97资源站| wuyechaopeng| 白 大 人妻 区 在线| 欧美成人9797| 五月丁香婷婷综合网| 成人性爱视频在线看| 日韩中文字墓| 久久久夜夜夜| 欧美日韩不卡传媒| 嗯嗯啊啊的视频| 精品小视频在线| 久九九九九九九热| 人妻激情偷乱视频一区二区三区| 亚洲一区二区性爱电影| 国产一区二区三区视频在线看| 懂色Av| 91色宗合| a啊啊啊啊啊啊啊啊一区二区| 2019午夜福利视频| 性生活无遮挡纯毛片在线看| 青青草在线成人视频| 婷婷色在线| 青青草丝袜在线视频| av绯色| 欧美激情性爱视频网站| 精品欧美不卡在线播放| 超碰97 线线 在现| 超碰超碰超碰超碰的大鸡吧操黑丝袜| 99热99re6国产在线播放| 日韩久久艹| 99九九久久| 超碰性爱97| 日本一区二区三区精品| 亚洲 欧美 91| 麻豆人妻精品一区二区| www.色综合| 国产乱伦性爱AV| 在线观看精品国产免费| 亚洲精品第一| 久久久久国产精品喷潮免费观看臀 | 欧美亚洲第一页| 免费看片黄| 夜夜草我| 91在线精品一区二区三区| 97色碰| 神马久久久久久| 97色碰| 热99这里有精品综合久久| 校园春色 亚洲| 九九九只有精品| 无码人妻毛片丰满熟妇精品区| 国产热av| 好爽要喷了| 亚洲素人综合| 中文字幕国产| 欧美综合天堂| 国产熟女无套内射| 超碰在线一区二区三区| 色欧美综合| 国产精品久久久 | 亚洲色图伊人网| 狠狠爱AV| 亚洲不卡一| 男生通女生屁股| 国产sv美女内射| 91精品人妻一区二区三区蜜桃| 无码78| 日本一级特级毛片视频| 色色毛片| 国产成人99久久亚洲综合| 自怕偷自怕亚洲精品| 日韩亚洲精品一区二区| 91人妻素女| 一个人免费HD91视频| 日韩性爱网址| 精品人妻伦一二三区久久| 丝袜美腿诱惑亚洲欧美视频在线观看| 色噜噜综合在线| 嗯嗯啊啊啊好舒服| 啊啊啊不要啊啊受不了了视频在线| 久操在97| 超碰综合97在线| 精品美女少妇一区二区| 久久国产乱子伦精品免费女,网站| 天天澡天天爽日日AV| 呦呦影院| 99精品视频在线观看免费| 久久国内| 99热这里只有精品99| 色av中文字| 日韩三级在线观看mp4| 2026国产精品视频| avav青青草久久夜| 精品999999| 国产家庭乱伦性爱视频| 成人午夜小视频手机在线看| www九九热| 日本亚洲vr欧美不卡高清专区| 日韩99神马视频播放| 成人欧美日超碰| 九九九不卡| 蜜臀久久99精品久久久| 超碰国产精品无码| 中文字幕狠狠玩| 亚洲丝袜二区| www.99热在线只有精品| 日韩精品影视| 人妻天堂网| 翔田千里无码中出中文字幕| 91在线精品| 一区二区三区在线资源| 美女啪欧美一区| 不卡六六在线91| 超碰在线一区| 天天操天天干一区二区 | 欧美另类天堂| 一级二级在线观看| 亚洲制服aⅴ中文字幕| 伊人久久艹| 久久伊人网视频一区二区三区 | 婷婷中文网| 91亚·色| 国产精品午夜福利视频| 91中文字幕制服丝袜免费视频| 亚洲成人黄色在线观看| 国产av美女被艹的乱叫| 激情自拍 校园春色| 伊人精品视频| 欧美亚州综合网图片| 狠狠久久手机视频精品| 国产树林里野战在线看| 九九热精品免费视频| 粉嫩小泬久久久一区二区| 四虎在线视频| 国产亚洲精品无码三区| 五月丁香激情综合网| 75大香蕉| 国产美女高潮视频| 久久精品国产亚洲妲己影视| 亚洲AV成人无码久久精品播放| 久久久com| 97国产综合欧美| 麻豆三极片| 爱av免费| 欧美一区二区三区大综合| 五月天人妻综合| 无码高清操逼| 毛片电影一区二区三区| 久久欧洲| 人妻精品一区二区| 精品人妻av在线播放| 蜜臀av在线播放一区二区三区| julia中文字幕在线观看| 欧美在线啊啊| 亚洲欧美在线观看2021| 成年男人的天堂| 超碰97久| 亚洲囯产精品女人久久久| 最新欧美色网| 亚洲中文字幕一区| 欧美精品23| 先锋精品av色鲁| 超碰到97情色| 亚洲国产成人7777| 国产精品色色| 操老熟女AV| 香蕉黄色一级视频| 亚州精品一区二区三区香中文字幕在线| 亚洲综合射| 午夜福利国产欧美日韩夜夜| 婷婷五月av| 97精品在线| 操B视频日韩无码| 精品视频久久久久九九九九9999| 久久色AV线| 欧美大香蕉久| 欧美图片偷拍| 97超碰影音| 国产高清免费不卡av| 亚州操操穴网| 亚欧美综合网| 国产精选三级在线观看| 天天综合网1| 国产欧美在线观看免费观看| 色吧五月| 天操天操夜操夜月操月年年操操| 日韩美女啪啪一区| 偷拍欧美激情| 人人妻人人爽一区二区三区| 午夜寂寞欧美| 欧美人妻中出| 一级AV性爱| 久久久久久久久久久久久久久性生活视频 | 玖玖大干人妻| 韩国成人精品久久久免费看| 一区中文字幕二区日韩| 亚洲资源站| 亚洲天堂99| 久久人体一区二区| 狠狠操夜夜| 青青草伊人久久| 九九综合九九综合| 欧美毛片在线网| 欧美激情 亚洲色图| 久久久精品视频免费观看| 福利天堂| 国产二区视频在线观看电影| 黄色大片一区二区密桃丝袜| 亚洲黄色| 在线另类| 好湿好紧视频| 亚洲精品a人片在线观看视| 综合av影片| 天天弄天天操| 10000部十八禁看电影| 亚洲欧美日韩免费观看| 色蜜AV| 中文字幕乱亚洲美女精品一区| 在线播放成人网站| 欧美97av| 久久曰曰| 亚洲情色 自拍| 国产精品老师| 国产精品午夜福利| 欧美一区二区亚洲天堂| 超碰9 7女人| 激情啪啪拍91| 欧美特黄视频网站| 国产无码一二三区| 国产97综合| 操逼网站地址| 美女十八禁| 99人人干| 天天夜夜rb| www.色婷婷| 久久啊啊啊| av优播| 秋霞午夜成人福利片片| 久久国色天香香蕉| 男女性无套 免费九一| 射丝袜高跟鞋99| 少妇一级无码精品| 欧美 综合| 中文字幕人成乱码熟女香港| 玖玖资源中文字幕制服丝袜| 秋霞网—男女啪啪亚洲免费体验区 | 亚洲色电影在线| 中文字幕精品一区二区精品| 国产精品视频在线观看| 天综合网| 日本操逼视频在线| 伊人久久大香蕉线AV五月天| 操婢日韩| 强奸熟女一区二区三区| 一级特级aaaa毛片免费观看| 久男人久久| av资源在线观看少妇| 欧美另类丝袜熟女| 啊…啊…操我用力操我 | 国产妇女精品视频青青草| 久久夜黄色无码A级大片| 9ⅰ久久久天天| 久久伊人大香蕉| 亚洲久久久| 99自拍B亚洲 | 亚洲男人天堂网久久| 国产精品久久久无码aV去| 亚洲淫色网中文| 国产三级中文有码在线视频| 热热色综合网| 婷婷久久综合| 张柏芝国产一区在线观看| 久久中文色图| 男人高清无码一区二区| 久草毛片| 国产11页| 免费看黄片现成| 制服中出中文人人精品| 人妻精品视频一区二区| 伊人麻豆传媒| 亚洲色图加勒比| 日韩Va亚洲va欧美Ⅴa久久| 国产又长又大又粗的视频| 五月天婷婷久久| 国产乱伦视频污| 97一区二区三区视频| 精品亚洲国产成人AV制服丝袜| 后入国产| 欧美曰韩国产精品| 天天日天天干天天整| 青青草好吊色| 久久久国产精品人妻丝袜| 国产极品美女高潮无套在线观看| 欧美亚州综合网图片| 成人精品电影| 无码操逼网| 日韩有码中文字幕女同性恋| 澳门成人网站久国产日韩| 探花一区二区三| 超碰色大香蕉| 国产精品制服丝袜中文字幕日韩一区二区三区| 亚欧成人综合影院| 欧美激情 亚洲色图| 在线人妻熟女一区二区三区四区五区| 中文字幕一区电影在线观看| 0755午夜福利视频| 色哟哟-国产专区| 播播亚洲小说亚洲| 欧美懂色综合网| 美日韩在线不卡人妻| 一区二区三区视频| 日本黄大片在线观看视频| 九热超碰| 丰满少妇一区二区三区专区| 久久毛卡| 男人的天堂2018| 久久久久久久久久久久欧美日| 久久99操天天日| 性久久| 久久啊啊啊| 制服诱惑亚洲一区二区三区在线观看| 天天综合色| 交换娇妻呻吟声不停中文字幕| 96超碰网| 熟女欧美日韩综合婷婷| 婷婷丁香成人| 精品久久久久久无码| 加勒比无码毛片| 国产一级久久久| 国产精品成人无码av| 亚洲国产成人精品久久久国产成人一区二区 | 国产精品动态一区二区三区四四| 麻豆天美国美国产| 大香蕉久| 国产v亚洲v日韩v欧美v片另类| 天天综合麻豆视频| 91肏屄网| 亚洲aV性爱| 以及麻豆国产入口在线观看免费| 大香蕉手机在线| 热久久九九热| 999久久久精品国产| 99精品视频在线观看免费| 亚洲国产精品成人久久蜜臀| 999熟女精品| 九月AV| 婷婷五月天综合网| 国产一级不卡在线观看| 欧美日韩中文视频播放| 亚洲欧美综合网站| 中文字幕乱碼在线| AA丁香综合激情| 国产精品久久久久久久毛片1| 亚洲无992tv| 亚洲 欧美 日韩另类 麻豆| 在线视频五十市| 欧亚综合一卡二卡中文字幕| www国产天美久久久| 日韩av在线精品观看| 全国男人天堂网| 高潮综合网| 亚洲精品蜜桃久久久一区二区三区| 亚洲国产欧美中文永久| 亚洲激情综合另类男同| 天天综合~91| 精品熟妇视频一区二区| 欧美国产成人在线| 四虎 精品 WWW| a网站免费观看| 屁屁影院一区二区三区国产| 韩日性爱av| 91美乳| 成人 日韩欧美一区| 亚洲国产麻豆一区二区三区| 天天射天天操天天干天天吃2018| 久草看看看| 亚洲美女黄色| 人妻 欧美 中文| julia在线观看久久| 色色亚洲| 操婷婷逼| 91快色色色色色| 久久无码一区二区二三区性色| 久久久久久久性爱| 色97欧美| 青青草中日韩在线| 使劲用力艹少妇视频一区二区| 用力操死我| 欧美黑人性猛交91| 99这里有精品| 久草视频分类在线| 乱伦AVxx| 能在线播放的国产三级| 欧美中文字幕日韩在线| 日韩欧美加勒比| 国产路线专区| 嗯嗯不要 视频| 久热这里| 九久久精品| 亚州图片第一页| 欧美亚洲国产日本在线,久久精品国产| 亚洲宗合电影| 国产人伦精品一区二区三区| 大香蕉97久久| 成人夜夜爽| 这里有精品|