亚洲有码Av一区二区三区_国产高清啪啪免费视频_69色视频国产_国产成人人人爆出白浆_国产精品自在线拍国_一本久久伊人热热精品无码_午夜性刺激在线看免费带字幕_助力高品质欧美狂喷水_亚洲精品日韩无码_精品无码一区二区三区蜜臀_麻豆高清国产AV_熟妇人素无码中文字幕_亚洲a级片在线观看_国产欧美日韩三区_99国产成人高清在线观看

ARTICLE DETAIL

資訊詳情

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

數(shù)據(jù)庫(kù)實(shí)驗(yàn)四實(shí)戰(zhàn):視圖、索引、存儲(chǔ)過(guò)程、事務(wù)與觸發(fā)器全解析

數(shù)據(jù)庫(kù)實(shí)驗(yàn)四實(shí)戰(zhàn):視圖、索引、存儲(chǔ)過(guò)程、事務(wù)與觸發(fā)器全解析 數(shù)據(jù)庫(kù)系統(tǒng)這門課做實(shí)驗(yàn)的心態(tài)往往分兩個(gè)階段。前三次實(shí)驗(yàn)大家基本都在跟 SQL 語(yǔ)法纏斗——建表、增刪改查、寫子查詢跑出正確結(jié)果就很有成就感。但到了實(shí)驗(yàn)四味道突然變了它不再只問(wèn)你“這條查詢?cè)趺磳憽倍情_(kāi)始問(wèn)“這條查詢憑什么快”“這筆業(yè)務(wù)憑什么不會(huì)出錯(cuò)”“這個(gè)規(guī)則憑什么自動(dòng)執(zhí)行”。說(shuō)白了實(shí)驗(yàn)四要把你的視野從“寫對(duì)”拉到“寫好”從單條語(yǔ)句拉到數(shù)據(jù)庫(kù)運(yùn)行機(jī)制的整體理解。這篇文章我就拿某高校軟件學(xué)院數(shù)據(jù)庫(kù)系統(tǒng)實(shí)驗(yàn)四的完整過(guò)程來(lái)講把視圖、索引、存儲(chǔ)過(guò)程、事務(wù)和觸發(fā)器這五個(gè)點(diǎn)串進(jìn)一條業(yè)務(wù)線里逐步拆解每一步為什么要這么做、怎么做才能得分、實(shí)驗(yàn)室里最容易翻車的地方在哪。正在啃這個(gè)實(shí)驗(yàn)的同學(xué)可以直接照做想補(bǔ)短板或者以后準(zhǔn)備做助教的人也可以把它當(dāng)一份現(xiàn)成的備課筆記。1. 實(shí)驗(yàn)四到底在考什么需求拆解與整體思路1.1 從課程主線看實(shí)驗(yàn)四的定位數(shù)據(jù)庫(kù)系統(tǒng)的實(shí)驗(yàn)安排一般有一條很清晰的遞進(jìn)線。實(shí)驗(yàn)一建庫(kù)建表練的是 DDL核心是熟悉字段類型、主鍵外鍵約束實(shí)驗(yàn)二做增刪改查練的是 DML核心是單表的 CURD實(shí)驗(yàn)三開(kāi)始上難度多表連接、子查詢、聚合函數(shù)核心是“把復(fù)雜查詢寫出來(lái)”到了實(shí)驗(yàn)四重點(diǎn)就變成了“把數(shù)據(jù)庫(kù)用明白”。這里的“用明白”包含幾個(gè)層面。第一能不能創(chuàng)建視圖來(lái)簡(jiǎn)化高頻查詢第二能不能用索引讓查詢真正變快而不是停留在“理論上該快”第三能不能用存儲(chǔ)過(guò)程把多步業(yè)務(wù)操作打包成一個(gè)可調(diào)用的單元第四能不能用事務(wù)保證數(shù)據(jù)在并發(fā)和出錯(cuò)環(huán)境下依然一致第五能不能用觸發(fā)器實(shí)現(xiàn)數(shù)據(jù)的自動(dòng)約束和審計(jì)。這五個(gè)點(diǎn)都不是新語(yǔ)法那么簡(jiǎn)單它們的共同特征是每一個(gè)都是在回答“為什么”。我見(jiàn)過(guò)不少同學(xué)實(shí)驗(yàn)四做得稀里糊涂代碼都是從網(wǎng)上抄來(lái)的運(yùn)行能出結(jié)果就提交了。老師驗(yàn)收時(shí)隨口問(wèn)一句“你這個(gè)視圖為什么比直接查表方便”就卡住了。所以做這個(gè)實(shí)驗(yàn)之前先別急著敲代碼把五件事的邏輯關(guān)系想清楚比多寫十條 SQL 有用得多。1.2 一條業(yè)務(wù)線串起五個(gè)知識(shí)點(diǎn)實(shí)驗(yàn)四最好的做法是找一條業(yè)務(wù)線把這五個(gè)知識(shí)點(diǎn)全部串起來(lái)。我當(dāng)時(shí)帶學(xué)生的時(shí)候推薦他們統(tǒng)一采用“學(xué)生成績(jī)管理系統(tǒng)”的場(chǎng)景因?yàn)檎n程所有同學(xué)都能理解而且非常自然。場(chǎng)景是這樣設(shè)計(jì)的學(xué)生選課、考試、成績(jī)錄入然后教務(wù)需要經(jīng)常按課程查看班級(jí)成績(jī)分布。圍繞這個(gè)場(chǎng)景五個(gè)知識(shí)點(diǎn)的出場(chǎng)順序非常順經(jīng)常會(huì)寫“某門課所有學(xué)生的成績(jī)和平均分”這種長(zhǎng) SQL于是封裝成視圖成績(jī)表數(shù)據(jù)量大了以后查詢?cè)絹?lái)越慢于是給高頻查詢字段建索引成績(jī)錄錯(cuò)要修改但不能改一半于是用事務(wù)保證原子性再用存儲(chǔ)過(guò)程把“檢查記錄-更新-提交/回滾”封裝起來(lái)學(xué)生成績(jī)一變就要留痕人工在應(yīng)用里寫日志容易漏于是靠觸發(fā)器自動(dòng)寫入審計(jì)表。五個(gè)點(diǎn)被一條業(yè)務(wù)線串起來(lái)之后實(shí)驗(yàn)報(bào)告也不再是五個(gè)孤立的小題而是“我要在什么場(chǎng)景下解決什么問(wèn)題、為什么選這個(gè)手段、效果如何”的完整閉環(huán)。這個(gè)思路本身就是拿高分的底子。2. 環(huán)境與數(shù)據(jù)準(zhǔn)備動(dòng)手寫 SQL 之前的必修課2.1 數(shù)據(jù)庫(kù)版本和客戶端怎么選實(shí)驗(yàn)四用的數(shù)據(jù)庫(kù)管理系統(tǒng)不同學(xué)校規(guī)定不同。如果你所在課程用的是課內(nèi)統(tǒng)一安裝的版本那沒(méi)什么好挑的如果沒(méi)規(guī)定我的建議是選 MySQL 8.0原因很實(shí)在開(kāi)源免費(fèi)、安裝包小、出問(wèn)題搜索引擎一搜一大堆答案助教也最熟悉??蛻舳朔矫?DBeaver 和 Navicat 都可以。DBeaver 是免費(fèi)的跨平臺(tái)適合學(xué)生Navicat 對(duì)初學(xué)者更友好圖形界面直觀查看表結(jié)構(gòu)和執(zhí)行計(jì)劃的時(shí)候體驗(yàn)不錯(cuò)。我這里多說(shuō)一句有些同學(xué)偷懶直接在某在線 SQL 網(wǎng)站上做實(shí)驗(yàn)我不太推薦。實(shí)驗(yàn)四不像前面幾次實(shí)驗(yàn)它需要反復(fù)切換會(huì)話去復(fù)現(xiàn)事務(wù)并發(fā)問(wèn)題還需要看執(zhí)行計(jì)劃和鎖等待信息在線網(wǎng)站根本提供不了這些功能。安裝 MySQL 時(shí)有兩個(gè)坑提前說(shuō)一下。一是端口沖突3306 經(jīng)常被之前殘留的舊版本占用裝完連不上先檢查端口二是字符集安裝后默認(rèn)可能是 latin1后面中文亂碼基本都是從這里埋下的我建議建庫(kù)時(shí)直接顯式指定 utf8mb4。2.2 基礎(chǔ)表結(jié)構(gòu)設(shè)計(jì)與樣本數(shù)據(jù)構(gòu)造實(shí)驗(yàn)四的表結(jié)構(gòu)不需要很復(fù)雜三張核心表就夠了學(xué)生表 student、課程表 course、選課成績(jī)表 sc。結(jié)構(gòu)參考如下CREATE DATABASE db_exp4 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; CREATE TABLE student ( sno CHAR(9) PRIMARY KEY, sname VARCHAR(20) NOT NULL, sex CHAR(1) DEFAULT 男, dept VARCHAR(30), enroll_year YEAR ); CREATE TABLE course ( cno CHAR(4) PRIMARY KEY, cname VARCHAR(40) NOT NULL, credit DECIMAL(3,1), semester VARCHAR(10) ); CREATE TABLE sc ( sno CHAR(9), cno CHAR(4), score DECIMAL(5,2), PRIMARY KEY (sno, cno), FOREIGN KEY (sno) REFERENCES student(sno), FOREIGN KEY (cno) REFERENCES course(cno) );注意兩個(gè)細(xì)節(jié)一是主鍵用學(xué)號(hào)、課程號(hào)這種有業(yè)務(wù)含義的字段實(shí)驗(yàn)場(chǎng)景里沒(méi)問(wèn)題生產(chǎn)環(huán)境我會(huì)建議用自增 ID但這里沒(méi)必要繞遠(yuǎn)二是成績(jī)用 DECIMAL(5,2)表示三位整數(shù)加兩位小數(shù)比用 INT 精確得多也方便后面算平均分。樣本數(shù)據(jù)這塊很多人不重視覺(jué)得隨便插幾十條就行。但我可以明確告訴你實(shí)驗(yàn)四里“數(shù)據(jù)量”直接決定你索引優(yōu)化的效果能不能體現(xiàn)出來(lái)。只有幾十條記錄全表掃描也在一毫秒以內(nèi)你建索引前后的對(duì)比根本看不出來(lái)。我當(dāng)時(shí)會(huì)讓同學(xué)寫一個(gè)小腳本生成幾百到上千條選課記錄分?jǐn)?shù)分布要盡量自然別全是 90 分以上否則后面的視圖統(tǒng)計(jì)和成績(jī)分布分析會(huì)失真。數(shù)據(jù)里還應(yīng)該故意制造一些“不完美”的情況比如某些學(xué)生沒(méi)有選課有些課程沒(méi)有任何學(xué)生選。這些數(shù)據(jù)在后面驗(yàn)證視圖的外連接、聚合函數(shù)時(shí)非常有用能讓你發(fā)現(xiàn)“用內(nèi)連接統(tǒng)計(jì)會(huì)丟數(shù)據(jù)”這個(gè)經(jīng)典問(wèn)題。2.3 腳本組織與命名約定實(shí)驗(yàn)四的代碼量明顯比前三大多了如果全堆在一個(gè) SQL 文件里執(zhí)行的時(shí)候報(bào)錯(cuò)都不知道錯(cuò)在哪一行。我習(xí)慣把腳本按功能拆成多個(gè)文件01_schema.sql建庫(kù)建表、建約束02_data.sql插入樣本數(shù)據(jù)03_view_index.sql創(chuàng)建視圖和索引04_proc_trigger.sql存儲(chǔ)過(guò)程、觸發(fā)器、事務(wù)操作05_query.sql驗(yàn)證用的查詢語(yǔ)句06_test.sql完整的驗(yàn)收測(cè)試流程這樣做的第一個(gè)好處是調(diào)試定位快哪個(gè)文件報(bào)錯(cuò)就改哪個(gè)文件不需要在一大坨代碼里翻來(lái)翻去。第二個(gè)好處是驗(yàn)收的時(shí)候助教要求“從零開(kāi)始執(zhí)行一遍”你按文件順序跑一次就能過(guò)不會(huì)因?yàn)槟扯未a在后面引用了前面還沒(méi)創(chuàng)建的視圖而報(bào)錯(cuò)。命名規(guī)范同樣值得養(yǎng)成習(xí)慣視圖用 v_ 開(kāi)頭存儲(chǔ)過(guò)程用 sp_ 開(kāi)頭觸發(fā)器用 trg_ 開(kāi)頭函數(shù)用 fn_ 開(kāi)頭。學(xué)校不會(huì)強(qiáng)制要求這些但這是行業(yè)里通行的經(jīng)驗(yàn)寫了以后報(bào)告看起來(lái)專業(yè)很多也給自己省不少麻煩。3. 視圖和索引最基礎(chǔ)也最容易丟分的地方3.1 視圖的本質(zhì)與創(chuàng)建要點(diǎn)視圖很多人第一次接觸時(shí)會(huì)覺(jué)得很玄乎其實(shí)它就是一個(gè)命名的查詢。你每次都要寫一遍“學(xué)生選課統(tǒng)計(jì)”的長(zhǎng) SQL不如把它存成一個(gè)虛擬表以后直接查它。視圖不占物理存儲(chǔ)空間數(shù)據(jù)還是存在原來(lái)的表里所以它不會(huì)讓查詢本身變快但能讓查詢語(yǔ)句變短、邏輯變清晰還能隱藏底層表的敏感字段。我建議實(shí)驗(yàn)里至少創(chuàng)建一個(gè)“學(xué)生平均成績(jī)”的視圖CREATE OR REPLACE VIEW v_stu_avg AS SELECT s.sno, s.sname, COUNT(sc.cno) AS course_count, ROUND(AVG(sc.score), 2) AS avg_score FROM student s LEFT JOIN sc ON s.sno sc.sno GROUP BY s.sno, s.sname;這里必須用 LEFT JOIN不能是 INNER JOIN。原因剛才提到過(guò)有些學(xué)生一門課都沒(méi)選內(nèi)連接會(huì)把他們?cè)诮Y(jié)果里抹掉統(tǒng)計(jì)就丟失了這部分記錄。這就是一個(gè)典型的“看起來(lái)全對(duì)、實(shí)際邏輯有漏洞”的點(diǎn)實(shí)驗(yàn)報(bào)告里能主動(dòng)寫出為什么選外連接印象分馬上不一樣。視圖還有一個(gè)容易踩的坑寫視圖定義時(shí)用了SELECT *。剛開(kāi)始圖省事后來(lái)你給原表加了一個(gè)字段視圖也跟著變但有些老代碼早就寫死了字段順序結(jié)果接口輸出全亂。實(shí)驗(yàn)里不會(huì)鬧這么大動(dòng)靜但養(yǎng)成習(xí)慣視圖里永遠(yuǎn)顯式列出字段。3.2 索引設(shè)計(jì)的取舍索引為什么能讓查詢變快我常用一個(gè)生活類比一本幾千頁(yè)的工具書你要找一個(gè)關(guān)鍵詞一頁(yè)一頁(yè)翻就是全表掃描看目錄定位到頁(yè)碼就是索引查找。數(shù)據(jù)庫(kù)里的索引通常用 B 樹(shù)實(shí)現(xiàn)查詢從“順序掃全表”變成“樹(shù)里跳轉(zhuǎn)”復(fù)雜度從 O(n) 降到 O(log n)數(shù)據(jù)量越大差距越明顯。但索引不是越多越好這是新手最容易走極端的地方。每建一個(gè)索引寫入時(shí)都要多維護(hù)一棵樹(shù)等于每次插入和更新都變慢了。所以建索引的原則是高頻查詢條件字段、外連接字段、排序字段才值得建寫多讀少的表要克制。實(shí)驗(yàn)里我會(huì)讓同學(xué)做一組對(duì)比先不建索引跑一個(gè)“統(tǒng)計(jì)某門課程 90 分以上人數(shù)”的查詢?nèi)缓蠼ㄋ饕鼵REATE INDEX idx_sc_cno_score ON sc(cno, score);再去跑同一句記錄耗時(shí)對(duì)比。復(fù)合索引 (cno, score) 同時(shí)覆蓋了“課程號(hào)過(guò)濾”和“分?jǐn)?shù)范圍判斷”查詢只需要在某個(gè)課程范圍的索引區(qū)間內(nèi)做掃描不需要回表碰成績(jī)數(shù)據(jù)。這個(gè)對(duì)比實(shí)驗(yàn)寫進(jìn)報(bào)告比空談“索引能優(yōu)化查詢”有說(shuō)服力太多。3.3 用執(zhí)行計(jì)劃驗(yàn)證索引而不是靠感覺(jué)很多同學(xué)建完索引以后就默認(rèn)“它生效了”這不對(duì)。索引生效與否執(zhí)行計(jì)劃說(shuō)了才算。MySQL 里在 SQL 前面加個(gè) EXPLAIN 關(guān)鍵字就能看到執(zhí)行計(jì)劃EXPLAIN SELECT s.sname, sc.score FROM sc JOIN student s ON s.sno sc.sno WHERE sc.cno C001 AND sc.score 90;執(zhí)行計(jì)劃里重點(diǎn)看幾列。type 這一行最好不是 ALLALL 就是全表掃描說(shuō)明索引沒(méi)起作用key 列顯示用到了哪個(gè)索引是 NULL 就說(shuō)明沒(méi)用到rows 是預(yù)估掃描的行數(shù)數(shù)字越小越好Extra 出現(xiàn) Using filesort 說(shuō)明排序在內(nèi)存里額外做了通常意味著索引沒(méi)能支持排序。有一個(gè)終極經(jīng)典的坑對(duì)索引列做函數(shù)運(yùn)算。比如WHERE YEAR(enroll_year) 2023哪怕你在 enroll_year 上建了索引執(zhí)行計(jì)劃照樣給你全表掃描。原因是數(shù)據(jù)庫(kù)沒(méi)法對(duì)一列做完函數(shù)后的結(jié)果直接走索引必須把每一行的值都算一遍才知道合不滿足。正確的寫法是寫成范圍條件WHERE enroll_year BETWEEN 2023-01-01 AND 2023-12-31我自己的習(xí)慣是實(shí)驗(yàn)里每驗(yàn)證一個(gè)索引都把 EXPLAIN 的結(jié)果截圖存好然后寫一句“從執(zhí)行計(jì)劃可以看到key 從 NULL 變成了 idx_sc_cno_scorerows 從 XXX 降到了 YYY驗(yàn)證了索引生效”。這句話寫下來(lái)老師很清楚你是真的理解而不是只會(huì)敲代碼。4. 存儲(chǔ)過(guò)程、事務(wù)與觸發(fā)器把業(yè)務(wù)邏輯寫進(jìn)數(shù)據(jù)庫(kù)4.1 存儲(chǔ)過(guò)程的參數(shù)、變量與異常處理存儲(chǔ)過(guò)程本質(zhì)上就是把一段業(yè)務(wù)邏輯封裝在數(shù)據(jù)庫(kù)端需要的時(shí)候 CALL 一下就行。實(shí)驗(yàn)里我會(huì)做一個(gè)“按學(xué)號(hào)和課程號(hào)修改成績(jī)”的存儲(chǔ)過(guò)程它比裸寫一條 UPDATE 多了一層價(jià)值能校驗(yàn)記錄是否存在能在出錯(cuò)時(shí)回滾還能返回處理結(jié)果。DELIMITER // CREATE PROCEDURE sp_update_score( IN p_sno CHAR(9), IN p_cno CHAR(4), IN p_new_score DECIMAL(5,2), OUT p_message VARCHAR(100) ) BEGIN DECLARE EXIT HANDLER FOR SQLEXCEPTION BEGIN ROLLBACK; SET p_message 更新失敗已回滾; END; START TRANSACTION; UPDATE sc SET score p_new_score WHERE sno p_sno AND cno p_cno; IF ROW_COUNT() 0 THEN SET p_message 記錄不存在已回滾; ROLLBACK; ELSE COMMIT; SET p_message 更新成功; END IF; END // DELIMITER ;先說(shuō) DELIMITER 這個(gè)看起來(lái)很怪的東西??蛻舳四J(rèn)用分號(hào)作為一條語(yǔ)句的結(jié)束標(biāo)志而存儲(chǔ)過(guò)程內(nèi)部每一行 UPDATE 后都有分號(hào)如果不臨時(shí)把分隔符改掉客戶端會(huì)在第一個(gè)分號(hào)處把“語(yǔ)句”斷開(kāi)后面全部報(bào)錯(cuò)。所以我先把分隔符改成 //等整個(gè)存儲(chǔ)過(guò)程體結(jié)束再用 // 收尾最后再改回分號(hào)。這個(gè)細(xì)節(jié)十個(gè)報(bào)錯(cuò)的同學(xué)有八個(gè)是因?yàn)樗?。再講異常處理DECLARE EXIT HANDLER FOR SQLEXCEPTION 是這份代碼的靈魂。沒(méi)有它事務(wù)中途遇到約束沖突或語(yǔ)法錯(cuò)誤時(shí)已經(jīng)執(zhí)行的語(yǔ)句不會(huì)自動(dòng)回滾數(shù)據(jù)可能處于“改了一半”的狀態(tài)。有了它一旦捕獲異常就整體 ROLLBACK保證原子性。這個(gè)模式的行業(yè)里叫“先聲明異常哨兵再開(kāi)啟事務(wù)”熟練掌握后寫任何數(shù)據(jù)修改類存儲(chǔ)過(guò)程都能套用。還有一點(diǎn)容易被忽略參數(shù)類型要和表字段完全一致。有一次我見(jiàn)同學(xué)把 p_new_score 聲明成 INT調(diào)用后傳 95.5結(jié)果誤差悄悄就出現(xiàn)了因?yàn)閿?shù)據(jù)庫(kù)把 95.5 轉(zhuǎn)成了 96 再做更新。這種“看起來(lái)沒(méi)問(wèn)題數(shù)據(jù)卻變了”的 bug 最折磨人提前聲明成 DECIMAL(5,2) 就不會(huì)有這回事。4.2 事務(wù)隔離級(jí)別與并發(fā)問(wèn)題的復(fù)現(xiàn)事務(wù)的 ACID 四個(gè)特性背概念容易真正理解要靠動(dòng)手。實(shí)驗(yàn)要求里通常有一條是“演示并發(fā)環(huán)境下事務(wù)的隔離性”這里我給一個(gè)實(shí)際可操作的流程模擬兩個(gè)客戶端同時(shí)處理同一門課的選課人數(shù)。假設(shè)課程容量只剩 1 個(gè)名額兩個(gè)學(xué)生同時(shí)選課。如果不加鎖兩個(gè)事務(wù)都先查“剩余名額”都看到 1都執(zhí)行成功最后容量變成 -1這就叫超賣。解決辦法是查詢名額時(shí)加一把行鎖START TRANSACTION; SELECT quota FROM course WHERE cno C001 FOR UPDATE; -- 業(yè)務(wù)判斷剩余名額是否大于 0 UPDATE course SET quota quota - 1 WHERE cno C001; COMMIT;FOR UPDATE 的作用是把這一行鎖住第二個(gè)事務(wù)同樣執(zhí)行這條 SELECT 時(shí)會(huì)阻塞住直到第一個(gè)事務(wù) COMMIT 或 ROLLBACK它才讀到最新的剩余名額。這個(gè)過(guò)程不親手跑一遍很難體會(huì)“鎖”的含義。隔離級(jí)別是另一個(gè)高頻考點(diǎn)我建議畫一張表來(lái)記讀未提交會(huì)有臟讀和幻讀讀已提交能防臟讀但仍有不可重復(fù)讀和幻讀可重復(fù)讀防了前兩者但可能幻讀串行化全防但并發(fā)性能最差。MySQL 8.0 默認(rèn)是可重復(fù)讀。實(shí)驗(yàn)里復(fù)現(xiàn)這些并發(fā)問(wèn)題有一個(gè)技巧在兩個(gè)會(huì)話里手動(dòng)控制提交時(shí)機(jī)而不是讓程序瞬間跑完。比如在事務(wù)里故意加上 SELECT SLEEP(5); 模擬業(yè)務(wù)處理時(shí)間然后趁這個(gè)窗口在另一個(gè)會(huì)話里去讀同一條數(shù)據(jù)就能清楚觀察到另一個(gè)事務(wù)到底看到的是舊值還是新值。這個(gè)方法很土但非常有效比純講理論直觀得多。4.3 觸發(fā)器的適用場(chǎng)景與邊界觸發(fā)器最有價(jià)值的使用場(chǎng)景是那些“不管從哪個(gè)入口改數(shù)據(jù)都必須伴隨發(fā)生”的邏輯。成績(jī)修改審計(jì)就是一個(gè)標(biāo)準(zhǔn)例子不管成績(jī)是被哪個(gè)應(yīng)用、哪個(gè)用戶改的都必須留下一條審計(jì)記錄。寫代碼的人可能忘了寫日志但觸發(fā)器不會(huì)忘。CREATE TABLE score_audit ( id INT AUTO_INCREMENT PRIMARY KEY, sno CHAR(9) NOT NULL, cno CHAR(4) NOT NULL, old_score DECIMAL(5,2), new_score DECIMAL(5,2), op_time DATETIME DEFAULT CURRENT_TIMESTAMP ); CREATE TRIGGER trg_score_audit AFTER UPDATE ON sc FOR EACH ROW BEGIN INSERT INTO score_audit(sno, cno, old_score, new_score) VALUES (OLD.sno, OLD.cno, OLD.score, NEW.score); END;AFTER UPDATE 表示行更新完成后觸發(fā)OLD 和 NEW 分別代表更新前、更新后的行。觸發(fā)器里把舊分和新分都寫進(jìn)審計(jì)表事后想查“誰(shuí)把成績(jī)從 58 改成了 88”一條 SELECT 就查出來(lái)了。但觸發(fā)器這個(gè)東西必須克制。我在實(shí)際項(xiàng)目中見(jiàn)過(guò)不少“觸發(fā)器災(zāi)難”有人為了讓系統(tǒng)自動(dòng)同步某張表在表 A 的觸發(fā)器里更新表 B表 B 又有觸發(fā)器更新表 A結(jié)果形成循環(huán)調(diào)用數(shù)據(jù)庫(kù)直接報(bào)錯(cuò)或者死鎖。實(shí)驗(yàn)要求做一個(gè)觸發(fā)器就夠了千萬(wàn)別為了炫技做過(guò)度的級(jí)聯(lián)設(shè)計(jì)翻車率非常高。還有一點(diǎn)要注意同一張表的 AFTER UPDATE 觸發(fā)器里如果再更新同一張表MySQL 會(huì)報(bào)遞歸觸發(fā)錯(cuò)誤ERROR 1442。原因是 AFTER 階段行的最終狀態(tài)已經(jīng)確定了不允許再改動(dòng)這張表。如果確實(shí)要修改應(yīng)該用 BEFORE 觸發(fā)器直接改 NEW 字段或者把邏輯挪到存儲(chǔ)過(guò)程里做。5. 常見(jiàn)問(wèn)題與排查技巧實(shí)錄5.1 中文亂碼字符集問(wèn)題亂碼是實(shí)驗(yàn)四里出現(xiàn)頻率最高的問(wèn)題沒(méi)有之一尤其在一開(kāi)始建庫(kù)的時(shí)候就沒(méi)管字符集的情況下。亂碼的本質(zhì)是“寫入用的編碼”和“讀取用的編碼”不一致。我用中文“實(shí)驗(yàn)”兩個(gè)字舉例如果服務(wù)器按 utf8mb4 存客戶端卻按 GBK 解讀每個(gè)中文字符的字節(jié)序列拆開(kāi)再拼起來(lái)就變成了完全不通的字符。排查步驟很簡(jiǎn)單。第一步看建庫(kù)語(yǔ)句有沒(méi)有指定字符集沒(méi)有的話執(zhí)行下面的命令看當(dāng)前是什么SHOW VARIABLES LIKE character_set_%;第二步看客戶端連接設(shè)置DBeaver 或 Navicat 里連接配置都有字符集選項(xiàng)統(tǒng)一選 utf8mb4。第三步看表的字符集SHOW TABLE STATUS LIKE student;能看到默認(rèn)字符集。三處一致亂碼就消失了。我見(jiàn)過(guò)很多“查了很多方法都沒(méi)用”的案例最后都是因?yàn)檫B接串里沒(méi)指定 characterEncodingutf8卡了半天才解決。5.2 觸發(fā)器遞歸和死鎖觸發(fā)器相關(guān)的報(bào)錯(cuò)里ERROR 1442 是最典型的一種。場(chǎng)景通常是同學(xué)想“成績(jī)更新后順手把總分表也更新了”于是在 sc 表的 AFTER UPDATE 觸發(fā)器里寫了 UPDATE sc 的語(yǔ)句結(jié)果直接報(bào)錯(cuò)。原因前面說(shuō)過(guò)AFTER 階段不能再改這張表本身。死鎖則是并發(fā)場(chǎng)景的高發(fā)問(wèn)題。最常見(jiàn)的死鎖原因是兩個(gè)事務(wù)以不同順序加鎖事務(wù) A 先鎖成績(jī)表再鎖課程表事務(wù) B 先鎖課程表再鎖成績(jī)表雙方各拿一把鎖等對(duì)方釋放誰(shuí)也等不到數(shù)據(jù)庫(kù)檢測(cè)到后主動(dòng)把其中一個(gè)事務(wù)回滾釋放資源。排查死鎖有一個(gè)萬(wàn)能命令SHOW ENGINE INNODB STATUS;輸出里找到 LATEST DETECTED DEADLOCK 段落能看到兩個(gè)事務(wù)各自持有哪些鎖、在等待哪個(gè)鎖據(jù)此就能調(diào)整加鎖順序。生產(chǎn)中避免死鎖的核心原則就是“所有事務(wù)按照相同的順序訪問(wèn)表和行”這個(gè)原則做實(shí)驗(yàn)的時(shí)候同樣適用。5.3 索引失靈的幾類典型場(chǎng)景很多同學(xué)跑完對(duì)比實(shí)驗(yàn)發(fā)現(xiàn)“建了索引和沒(méi)建一樣慢”第一反應(yīng)是數(shù)據(jù)庫(kù)有問(wèn)題其實(shí)十有八九是查詢寫法把索引廢了。最常見(jiàn)的幾類對(duì)索引列套函數(shù)比如 YEAR(create_time) 2023前面已經(jīng)說(shuō)過(guò)隱式類型轉(zhuǎn)換比如索引列是 VARCHAR條件里寫 WHERE sno 20230001沒(méi)加引號(hào)數(shù)據(jù)庫(kù)會(huì)先把列轉(zhuǎn)成數(shù)值再比較索引同樣失效前導(dǎo)模糊查詢LIKE %張三% 無(wú)法利用索引因?yàn)樗饕龢?shù)是按前綴組織的而 LIKE 張三% 可以在索引列上用 OR 連接了兩個(gè)非索引條件優(yōu)化器權(quán)衡后可能直接放棄索引。這些場(chǎng)景每一條都可以在實(shí)驗(yàn)里做個(gè)小驗(yàn)證建索引 → 用失效寫法跑 EXPLAIN → 看 key 列變?yōu)?NULL → 改用正確寫法 → 看 key 列恢復(fù)。把這組對(duì)比寫進(jìn)報(bào)告你整篇實(shí)驗(yàn)報(bào)告的專業(yè)程度立刻上一個(gè)臺(tái)階。5.4 常見(jiàn)問(wèn)題速查表現(xiàn)象可能原因解決辦法插入中文數(shù)據(jù)后顯示亂碼庫(kù)表字符集或客戶端連接編碼不一致統(tǒng)一使用 utf8mb4檢查連接配置存儲(chǔ)過(guò)程 CALL 報(bào)語(yǔ)法錯(cuò)誤未用 DELIMITER 修改分隔符將分隔符臨時(shí)改為 // 再創(chuàng)建事務(wù)執(zhí)行一半報(bào)錯(cuò)后數(shù)據(jù)沒(méi)變?nèi)碑惓L幚砥魑椿貪L聲明 EXIT HANDLER FOR SQLEXCEPTION觸發(fā)器執(zhí)行報(bào) ERROR 1442AFTER 觸發(fā)器內(nèi)更新了同一張表改為 BEFORE 改 NEW或把邏輯搬到存儲(chǔ)過(guò)程建了索引 EXPLAIN 仍是全表掃描對(duì)索引列做了函數(shù)運(yùn)算或類型轉(zhuǎn)換改寫為范圍條件或統(tǒng)一類型再比較兩個(gè)會(huì)話互相等鎖超時(shí)加鎖順序不一致統(tǒng)一事務(wù)內(nèi)的表訪問(wèn)順序視圖查出來(lái)的數(shù)據(jù)少了誤用了 INNER JOIN 導(dǎo)致無(wú)選課記錄被丟改用 LEFT JOIN 保留主表全量6. 實(shí)驗(yàn)報(bào)告怎么寫才能拿高分6.1 驗(yàn)收時(shí)老師到底在看什么實(shí)驗(yàn)四的驗(yàn)收和前面幾次有很大區(qū)別前面可能看結(jié)果有沒(méi)有跑出來(lái)到實(shí)驗(yàn)四更看重的是一句話“你能不能講清楚為什么”。我自己參與過(guò)幾次驗(yàn)收老師常問(wèn)的問(wèn)題大致就這幾類第一你這個(gè)視圖解決的是什么問(wèn)題它和直接寫長(zhǎng) SQL 有什么區(qū)別第二你的索引為什么選這幾個(gè)字段建EXPLAIN 給你什么信息第三存儲(chǔ)過(guò)程里為什么要用事務(wù)沒(méi)有事務(wù)會(huì)怎樣第四觸發(fā)器為什么不用存儲(chǔ)過(guò)程替代兩者的邊界在哪。這些問(wèn)題全部指向“理解”而不是“代碼能跑”。所以準(zhǔn)備驗(yàn)收的時(shí)候別背代碼背邏輯。把每個(gè)知識(shí)點(diǎn)對(duì)應(yīng)的業(yè)務(wù)場(chǎng)景、為什么選這個(gè)手段、效果怎么驗(yàn)證這三件事理順老師問(wèn)什么你都能從場(chǎng)景出發(fā)講清楚。6.2 報(bào)告結(jié)構(gòu)與加分寫法報(bào)告結(jié)構(gòu)我建議按這個(gè)順序組織實(shí)驗(yàn)?zāi)康?→ 實(shí)驗(yàn)環(huán)境 → 需求與整體設(shè)計(jì) → 表結(jié)構(gòu)和數(shù)據(jù)說(shuō)明 → 各知識(shí)點(diǎn)實(shí)現(xiàn)過(guò)程 → 對(duì)比實(shí)驗(yàn)與結(jié)果分析 → 遇到的問(wèn)題與解決 → 實(shí)驗(yàn)心得。前兩部分控制在半頁(yè)以內(nèi)別寫廢話。需求與整體設(shè)計(jì)部分把“為什么選成績(jī)管理場(chǎng)景、五個(gè)知識(shí)點(diǎn)怎么串起來(lái)”講明白這部分是拉開(kāi)分?jǐn)?shù)的第一個(gè)機(jī)會(huì)。各知識(shí)點(diǎn)實(shí)現(xiàn)部分代碼要完整運(yùn)行結(jié)果要有截圖關(guān)鍵操作要有執(zhí)行計(jì)劃這是拉開(kāi)分?jǐn)?shù)的第二個(gè)機(jī)會(huì)。對(duì)比實(shí)驗(yàn)是最大的加分項(xiàng)。無(wú)索引和有索引的查詢耗時(shí)對(duì)比、不同隔離級(jí)別下并發(fā)讀的結(jié)果對(duì)比、不帶異常處理和帶異常處理的存儲(chǔ)過(guò)程執(zhí)行對(duì)比這三組對(duì)比只要做了報(bào)告的分析深度立刻和別人的“代碼堆砌”拉開(kāi)距離。我自己??吹揭粋€(gè)有意思的現(xiàn)象同樣兩個(gè)知識(shí)點(diǎn)都完成了的同學(xué)寫對(duì)比實(shí)驗(yàn)的人普遍比只貼代碼的人分?jǐn)?shù)高一截。還有一個(gè)細(xì)節(jié)報(bào)告里的每個(gè)截圖都要配一兩句解釋說(shuō)明“從這張圖能看到什么、結(jié)果驗(yàn)證了什么”。只貼圖不解釋等于沒(méi)貼解釋了才證明圖里的信息你真的看懂了。寫在最后這套實(shí)驗(yàn)做完我最大的感受是它把數(shù)據(jù)庫(kù)從“存數(shù)據(jù)的地方”變成了“幫你把數(shù)據(jù)管好的工具”。以前寫一條 UPDATE 我從不考慮后果現(xiàn)在看到任何對(duì)數(shù)據(jù)的修改腦子里會(huì)自動(dòng)彈出三個(gè)問(wèn)題要不要包事務(wù)、要不要留審計(jì)、要不要控制并發(fā)。這個(gè)思維習(xí)慣比記住那些 SQL 語(yǔ)法值錢得多。最后分享一個(gè)小技巧實(shí)驗(yàn)做完之后把全部腳本從頭到尾重新執(zhí)行一遍完全模擬助教驗(yàn)收現(xiàn)場(chǎng)。這一步能提前暴露九成以上的意外問(wèn)題——視圖建錯(cuò)順序、觸發(fā)器重復(fù)創(chuàng)建、樣本數(shù)據(jù)沒(méi)清理干凈全是這種“平時(shí)感覺(jué)沒(méi)事、驗(yàn)收突然爆炸”的隱藏雷。在宿舍里先爆掉總比在老師面前爆掉體面這個(gè)道理做多了實(shí)驗(yàn)自然就懂了。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
国产精品夜夜| www.丁香五月| 91亚洲综合在线| 成人天天看站长推荐| 大香蕉婷婷| 日韩欧美大片免费高清啪啪| 97干色天堂| 久久草大香蕉| 免费观看啪视频| 久久双插| 人人人摸人人| 亚洲精品国产精品成人| 日韩成人在线性爱视频| 岛国在线一区二区三区| 伊人影院综合是一个与深夜成人在线 | 超碰三级秋霞| 久久精品成人| 桑老女人九区| 欧美刺激色黄片免费看| 襙一襙| 日夜尻逼网| 嗯嗯啊啊用力视频免费| 男人天堂站| 亚洲综合春色| 久久婷婷五月天| 亚洲综合成人网| 久久婷婷综合国际产色怕| 中文字幕一区二区免费在线| 国产一级137片内射麻豆| 好爽视频在线观看视频 | 啊啊啊免费| 欧美狠狠狠| 骚鸭AV| 91精品国| 美女性91| 欧美精品宗合| 成年人网站在线免费观看| 中文视频在线观看| av天堂手机版追回| 综合国产97| 国产精品久久久视频| 欧美夜夜狠| 激情综合97| 97亚洲一区| 18一区二区三区| 情色日播放AV| 欧美91网站| 国产美女精品| 综合激情一一91| 欧美97se| 91肉片| 91精品微拍福利| 欧美呦呦性爱| 日本3级一区二区免费| 亚洲操逼视频网站| 久久久久久久少妇| 超碰一区二区| 日本一级特级毛片视频| 乱伦一区二区三区‘| 欧美性生活免费网| AA丁香综合激情| 国产偷仑| 久久久久99精品成人片蜜臀| 国产精品爆乳懂色蜜乳| 久操凹凸视频| 99热婷婷| 狠狠操狠狠燥| 凹凸视频在线一区二区| 黄片无码在线制服| 男人的天堂在线2| 亚洲AV不卡在线观看尤物| 国产av色网| 超碰97色| 国产亚洲禁久一区二区| 操人妻逼91| 大干人妻| 蜜乳AV免费观看| 特级丰满少妇一级AAAA爱毛片| 六月婷婷色综合| 天天弄欧美| 91精品婷婷国产综合久久| 另类图片综合| 大胆91| 亚洲日本天堂| 日本爽爽爽爽爽爽免费视频| 污啪啪啪视频| 久久午夜神马| 精品伊人久久久大香线蕉小说| 中文字幕第页| 国产后入式在线观看| 黄色香蕉视频网站一区| 一区二区三区精品黑丝白丝酒店对鸡| 亚洲高清男人天堂| 日韩成人无码| 日韩亚洲美女一区久久| 日日97| 99在线无码精品秘 入口黑人| 五月天激情网站| 在线一区| 亚洲色图日韩精品| 色老汉色| 国产在线视频午夜精华在| 91东京热男人的天堂| 国产成人www免费人成看片| 亚洲 欧美 小说| 好湿好紧视频| 91|九色|国产熟女| 青青草国产一区二区三区| 一级片在线观看高清无码| 国产欧美第五页| 欧美综合色,www| 欧美性爱十八禁| 婷婷15月天青娱乐| 99re公开精品免费视频| 久日91在线| 午夜男女爽爽爽影院视频| 99亚洲精品| 精品免费囯产一区二区三区| 欧美人妻久久精品二区三区| 国产第11页| 亚洲国产尤物yw在线观看| 97精品久久久久久久| 免费无码婬片AAAA片直播色戒| 亚洲第一综合| 色香av| 久久草在线综合视频| 青草伊人久久| 欧美综合97www| 91精品国产91熟女| 国产suv精品一区二区四区999| 久久精品—区二区三区内射| 九九无码久久精品视频| A级在线视频| 欧美天堂日韩三级国产传媒| 大香蕉黄色一级片免费看| 麻豆性爱视频在线播放 | 亚洲一区二区 麻豆传媒| 蜜乳视频网站| 四虎av在线| 一二三四免费视频| 特级特黄一级毛片免费| 免费试看60秒| 岛国不卡超碰护士AV在线播放| 强奸乱伦大香蕉网| 欧美色网| 91热色| 婷婷综合五月| 人人操,人人插| 国产不卡的视频 | 台湾佬中文娱乐网久久久久久久久久com| 精品一区二区亚洲国产| 啪啪啪精品| 日韩欧美蜜桃精品久久中文字幕久久| 久久婷婷五月综合| 内射夫妻三片| 亚洲校园激情| 干b在线性社区| 粉嫩不卡一区二区性爱| 91欧美经典| 97视频在线观看高清资源| 日本国产欧美高清在线| 欧美精品三级黄片| 一二视频神马久久传媒| 欧美一区二区在线资源| 黄片免费看黄片免费看| 欧美性爽xyxOOOO| 射丝袜大香蕉| 青青草伊人久久| 国产日本久久免费精品| 另类TS人妖一区二区三区| 午夜性刺激视频免费观看| 久久偷偷色综合蜜桃| 26uuu国产免费观看| 四季AV一区二区凹凸精品小说| 久久久99免费| 嗯嗯不要视频| 妇女乱色二区| 亚洲综合69| 欧美熟妇视频 | 国产女上位好爽在线| 天天做日日爱夜夜爽| 日语五十路和六十路亚洲国产精品| 激情黄色五月天| 殴美,日韩国产伦精品| 久久久久久精品免费看A级| 丁香色狠狠色综合久久小说| 精品传媒在线一区| 天堂成人网| 少妇九九九九| 亚洲国产中文字幕| 中文字幕av丝袜| 好屌色综合| 中文字幕少妇色| 午夜男人天堂| 色狠狠综合噜一二三区| 美女91| 后入福利| 天天欧美| 午夜性刺激视频免费观看| 天天爱天天操| 风月影院十八禁| 少妇无码999| 欧美在线电影| 亚洲欧洲激情卡通另类文学四射小说网站 | 色香综合| 黑人白女精品一区| 亚洲AV秘 精品久久老牛影视| 亚洲第一精品在线视频| 中文字幕奈奈美被公侵犯| 国产成人自拍视频视频| 乱伦3P视频| 久久人人舔人人爽舔人人av片| 少妇啪啪自拍| 69人妻精品一区二区绯色| 91一区二区| 五月天激情小说| 99热免费| 男人的天堂2018.| 国产精品肉丝自拍| 天天日日日射| 综合天天。| 97国产精选| 91欧| 欧美精品二区视频在线| 一级AV性爱| 久草精品国产99| 国产精品爱欲| 日韩中文字幕视频在线观看| 亚洲国产欧美日韩精品一区二区三区,国产一区二区三区在线看片,欧美性猛交 XXX | 精品国产网站| 久久草视频污视频| 东京男人天堂| 国产福利视频精品视频| 色婷婷视频| 夜夜高潮夜夜爽高清视频一| 色眯眯av| 久久精品熟女亚洲AV麻豆软件| 国产精品直播在线观看直播| 午夜影美女日鸡鸡天天视频国产| 亚欧精品久久久久久久久久久| 18一区二区三区| 秋霞鲁丝午夜无码一区二区三| 久久9精品网站| 五十路一区无码| 无码高清国产AV| 人妻少妇色综合| 少妇与黑人高潮在线| 91天天美女| 夜夜草我| 日韩另类色图| 久久久一区二区| 水多多映视AV| 婷婷五月天成人网| 亚洲AV人人澡人人爱| 性91| 免费看一级a性色生活片久久无| 亚洲天堂色图| 2017天天插| 国产精品岛国片在线观看| 色999人与兽| 97天天在线| 国语对白露脸XXXXXX| 久久肏大逼| 欧美丝袜激情| 国产熟女精品一区二区| 色婷婷成人| 亚洲熟女乱色一区二区三区久久久 | 国产精品人人爽人人做可爱福利| 99性爱视频| 天天激色| 成人三一级一片aaa| 黄色成品网站| 亚洲综合影院| 91亚洲精品青草| 绑缚麻绳人妻寝取完整版| 嗯啊抽插大香蕉网页| 婷婷导航| 欧亚日韩中文在线| 91无人区卡一卡二卡三乱码入口最新版:能让用户有更多选择的选择-经典说说-爱 | 激情抓乳插进去啪啪啪日韩| 国产视频三区四区| 午夜精品久久久久久久久久久久久 | 天堂种子在线www网资源| 国内操逼视频二区| 人妻另类 专区 欧美 制服| 女人爽到高潮潮喷18禁网站 | 亚乱色| 大吊色| 小说区 图片区色 综合区| 天天综合精品| 91精品网站| 五月婷婷综合网| AV在线播放网址| 亚洲一卡2卡3卡4卡乱码网站 | 亚洲精品人体| 91黑丝美女| 国产成人网| 精品综合久久久久久97| 综合久久欧美| 91综合网在线| 熟妇人妻一区二区三区| 国产不良强奸视频免费看| 欧美九九99久久精品| 中文乱码字字幕在线第5页| 97超级久久强资源| 激情小说日韩无码| 久久久久成人网| 久久久夜夜嗨免费视频| 综合91网| 亚洲综合精品国产一区| 骚货 中文字幕 av| 婷婷亚洲天堂| aa片毛片| 人妻酒店出差被中出免费在线播放| 日韩综合无码色欲vv| 97超碰超欧美。| 蜜乳AV色欲AVAV无码| 欧美操逼录像国产黄色国产| 97舔舔| 日韩激情无码影院| 日韩视频小说在线观看 | 旡码电影特区| 再深点灬舒服灬太大了添视频| 加勒比五月天| 精品熟女一区=区三区| 久久草草亚洲蜜桃臀| 国产偷人妻精品一区二区在线| xxx0国产在线播放| 亚洲欧美洲综合| 午夜精品久久久99| 99综合视频一体| 久久无码一区二区二三区性色| 在线观看视频91| 好吊爽好吊爽在线视频,中文字幕精品一区二区日本,国产良妇出轨视频在线观看, | 91人人爽人人爽人人人,gav福利视频导航,日韩欧美亚洲国产字幕四区 | 新亚洲无码| 91欧美情色| 怡红院怡春院| www.色综合| 久操操AV电影| 久久精品熟妇丰满人妻99| 亚洲激情天堂网| 熟妇在线视频一区二区| 极品尤物自安慰| 九九九九九精品| 久操视频免费观看| 青青草国产亚洲精品久久| 亚洲 欧美 手机在线观看| 福利视频香蕉免费一区二区在线| 人妻少妇久久| 夜草欧美| 欧美亚洲激情小说| 久久乐| 亚洲一区二区中文字幕| 中文字幕日韩电影人妻| 99999精品| 中文字幕无码不卡啪啪| 精品久久久不卡一区二区| 黑丝少妇| 久久久久久欧美精品se一二三四| 日本熟妇人妻中出视频| 在线观看一级α片刺激高潮视频| 日韩高潮一区| 爱我干综合| 欧美强奸乱能| 成人性爱全视频观看| 欧美亚洲日本激情在线| 一本色道久久天天射天天干| 欧美 亚洲精品首页| 亚洲日本天堂| 91精产一区二区三区| 日韩情色视频| 中文字幕乱碼在线| 福利风月五月天影院| 夜夜爽爽爽| 久草婷婷| 亚洲春色激情小说| 日韩乱码Av| 国产精品一区二区三区在线密挑| 人人天天欧洲| 天天看综合网| 日本一二区免费| 狠狠躁AV| 在线观看高清AV| 一区二区三区视频在线观看免费| 狠狠操夜夜| 无码最新| av大香蕉| 色爱欲亚洲| 亚洲五区熟女| 夜夜福利| 加勒比久久av| 亚洲熟女人妻中文字幕一区二区 | 久久久久久九九九| 日韩综合无码一区久久92| 中文字幕三四区| 亚洲欧美日韩制服另类| 久久夜黄色无码A级大片| 黑人操一区二区| 天天干天天狼在线视频| 日韩人妻资源在线看| 久久9精品视频| 97AV在线观看| 婷婷伊人五月| 看黄片视频免费| 99色热| 五月天丁香欧洲日韩| 97干色天堂| 激情黄色五月天| 欧美的精品的视频| 自拍视频一区在线观看| 激情小说五月天| 熟妇亚洲一区二区三区| 国产青青综合伊人| 92性色国产午夜福利在线661| 日本免费中文字幕在线| 超碰人人草| 久久综合日韩亚洲欧美| 欧美,日韩,中文,另类| 久久少妇| 内射中出日韩在线观看视频| av影片在线观看不卡| 欧美性爽xyxOOOO| 日韩国产欧美伦理在线| 久久人妻丝袜一区二区三| 91九九九小逼| 国产99热| 熟女视频久久| 欧美日本天堂| 欧美97| 亚欧国产无码精品在线| 性色乱AV一区二区| 男人的天堂1024| 中文字幕日韩人妻视频| 97国产色综合| 9九九国产| 成人97人人超碰人人| 色色五月天婷婷| 亚州色国| 国产亚洲精品一区二区三区| 好吊妞转入那个网| 后入日本1234| 国产精品久久久久久照片| 久久婷婷色综合一区二区三区| 久久精品91| 操www| 日日日啊啊啊| 日韩欧美性爱电影在线观看| 开心五月婷婷| 啊啊啊啊无码| 91啪啪视频| 老鸭窝日丰县女人| 干干干天天| 亚洲情色在线| 大香蕉一区二区在线观看.| 亚洲天堂人妻一区二区| 欧美天天搞| 九九性爱网| 欧洲亚洲人人爽爽视频| 播播亚洲小说亚洲| 色香综合天天影视综合 | 男女性感激情网站| 天堂精品小草| 嫩呦国产一区二区三区AV| 9久久9综合| 大象AV在线| 欧美久久草熟女| 亚洲精品久久久久久久蜜桃臀| 婷婷亚洲综合| 色妇综合网| 天综合中文| 校园春色 欧美| 性色一线| 在线人成亚洲视频免费观看| 91av天美性媒精品视频| 国产精品久久久久久久AV大片| 亚洲精品 超碰| 欧美中文字幕日韩在线| 97伪v| h无码动漫在线观看| 综合欧美日韩在线| 中文字幕av亚洲在线| 疯操AV| 五月婷婷激情| 偷拍 欧美 日韩| 丰满精品人妻少妇久久字幕| www…国产操逼| 亚洲精品欧洲色| 中文字幕日产av人| 国产精品999zyz| 天美久久久久| 人妻夜夜爽天天爽麻豆三区网站 | 一级AV性爱| 嗯嗯啊啊的视频| 中文字幕在线免费观看视频| 欧美激情区| 亚洲91网。| 亚洲强奸乱伦影视网| 国产999精品久久久| 久久久精久久久| 秋霞久久亚洲精品成人| 亚洲天天更新| 久湿久久| 国产精品情侣啪啪| 大伊香蕉在线视频免费| 9999久久久| 牛牛久久国产精品视频一二三 | 97人人夜| 久日91在线| 婷婷色综合| 97人人夜夜精品视频| 亚洲97资源| 操学生天天| 成人欧美一区二区三区黑人一| 麻豆视频国产一区二区| 欧美日本不卡在线| 天天操人人操骚逼网站| 四虎AV无码| 国产一区二区三区影片| 少妇一区二区三区精选| 亚洲97在线| 亚洲系列欧美| 爱欲AV| 丁香五月成人| 视频分类 国内精品| 成人无遮挡毛片免费看| 手机在线大香蕉| 天天日美女的B| 夜夜高潮夜夜爽高清视频一| 97色色色| www久| 国产高清成人mv在线观看| 在线a亚洲视频播放在线| 伊人网在线点播| 青青草玖玖爱| 色婷婷久久综合超碰| 澳门成人网站久国产日韩| 婷婷五月天AV| 亚洲欧洲综合视频在线| 国产a级午夜毛片| 夜夜影视四色| 日韩Va亚洲va欧美Ⅴa久久| 久久精品国产欧美日韩亚洲欧美日韩中文久久国产一区 | 另类欧美| 亚洲不卡一| 综合性视频99| 欧美综合777| 青青操视频在线| 伊人 俄罗斯 a v| 欧美情色贴图| 欧美日韩人妻婷婷一区| ai欧美亚洲小说| SS久久| 久久久久久91香蕉国产| 亚洲淫色网中文| 欧美色日本| 欧美 熟女 日韩| 亚洲日韩少妇一道本视频| 抽插爽| 第45页一区二区| 久久婷婷在线观看视频| 91黑丝美女| 97视频900| 欧美日韩中国x| 伊人在线大香蕉二。| 久草线上视频免费看| 亚洲素人综合| 日本506070| av三级电影在线播放| 免费视频在线一区二区不卡| ji熟女.com| 三级三级三级a级全黄三| 特级丰满少妇一级AAAA爱毛片 | 欧美综合色,www| 激情欧美97| 日韩中文字墓| 亚洲制服aⅴ中文字幕| 日韩精品黄片免费观看| 99热在线播放| 午夜欧美J进J出白浆流出久久久| 人人爽人人精品乱人伦AV| 91在线一起| 91色拍| 日本日逼高清| 丁香六月综合激情| 麻豆性爱视频在线播放| 日本五区不卡| 亚洲一区二区三区在线激情| 免费超碰97在线观看| 性爱av网站| 91 国产丝袜在线放观看| 97超碰久久色| 国产精品网址| 日本高清_区二区三区 | 婷婷性网| 亚洲国产成人7777| 五月丁香综合啪啪| 日韩中文字幕av在线播放| 久热精品在线| 永久免费av无码网站国产app| 最新日产中文在线麻豆| 国产九九久久久精品| 中亚黄色三级大片 | 日韩/97| 日韩综合色网| 亚洲av国产av综合av卡| 五月激情在线| 九九九草| 亚洲色图尤物视频| 亚洲夜色在线| 精品人妻一区二区三区不卡断 | 国产精品一二三免费网站| 日韩精品人妻一| 欧美视频在线视频免费va| 免费看美国人人爽,人人操| 午夜综合在线| 极品欧美一区二区三区| 超碰成人免费| 中文熟女五十乱码在线| 影音先锋乱伦资源| ss久久| 97在线视频免费看| 大伊香蕉在线视频免费| 欧美 日韩 另类 亚洲| 射综合网| 成人av免费观看| 91精品人妻啪啪间| 成人a级高清视频在线观看| 婷婷四五区| 啊啊啊好大好深| 情色图区| 国产一区二区二区按摩精品啪视频| 精品毛片av一区二区| 久久久99久9| 超碰地址久久| 五月婷婷影院| 超碰超碰超碰超碰的大鸡吧操黑丝袜| 日韩 欧美 另类 人妻| 91夜夜蜜桃臀1区2区3区| 私人尤物在线精品不卡| 欧美色道啊| 国产多人在线观看视频| 伊人成人情色综合| aaa亚无码专区| 蜜臀久久99精品久久久久久久久| 亚洲女人91| 五月天成人综合| 99热在线只有精品| 淫妻综合网| …亚洲黄色厕厕女女在线播…| 丁香六月婷婷| 中文字幕后石码四区五区| 色噜噜综合在线| 日韩肏逼视频| 大香蕉一人在线| 国产成人一级av88| 激情文学小说一区二区 | 男女真人网18| 婷婷人妻激情| 97久久资源| 强奸乱伦AV一天堂网| ai欧美亚洲小说| 日韩黄色一区二区三区| 亚洲欧美综合网| 天美传媒av 在线| 伊人操你| 色香综合天天影视综合 | 级品肉射| 亚洲无码一区二区三区三州| 2017天天插| 江都AV在线| 在线观看AV片| 青女偷拍网| 丰满少妇人妻久久久久久| A级毛片在线看免费| 亚拍在线| 欧美后进式| 素人一区二区三区日韩| 18禁久久| 高树玛利亚无码流出| 手机在线人成免费视频| 欧美综合第一页| 精品无码一二三四区| 深田咏美亚洲精品福利社| 久久一区二区三区四区五区| 男人的天堂日本东京热| 噜噜在线| 人人人人插| 日本不卡五区| 97爱啪| 极品白嫩福利在线| 日韩一级成人毛片免费观看| 五月天亚洲色图| 91影视亚洲| 美女黄页| 超碰99在线观看| 日韩欧美成人综合在线| 天美传媒AV在线播放| 东京热不卡视频| 精品无码久久久| 簧片免费看视频| 久久首页| av黄图片在线观看| 欧美色图99| 综合色拍| 亚洲五区熟女| 91无人区卡一卡二卡三乱码入口最新版:能让用户有更多选择的选择-经典说说-爱 | 欧美玖玖爱免费玖玖| 混色激情av| 97色色婷婷| 亚洲欧综合另类无码一区| 日韩啊V| 亚洲Av诱惑| 亚洲熟女少妇免费视频| 欧美久久婷婷| 国产天天骚| 夂久色| 欧美在线播放aaaa| 夜嗨影院| 99久久婷婷丁香| 天天插夜夜操| 久久国产逼| 日本人妻最新在线中| 日韩熟女精一区二区三区不卡| 综合性视频99| 欧美国产操逼| 9999亚洲精品| 免费看污网址| 激情欧美日韩女同久久| 亚洲色图加勒比| 啊啊啊好湿国产一二| 亚洲另类综合欧美| 人妻丝袜无 码视频专区| 超碰在线国产| 99色热| 人妻熟女一区在| 九九成人视频| 调教熟妇 久久久久久| 婷婷伊人綜合中文字幕| 97干在线| 爱爱动态120秒| 久久a久久| 国产有码一区| 女生自91网站| 欧美天天综合站| 久久是精品| 国产夫妻性生活视频| 亚洲日韩97| 蜜臀99久久国产| 欧美天天弄| a片在线播放| 精品无码久久久久久国产浪潮| 一个国产在线综合网站| 亚洲1区2区三区高清中文字幕| 亚洲第2页| 一区二区三区激情在线观看| 九九Av| 91婷婷伊人狠人| 99re不伦| 久久精品电影| 色九久| 亚洲人体视频在线观看| 国产日韩欧美亚洲精品95 | 亚洲色欲一区二区三区| 日韩不卡码| 99最新日韩偷拍视频| 日日骚一区二区三区| 久久久久夜夜夜夜| 欧美性生活免费网| 精品少妇一区二区三区在线视频| 人妻激情另类| 97超碰资源网| 99re黄| 八戒无码国产午夜福利| 国产在线视视频有精品| 91麻豆天美国产欧美| 伊人久久大香线综合无码| 91精品免费| 天美传媒精品一区二区| 精品一区二区成人| 97超碰jingpin| 国产视频第2页| 精品一区二区三区麻豆| 国产精品爽爽v| 婷婷激情四射| 精品二999| 九九九热| 999岛国大片| 青草香蕉网| 精品人妻丰满熟妇一区二区三| 日婷婷| 日韩有码一区三区| 亚洲天堂美臀在线| 久久精品国产亚洲AV清纯| AV无码久久久精品| 大香蕉欧美伊| 亚洲图片91| 一级特级aaaa毛片免费观看 | 97天天插| 91爱啪| 亚洲黄a三级三级三级看三级| 夜夜高潮夜夜爽夜夜爱爱一区| 中文字幕,人妻,日韩| 日产狠狠干| 青青久久久| 午夜福利av电影在线| 国产精品91一样| 久草看看看| 日韩AV无码中文一区二区| 91新在线欧美| 97干在线| 色噜噜婷婷| 日本不卡免费二区| 大香蕉久| 91天射| 国产v片在线免费观看| 熟妇在线视频一区二区| 精品国产乱码久久久影院| 无套内射人妻在线播放| 久久久av爱| 天天影视色香欲综合网小说| 亚洲国产第一页综合视频| rivers-china.com| 人人射人人操人人摸| 碰超人人在线一区二区三区| 久久久亚洲Av| 免费网色网站| 6080YYY午夜理论片在线观看| 热天堂一区二区| 国产精品成人久久一区二区三区| 性久久久| 抽查国产福利主播| 欧美影院一区二区三区| 韩国久久97| 中日韓欧美高清| 啪啪啪综合网| 日韩一级二级三级| 亚洲色五月| 日日爱99| 综精品久久久aaaa| 大屁股人妻女教师撅着屁股| 日韩精品人妻系列无码天堂| www熟女乱伦com| 久久精品72| 在线看的av| 91操人| 91干熟女| 97欧美日韩| 成人AV素股で擦久久| 国内毛片热久久思思热| 中 文字幕一区二区三四 五 区日 日 骚 | 欧美亚男人的天堂| 亚洲图片激情综合另类| 欧美国产操逼| 99色热| AVE乱伦| 欧美在线中M| 91丨九色丨国产打屁股| 中文字幕一区二区视频在线观看| 综合久欧洲| 国产成人免费观看在线视频 | 夜夜肏2021| 操屄日韩| 天美传媒av在线| 婷婷五月天成人| 99久久久久久亚洲精品不卡| 亚洲国产青青| 夜夜嗨一区二区| 国产亚洲精品精AV.| 另类成人首页一区| 亚洲欧洲偷拍一区| 一区二区三区黄色片a| 日韩欧美~中文字| www四虎| 亚洲色图日韩精品| 九九九九AV| 天天天天做夜夜夜夜做| 色色五月婷婷| 国产毛片在线| 青青青在线高清视频在线一二三四区| 射丝袜高跟鞋99| 欧美性爱伊人| 久草精品国产99| 88在线一区二区三区| 久久久久久久久久久人妻| 中文一区在线视频| 人人模人人看| 日产精品久久久一区二区| 天天摸夜夜摸| 天天操天天插| 国产浮力影院第1页| 操东北女人| 欧美日韩系列| 中文幕97| 亚洲另类色图片| 午夜婷婷| 青青操狠狠撩| 色欲av国内精品久久久久久| 超碰 国产熟女精品一区| 18岁禁 茉莉成人久久| 丰满少妇精品一区二区| 亚洲男人的天堂网| 国产女人成人精品视频| 内射小黄片| 久久婷婷成人综合色怡春院| 我爱搞逼综合网| 亚洲精品欧美专业| 伊人AAA| 无码乱人伦中文视频| 操逼视频国产无套| 99精品人妻| 蜜桃天美传媒AV一区二区三区| 国产精品网站免费| 18精品一区| www.狠狠干.coom| 99视频自拍| 精品国产久热在线观看| 人人操人人搞人人草| 五码视频在线观看| 香蕉欧美| 欧美综合天天| 中文字幕熟女人妻丝袜| 中文字幕一区二区无码成人| 福利五区| 久久超碰天天| 久久久九九| 久久久91福利姬| 蜜臀av中文字幕| 肉丝无码中文高清| 97视频在线视频| 亚洲国产丝袜在线观看| 330dv亚洲成年视频网| 嗯嗯啊啊好疼| 亚洲精品1区| 伊人aaa| 亚洲色图伊人网| 亚洲综合骚逼| 蜜乳av一区二区三区| 96精品一区| 亚洲AV色图一区| 激情文学亚洲| 老熟乱一区二区三区四区| 亚州欧美另类| 夜夜欢天天干| 日韩欧美性吧婷婷乱伦大香蕉| 国产午夜在线观看| 91看黄片| 国产精品久久99日日| 日本操逼二区| 亚洲Av无码成人精品国产| 大地资源在线观看中文第二页| 不卡啪啪视频| 婷婷丁香六月天| 97国产色综合| 婷婷另类小说| 色五月激情AV在线| 色狠狠一区二区三区香蕉| 亚洲欧美在线丝袜| 人妻一区二区三区四区视频| 欧美区亚洲区偷拍区| 操逼www.| 国产激情久久久| 久久久久久久 九九九九九九九 | 欧美,日韩,中文,另类| 欧美激情内射| 色吧5亚洲| 岛国AB视频| 天天天天干| 久久视网78| 色99久草| 日本成a人v网站在线观看| 人人艹亚洲| 久久五月综合| 三级网站超变态精品| 999九九九九国产动| 97在线视频免费| 巨爆乳一区二区爆乳区| 亚洲福利中文字幕在线| 97综合在线观看| 久久视频,这里只有精品| 丰满人妻一区二区三区免费| 青青青国产手线观看视频2| 天天干夜夜操网| 九久久九精品视频| 亚洲色综网| 欧美 精品国产制服第一页 | 久久久成人免费av电影| 男人的天堂 在线一区| 国产精品久久久久久久毛片1| 长长久久88视频| 九一综合网| 亚洲久久久久| 日本在线播放不卡一区| 一区中文字幕二区日韩| 蜜桃臀av一区二区| 国产美女销魂在线观看不卡| 五月婷婷六月丁香| 久久偷偷色综合蜜桃| 夜夜草天天| 99热精品免费| 久久原创中文| 高清国产精品无码| 国产乱码久久| 亚洲色图 91| 人人操人人操人人操人人操人人操人人人11.CM | 双插性欧美一二三区| 久久熟女人| 日韩本不卡视频在线观看| 色就色综合| 久久人妻四季| 欧美综合第一页| 亚洲aV无码成人在线观看| 精品小视频在线| 思思久热在线精品66| 人人操av| 久操电影网| 久久99午夜精品一区人妻| AV高清一区| 久久精品熟女亚洲AV麻豆软件| 欧美在线干| 日本精品一区二区三| 韩日性爱av| 中文字幕十五区| 国产v片在线免费观看| 操穴国产| 午夜精品久久99蜜桃的功能章节| 91久久久久久久久18| 无码精品啪啪啪一区二区三区三州| 国产对白刺激视频| 淫荡网址| 一级毛片久久久久久久女人18| 91性高潮久久久久久久久| 中字一区| 婷婷丁香五月天综合东京热| 日本淫穴在线| 欧美老妇曰批的视频| 人人超碰在线观看黄| 狠狠色噜噜狠狠狠狠2018| 超碰激情808| 亚洲精品免费中文字幕| 超碰97玖玖爱| 久久亚洲欧美中文字幕国语| 黄资源| 黄色电影观看久久9| 久久久久斤小| 久久鲁干| 婷婷人妻激情| 久久,精品一二三| 亚洲国产综合图区中文字幕| 校园春色之综合网| 亚洲欧美日韩免费观看| 老熟女熟妇| 国产欧美日韩一区二区三区| 国桃视频产巨乳精品一区二区在线| 欧美性爱中文字幕无线码| 亚洲丝袜制服国产91_国语字幕免费观看完整版下载第5集_ | 麻豆av一区二区| 蜜臀久久99精品久久久老,,| 91日韩| 欧美少妇内射| 成年人性爱日韩| 国产精品另类| 厕所偷拍在线| 久久久久亚洲AV无码专区少妇| 97网址97| 婷婷丁香在线| 亚洲国产一级黄色视频| 麻豆精品天美| 伊人婷婷五月天| 欧美日本成人一区二区| 欧美成人综合| 91九色在线| 69av一区二区三区| 亚洲综合伊人| 欧美图片偷拍| 久久久久久亚洲中文| 天天综合欧美黑人| 97亚洲性爱| 国产精品自在线发布| 97在线免费视频观看| 日韩成人午夜精品久久高潮| 成人性爱全视频观看| 97九色| 亚洲素人综合| 殴美日韩m| 高清国产av无码| 在线亚洲 欧美 日本专区| 香蕉国产97| 九九久久国产精品| 久久九九网| 搞中出久久| 日本天天干天天操一区| 超碰久久精品| 蜜桃久久久久久久| 看一级黄色视频| 久久首页| 亚洲性网| 清纯唯美综合亚洲| 亚洲欧美日产国产91毛片| 熟女性视频| 欧美,日韩,亚洲视频| 中文字幕美女91| 日韩色香| 精品视频一区二区| 91l欧美在线| 99热免费| 激情五月综合网| 国产www色在线观看| 欧美精品精品一区二区| 亚洲欧美综合网| 爱妻综合网| 韩国女主播青草在线| 亚洲综合色男人网| 国产日韩欧美三级片 | 91亚洲欧美综合高清在线| 久久超碰亚洲人| 97色伦欧美| 91超级碰| 亚洲AV无码国产精品久久久久 | 日韩人体偷拍| 久久色情| 日韩一级免费性爱| 岛国AB视频| 久操网视频| 搞中出久久| 亚洲欧洲中文日韩女优乱码| 男人的天堂va在线| 91日产桃蜜| 日韩精品资源| 欧美色图片欧美色图| 97超碰人操| 久久夜精品一区二区三区| 日日夜夜噜| 老鸭窝黄色视频网站| 97超碰亚洲| 日本精品免费一区二区三区四区| 色哟哟-国产专区| 久草视频制服诱惑| a男人的天堂| 欧美色997| 日本A级视频| 97天天弄| 日产123区精品免费观看| 欧美国产操逼| 免费99精品国产自在在线| 四虎在线免费视频| 国产后入清纯| 97伊人超碰| 亚洲成人ab| 97综合网| 蜜臀AV秘一区翔田千里| 欧美1区二区三区公司 | 东北女人操比视频| 东北操逼| 亚洲双插| 国产精品噜噜噜日日日| 啊啊啊啊啊啊在线观看| 日韩成人私密一级精品av| 伊人久久综合影院精品久久久| 操逼视频国产无套|