精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

老大讓我整理下公司內部MySQL使用規范,分享給大家

數據庫 MySQL
最近涉及數據庫相關操作較多,公司現有規范也不是太全面,就根據網上各路大神的相關規范,整理了一些自用的規范用法,萬望指正。

[[338708]]

最近涉及數據庫相關操作較多,公司現有規范也不是太全面,就根據網上各路大神的相關規范,整理了一些自用的規范用法,萬望指正。

數據庫環境

dev: 開發環境

開發可讀寫,可修改表結構。開發人員可以修改表結構,可以隨意修改其中的數據但是需要保證不影響其他開發同事。 

test: 測試環境

開發可讀寫,開發人員可以通過工具修改表結構。

online: 線上環境

開發人員不允許直接在線上環境進行數據庫操作,如果需要操作必須找DBA進行操作并進行相應記錄,禁止進行壓力測試。

重點的問題,各個環境的mysql服務器對應的用戶權限,一定要做到權限劃分明確,有辨識度,能具體區分業務場景等。

命名規范

基本命名規則

  •  使用有意義的英文詞匯,詞匯中間以下劃線分隔。(不要用拼音)
  •  只能使用英文字母,數字,下劃線,并以英文字母開頭。
  •  庫、表、字段全部采用小寫,不要使用駝峰式命名。
  •  避免用ORACLE、MySQL的保留字,如desc,關鍵字如index。
  •  命名禁止超過32個字符,須見名之意,建議使用名詞不是動詞
  •  數據庫,數據表一律使用前綴
  •  臨時庫、表名必須以tmp為前綴,并以日期為后綴
  •  備份庫、表必須以bak為前綴,并以日期為后綴

為什么庫、表、字段全部采用小寫?

在 MySQL 中,數據庫和表對就于那些目錄下的目錄和文件。因而,操作系統的敏感性決定數據庫和表命名的大小寫敏感。

  •  Windows下是不區分大小寫的。
  •  Linux下大小寫規則
  •  數據庫名與表名是嚴格區分大小寫的;
  •  表的別名是嚴格區分大小寫的;
  •  列名與列的別名在所有的情況下均是忽略大小寫的;
  •  變量名也是嚴格區分大小寫的;
  •  如果已經設置了駝峰式的命名如何解決?需要在MySQL的配置文件my.ini中增加 lower_case_table_names = 1即可。

表命名

同一個模塊的表盡可能使用相同的前綴,表名稱盡可能表達含義。所有日志表均以 log_ 開頭

字段命名

  •  表達其實際含義的英文單詞或簡寫。布爾意義的字段以is_作為前綴,后接動詞過去分詞。
  •  各表之間相同意義的字段應同名。各表之間相同意義的字段,以去掉模塊前綴的表名_字段名命名。
  •  外鍵字段用表名_字段名表示其關聯關系。
  •  表的主鍵一般都約定成為id,自增類型,是別的表的外鍵均使用xxx_id的方式來表明。

索引命名

  •  非唯一索引必須按照“idx_字段名稱_字段名稱[_字段名]”進行命名
  •  唯一索引必須按照“uniq_字段名稱_字段名稱[_字段名]”進行命名

約束命名

  •  主鍵約束:pk_表名稱。
  •  唯一約束:uk_表名稱_字段名。(應用中需要同時有唯一性檢查邏輯。)

表設計規范

表引擎取決于實際應用場景;日志及報表類表建議用myisam,與交易,審核,金額相關的表建議用innodb引擎。如無說明,建表時一律采用innodb引擎

默認使用utf8mb4字符集,數據庫排序規則使用utf8mb4_general_ci,(由于數據庫定義使用了默認,數據表可以不再定義,但為保險起見,建議都寫上

為什么字符集不選擇utf8,排序規則不使用utf8_general_ci

采用utf8編碼的MySQL無法保存占位是4個字節的Emoji表情。為了使后端的項目,全面支持客戶端輸入的Emoji表情,升級編碼為utf8mb4是最佳解決方案。對于JDBC連接串設置了characterEncoding為utf8或者做了上述配置仍舊無法正常插入emoji數據的情況,需要在代碼中指定連接的字符集為utf8mb4。

所有表、字段均應用 comment 列屬性來描述此表、字段所代表的真正含義,如枚舉值則建議將該字段中使用的內容都定義出來。

如無說明,表中的第一個id字段一定是主鍵且為自動增長,禁止在非事務內作為上下文作為條件進行數據傳遞。禁止使用varchar類型作為主鍵語句設計。

如無說明,表必須包含create_time和modify_time字段,即表必須包含記錄創建時間和修改時間的字段

如無說明,表必須包含is_del,用來標示數據是否被刪除,原則上數據庫數據不允許物理刪除。

  •  用盡量少的存儲空間來存數一個字段的數據
  •  能用int的就不用char或者varchar
  •  能用tinyint的就不用int
  •  使用UNSIGNED存儲非負數值。
  •  不建議使用ENUM、SET類型,使用TINYINT來代替
  •  使用短數據類型,比如取值范圍為0-80時,使用TINYINT UNSIGNED
  •  存儲精確浮點數必須使用DECIMAL替代FLOAT和DOUBLE
  •  時間字段,除特殊情況一律采用int來記錄unix_timestamp
  •  存儲年使用YEAR類型。
  •  存儲日期使用DATE類型。
  •  存儲時間(精確到秒)建議使用TIMESTAMP類型,因為TIMESTAMP使用4字節,DATETIME使用8個字節。
  •  建議使用INT UNSIGNED存儲IPV4。
  •  盡可能不使用TEXT、BLOB類型
  •  禁止在數據庫中使用VARBINARY、BLOB存儲圖片、文件等。建議使用其他方式存儲(TFS/SFS),MySQL只保存指針信息。
  •  單條記錄大小禁止超過8k(列長度(中文)_3(UTF8)+列長度(英文)_1)

datetime與timestamp有什么不同?

相同點:

TIMESTAMP列的顯示格式與DATETIME列相同。顯示寬度固定在19字符,并且格式為YYYY-MM-DD HH:MM:SS。

不同點:

TIMESTAMP

  •  4個字節儲存,時間范圍:1970-01-01 08:00:01 ~ 2038-01-19 11:14:07值以UTC格式保存,涉及時區轉化 ,存儲時對當前的時區進行轉換,檢索時再轉換回當前的時區。
  •  datetime8個字節儲存,時間范圍:1000-01-01 00:00:00 ~ 9999-12-31 23:59:59
  •  實際格式儲存,與時區無關
  •  如何使用TIMESTAMP的自動賦值屬性?

將當前時間作為ts的默認值:ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP。當行更新時,更新ts的值:ts TIMESTAMP DEFAULT 0 ON UPDATE CURRENT_TIMESTAMP。

可以將1和2結合起來:ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP。

  •  如何使用INT UNSIGNED存儲ip?

使用INT UNSIGNED而不是char(15)來存儲ipv4地址,通過MySQL函數inet_ntoa和inet_aton來進行轉化。Ipv6地址目前沒有轉化函數,需要使用DECIMAL或者兩個bigINT來存儲。

  •  如無備注,所有字段都設置NOT NULL,并設置默認值;
  •  禁止在數據庫中存儲明文密碼
  •  如無備注,所有的布爾值字段,如is_hot、is_deleted,都必須設置一個默認值,并設為0;
  •  如無備注,排序字段order_id在程序中默認使用降序排列;
  •  整形定義中不添加長度,比如使用INT,而不是INT[4]

INT[M],M值代表什么含義?

注意數值類型括號后面的數字只是表示寬度而跟存儲范圍沒有關系。很多人他們認為INT(4)和INT(10)其取值范圍分別是 (-9999到9999)和(-9999999999到9999999999),這種理解是錯誤的。其實對整型中的 M值與 ZEROFILL 屬性結合使用時可以實現列值等寬。不管INT[M]中M值是多少,其取值范圍還是 (-2147483648到2147483647 有符號時),(0到4294967295無符號時)。

顯示寬度并不限制可以在列內保存的值的范圍,也不限制超過列的指定寬度的值的顯示。當結合可選擴展屬性ZEROFILL使用時默認補充的空格用零代替。例如:對于聲明為INT(5) ZEROFILL的列,值4檢索為00004。請注意如果在整數列保存超過顯示寬度的一個值,當MySQL為復雜聯接生成臨時表時會遇到問題,因為在這些情況下MySQL相信數據適合原列寬度,如果為一個數值列指定ZEROFILL, MySQL自動為該列添加UNSIGNED屬性。

  •  使用VARBINARY存儲大小寫敏感的變長字符串

什么時候用CHAR,什么時候用VARCHAR?

CHAR和VARCHAR類型類似,但它們保存和檢索的方式不同。它們的最大長度和是否尾部空格被保留等方面也不同。CHAR和VARCHAR類型聲明的長度表示你想要保存的最大字符數。例如,CHAR(30)可以占用30個字符。

CHAR列的長度固定為創建表時聲明的長度。長度可以為從0到255的任何值。當保存CHAR值時,在它們的右邊填充空格以達到指定的長度。當檢索到CHAR值時,尾部的空格被刪除掉。在存儲或檢索過程中不進行大小寫轉換。

VARCHAR列中的值為可變長字符串。長度可以指定為0到65,535之間的值。(VARCHAR的最大有效長度由最大行大小和使用的字符集確定。整體最大長度是65,532字節)。同CHAR對比,VARCHAR值保存時只保存需要的字符數,另加一個字節來記錄長度(如果列聲明的長度超過255,則使用兩個字節)。VARCHAR值保存時不進行填充。當值保存和檢索時尾部的空格仍保留,符合標準SQL。

char適合存儲用戶密碼的MD5哈希值,它的長度總是一樣的。對于經常改變的值,char也好于varchar,因為固定長度的行不容易產生碎片,對于很短的列,char的效率也高于varchar。char(1)字符串對于單字節字符集只會占用一個字節,但是varchar(1)則會占用2個字節,因為1個字節用來存儲長度信息。

索引設計規范

MySQL的查詢速度依賴良好的索引設計,因此索引對于高性能至關重要。合理的索引會加快查詢速度(包括UPDATE和DELETE的速度,MySQL會將包含該行的page加載到內存中,然后進行UPDATE或者DELETE操作),不合理的索引會降低速度。MySQL索引查找類似于新華字典的拼音和部首查找,當拼音和部首索引不存在時,只能通過一頁一頁的翻頁來查找。當MySQL查詢不能使用索引時,MySQL會進行全表掃描,會消耗大量的IO。索引的用途:去重、加速定位、避免排序、覆蓋索引。

什么是覆蓋索引

InnoDB存儲引擎中,secondary index(非主鍵索引)中沒有直接存儲行地址,存儲主鍵值。如果用戶需要查詢secondary index中所不包含的數據列時,需要先通過secondary index查找到主鍵值,然后再通過主鍵查詢到其他數據列,因此需要查詢兩次。覆蓋索引的概念就是查詢可以通過在一個索引中完成,覆蓋索引效率會比較高,主鍵查詢是天然的覆蓋索引。合理的創建索引以及合理的使用查詢語句,當使用到覆蓋索引時可以獲得性能提升。比如SELECT email,uid FROM user_email WHERE uid=xx,如果uid不是主鍵,適當時候可以將索引添加為index(uid,email),以獲得性能提升。

索引的基本規范

  •  索引數量控制,單張表中索引數量不超過5個,單個索引中的字段數不超過5個。
  •  綜合評估數據密度和分布
  •  考慮查詢和更新比例

為什么一張表中不能存在過多的索引?

InnoDB的secondary index使用b+tree來存儲,因此在UPDATE、DELETE、INSERT的時候需要對b+tree進行調整,過多的索引會減慢更新的速度。

對字符串使用前綴索引,前綴索引長度不超過8個字符,建議優先考慮前綴索引,必要時可添加偽列并建立索引。

不要索引blob/text等字段,不要索引大型字段,這樣做會讓索引占用太多的存儲空間

什么是前綴索引?

前綴索引說白了就是對文本的前幾個字符(具體是幾個字符在建立索引時指定)建立索引,這樣建立起來的索引更小,所以查詢更快。前綴索引能有效減小索引文件的大小,提高索引的速度。但是前綴索引也有它的壞處:MySQL 不能在 ORDER BY 或 GROUP BY 中使用前綴索引,也不能把它們用作覆蓋索引(Covering Index)。

建立前綴索引的語法:ALTER TABLE table_name ADD KEY(column_name(prefix_length));

主鍵準則

  •  表必須有主鍵
  •  不使用更新頻繁的列
  •  盡量不選擇字符串列
  •  不使用UUID MD5 HASH
  •  默認使用非空的唯一鍵
  •  建議選擇自增或發號器

重要的SQL必須被索引,核心SQL優先考慮覆蓋索索引

  •  UPDATE、DELETE語句的WHERE條件列
  •  ORDER BY、GROUP BY、DISTINCT的字段
  •  多表JOIN的字段

區分度最大的字段放在前面

  • 選擇篩選性更優的字段放在最前面,比如單號、userid等,type,status等篩選性一般不建議放在最前面
  •  索引根據左前綴原則,當建立一個聯合索引(a,b,c),則查詢條件里面只有包含(a)或(a,b)或(a,b,c)的時候才能走索引,(a,c)作為條件的時候只能使用到a列索引,所以這個時候要確定a的返回列一定不能太多,不然語句設計就不合理,(b,c)則不能走索引
  •  合理創建聯合索引(避免冗余),(a,b,c) 相當于 (a) 、(a,b) 、(a,b,c)

索引禁忌

  •  不在低基數列上建立索引,例如“性別”
  •  不在索引列進行數學運算和函數運算
  •  不要索引常用的小型表
  •  盡量不使用外鍵
  •  外鍵用來保護參照完整性,可在業務端實現
  •  對父表和子表的操作會相互影響,降低可用性
  •  INNODB本身對online DDL的限制

MYSQL 中索引的限制

  •  MYISAM 存儲引擎索引長度的總和不能超過 1000 字節
  •  BLOB 和 TEXT 類型的列只能創建前綴索引
  •  MYSQL 目前不支持函數索引
  •  使用不等于 (!= 或者 <>) 的時候, MYSQL 無法使用索引。
  •  過濾字段使用函數運算 (如 abs (column)) 后, MYSQL無法使用索引。
  •  join語句中join條件字段類型不一致的時候MYSQL無法使用索引
  •  使用 LIKE 操作的時候如果條件以通配符開始 (如 ‘%abc…’)時, MYSQL無法使用索引。
  •  使用非等值查詢的時候, MYSQL 無法使用 Hash 索引。

語句設計規范

使用預編譯語句

  •  只傳參數,比傳遞SQL語句更高效
  •  一次解析,多次使用
  •  降低SQL注入概率

避免隱式轉換

  •  會導致索引失效

充分利用前綴索引

  •  必須是最左前綴
  •  不可能同時用到兩個范圍條件
  •  不使用%前導的查詢,如like “%ab”

不使用負向查詢,如not in/like

  •  無法使用索引,導致全表掃描
  •  全表掃描導致buffer pool利用率降低

避免使用存儲過程、觸發器、UDF、events等

  •  讓數據庫做最擅長的事
  •  降低業務耦合度,為sacle out、sharding留有余地
  •  避開BUG

避免使用大表的JOIN

  •  MySQL最擅長的是單表的主鍵/二級索引查詢
  •  JOIN消耗較多內存,產生臨時表

避免在數據庫中進行數學運算

  •  MySQL不擅長數學運算和邏輯判斷
  •  無法使用索引

減少與數據庫的交互次數

  •  INSERT … ON DUPLICATE KEY UPDATE
  •  REPLACE INTO、INSERT IGNORE 、INSERT INTO VALUES(),(),()
  •  UPDATE … WHERE ID IN(10,20,50,…)

合理的使用分頁

限制分頁展示的頁數只能點擊上一頁、下一頁采用延遲關聯

如何正確的使用分頁?

假如有類似下面分頁語句:SELECT * FROM table ORDER BY id LIMIT 10000, 10由于MySQL里對LIMIT OFFSET的處理方式是取出OFFSET+LIMIT的所有數據,然后去掉OFFSET,返回底部的LIMIT。所以,在OFFSET數值較大時,MySQL的查詢性能會非常低。可以使用id > n 的方式進行解決:

使用id > n 的方式有局限性,對于id不連續的問題,可以通過翻頁的時候同時傳入最后一個id方式來解決。 

  1. http://example.com/page.php?last=100  
  2. select * from table where id<100 order by id desc limit 10  
  3. //上一頁 
  4.  http://example.com/page.php?first=110  
  5. select * from table where id>110 order by id desc limit 10 

這種方式比較大的缺點是,如果在瀏覽中有插入/刪除操作,翻頁不會更新,而總頁數可能仍然是根據新的count(*) 來計算,最終可能會產生某些記錄訪問不到。為了修補這個問題,可以繼續引入當前頁碼以及在上次翻頁以后是否有插入/刪除等影響總記錄數的操作并進行緩存 

  1. select * from table where id >= (select id from table order by id limit #offset#, 1) 
  •  拒絕大SQL,拆分成小SQL
  •  充分利用QUERY CACHE
  •  充分利用多核CPU
  •  使用in代替or,in的值不超過1000個
  •  禁止使用order by rand()
  •  使用EXPLAIN診斷,避免生成臨時表

EXPLAIN語句(在MySQL客戶端中執行)可以獲得MySQL如何執行SELECT語句的信息。通過對SELECT語句執行EXPLAIN,可以知曉MySQL執行該SELECT語句時是否使用了索引、全表掃描、臨時表、排序等信息。盡量避免MySQL進行全表掃描、使用臨時表、排序等。詳見官方文檔。

  •  用union all而不是union

union all與 union有什么區別?

union和union all關鍵字都是將兩個結果集合并為一個,但這兩者從使用和效率上來說都有所不同。

union在進行表鏈接后會篩選掉重復的記錄,所以在表鏈接后會對所產生的結果集進行排序運算,刪除重復的記錄再返回結果。如: 

  1. select * from test_union1  
  2. union select * from test_union2 

這個SQL在運行時先取出兩個表的結果,再用排序空間進行排序刪除重復的記錄,最后返回結果集,如果表數據量大的話可能會導致用磁盤進行排序。

而union all只是簡單的將兩個結果合并后就返回。這樣,如果返回的兩個結果集中有重復的數據,那么返回的結果集就會包含重復的數據了。

從效率上說,union all要比union快很多,所以,如果可以確認合并的兩個結果集中不包含重復的數據的話,那么就使用union all,如下: 

  1. select * from test_union1 union all select * from test_union2 
  •  程序應有捕獲SQL異常的處理機制
  •  禁止單條SQL語句同時更新多個表
  •  不使用select * ,SELECT語句只獲取需要的字段
  •  消耗CPU和IO、消耗網絡帶寬
  •  無法使用覆蓋索引
  •  減少表結構變更帶來的影響
  •  因為大,select/join 可能生成臨時表
  •  UPDATE、DELETE語句不使用LIMIT
  •  INSERT語句必須顯式的指明字段名稱,不使用INSERT INTO table()
  •  INSERT語句使用batch提交(INSERT INTO table VALUES(),(),()……),values的個數不超過500
  •  統計表中記錄數時使用COUNT(*),而不是COUNT(primary_key)和COUNT(1) 備注:僅針對Myisam
  •  數據更新建議使用二級索引先查詢出主鍵,再根據主鍵進行數據更新
  •  禁止使用跨庫查詢
  •  禁止使用子查詢,建議將子查詢轉換成關聯查詢
  •  針對varchar類型字段的程序處理,請驗證用戶輸入,不要超出其預設的長度;

分表規范

單表一到兩年內數據量超過500w或數據容量超過10G考慮分表,需提前考慮歷史數據遷移或應用自行刪除歷史數據,采用等量均衡分表或根據業務規則分表均可。要分表的數據表必須與DBA商量分表策略

  •  用HASH進行散表,表名后綴使用十進制數,下標從0開始
  •  按日期時間分表需符合YYYY[MM][dd][HH]格式
  •  采用合適的分庫分表策略。例如千庫十表、十庫百表等
  •  禁止使用分區表,分區表對分區鍵有嚴格要,分區表在表變大后執行DDL、SHARDING、單表恢復等都變得更加困難。
  •  拆分大字段和訪問頻率低的字段,分離冷熱數據

行為規范

  •  批量導入、導出數據必須提前通知DBA協助觀察
  •   禁止在線上從庫執行后臺管理和統計類查詢
  •  禁止有super權限的應用程序賬號存在
  •  產品出現非數據庫導致的故障時及時通知DBA協助排查
  •  推廣活動或上線新功能必須提前通知DBA進行流量評估
  •  數據庫數據丟失,及時聯系DBA進行恢復
  •  對單表的多次alter操作必須合并為一次操作
  •  不在MySQL數據庫中存放業務邏輯
  •  重大項目的數據庫方案選型和設計必須提前通知DBA參與
  •  對特別重要的庫表,提前與DBA溝通確定維護和備份優先級
  •  不在業務高峰期批量更新、查詢數據庫其他規范
  •  提交線上建表改表需求,必須詳細注明所有相關SQL語句

其他規范

日志類數據不建議存儲在MySQL上,優先考慮Hbase或OceanBase,如需要存儲請找DBA評估使用壓縮表存儲。 

 

責任編輯:龐桂玉 來源: 數據庫開發
相關推薦

2015-12-31 13:56:09

創業

2016-11-09 13:52:33

內部數據KPI

2016-11-09 15:36:19

數據平臺大數據

2024-01-25 08:32:34

OpenAI人工智能AI

2021-01-29 07:45:27

if-else代碼數據

2015-11-03 10:17:11

Dynatrace

2019-10-15 14:16:45

編程語言Go 開發

2009-06-23 10:03:44

暴雪內部圖片

2021-06-02 06:49:18

Redis緩存設計.

2021-03-26 09:40:46

黑客攻擊信息安全

2010-05-25 15:21:29

思科網真

2013-02-25 12:21:18

2022-04-18 10:36:48

社交軟件聊天平臺rocket.cha

2022-08-19 09:12:19

數據庫開發

2023-01-16 08:19:25

線上JVM調優

2020-12-30 09:55:56

鴻蒙HarmonyOS環境搭建

2022-02-23 12:01:41

內部威脅數據泄露

2012-12-06 15:31:48

英特爾CEO歐德寧

2021-09-14 17:16:21

Java 同步工具類

2020-07-27 07:53:36

高并發流量系統
點贊
收藏

51CTO技術棧公眾號

久久久久久婷婷| 久精品国产欧美| 国产色无码精品视频国产| 日韩精品一区国产| 精品福利在线看| 日韩欧美一区二区在线观看| 一区二区三区亚洲视频| 国产一区亚洲| 一区二区三区精品99久久 | 97人人干人人| 中文字幕第四页| 99视频精品视频高清免费| 亚洲精品一区二区三区福利| 久久久久久三级| 91aaa精品| 丰满少妇乱子伦精品看片| av一区二区在线观看| 欧美成人福利视频| 天堂中文视频在线| yellow字幕网在线| 亚洲日本在线天堂| 欧美福利一区二区三区| 国产极品久久久| 青青草成人在线观看| 国内揄拍国内精品| 欧美日韩免费做爰视频| 国产精品免费大片| 亚洲黄色av网站| 天堂网成人在线| 忘忧草在线www成人影院| 亚洲午夜电影网| 国产亚洲成av人在线观看导航| 欧美大学生性色视频| a毛片毛片av永久免费| 中文字幕久久精品一区二区| 欧美日本精品一区二区三区| 国产黄色一级网站| 2020av在线| 亚洲精品国产一区二区三区四区在线| 欧美在线播放一区二区| 天天摸天天干天天操| 国产成人免费xxxxxxxx| 91免费在线视频| 中文字幕视频免费观看| 日韩精品电影一区亚洲| 日本欧美在线视频| 黄色在线观看国产| 日韩亚洲在线| 婷婷六月综合| 日韩欧美在线观看一区二区三区| 成人三级视频在线播放| 蜜桃麻豆影像在线观看| 亚洲电影一区二区| 97视频在线免费| 久草在线视频网站| 亚洲第一福利一区| 国产免费观看高清视频| 波多野结衣视频一区二区| 亚洲一区二区三区四区的| 成人高清dvd| 色黄网站在线观看| 亚洲一区二区三区视频在线播放 | 国产精品直播网红| 中文字幕一区二区三区波野结| www.五月激情| 久久精品毛片| 国产精品亚洲美女av网站| 成人黄色片在线观看| 青青草97国产精品免费观看| 国产欧美欧洲在线观看| 91丨porny丨在线中文 | 最新电影电视剧在线观看免费观看| 久久日韩精品一区二区五区| 免费久久99精品国产自| 国产片在线观看| 中文在线一区二区| 久久久一二三四| 手机在线免费看av| 欧美日韩四区| av一区二区三区黑人| 成人在线国产精品| www久久久com| 91在线观看高清| 日韩欧美三级电影| 岛国成人毛片| 亚洲一区二区偷拍精品| 男人靠女人免费视频网站| 成人福利片在线| 制服丝袜激情欧洲亚洲| 国产成人精品一区二区在线小狼| 黄色欧美网站| 中国日韩欧美久久久久久久久| 可以免费看av的网址| 亚洲视频碰碰| 国产精品视频地址| 懂色av蜜臀av粉嫩av分享吧| 久久久精品黄色| 波多野结衣在线一区| 91九色国产视频| 成人精品在线播放| 国产人伦精品一区二区| 国产 国语对白 露脸| 成人av观看| 日韩一区二区三区视频在线观看| 艳妇乳肉亭妇荡乳av| 久久中文字幕av| 97精品在线观看| 911美女片黄在线观看游戏| 丁香亚洲综合激情啪啪综合| 日韩一本精品| 污视频网站在线免费| 一本大道久久a久久综合| 色姑娘综合天天| 香蕉久久精品| 欧美国产乱视频| 成人免费观看在线| 男人天堂综合网| 国产精品久99| 美女福利视频在线| 91在线一区| 中文字幕亚洲一区二区三区五十路 | 99re这里都是精品| 一级黄色片播放| 欧美影视资讯| 日韩av影片在线观看| 久久久精品视频免费观看| 美日韩精品视频| 国产精品一区二区三区不卡 | 国产精品国产三级国产有无不卡| 欧美成人在线免费| 黄色三级视频在线| 免费观看成人www动漫视频| 精品久久国产精品| 成年人视频免费| 久久无码av三级| 国产日本在线播放| 精品国产鲁一鲁****| 色婷婷久久一区二区| 中文字幕777| 久久久99精品免费观看不卡| 男人用嘴添女人下身免费视频| 精品亚洲a∨一区二区三区18| 中文字幕在线观看亚洲| 青青草视频在线观看免费| 99久久精品99国产精品| 我的公把我弄高潮了视频| 91精品短视频| 欧美疯狂xxxx大交乱88av| 99国产在线播放| 欧美大片网站| 亚洲无人区一区| 黄色片子免费看| 欧美91精品| 99国产超薄肉色丝袜交足的后果| 免费在线观看黄| 精品视频999| 农村老熟妇乱子伦视频| 麻豆成人免费电影| 婷婷视频在线播放| 精品国产伦一区二区三区观看说明| 精品国产一区二区三区久久狼黑人| 成人黄色片在线观看| 国产精品久久午夜| 污污的视频免费观看| 亚洲在线久久| 国产经典一区二区三区| 爱草tv视频在线观看992| 精品视频久久久久久久| 日韩 国产 欧美| 欧美不卡高清一区二区三区| 91精品国产91久久久久久一区二区| 最新日韩免费视频| 国产一区二区三区在线观看免费| 美女在线免费视频| av综合网址| 亲爱的老师9免费观看全集电视剧| 青青草视频在线观看| 欧美亚洲免费在线一区| 欧美在线视频第一页| 国产成都精品91一区二区三| 国产精品无码人妻一区二区在线| 亚洲肉体裸体xxxx137| 国产日韩欧美日韩大片| 天堂av中文在线| 亚洲男人第一网站| 亚洲综合精品视频| 亚洲成人av一区| x88av在线| 国产精品一卡二卡在线观看| 黄色免费福利视频| 91丝袜一区二区三区| 久久久久综合| 日本成人性视频| 欧美男男freegayvideosroom| 国产成人高潮免费观看精品| 国产黄网站在线观看| 日韩av影院在线观看| 中文字幕一区二区三区四区视频| 一区二区三区不卡在线观看| 高潮毛片无遮挡| 国产白丝精品91爽爽久久 | free性护士videos欧美| 亚洲免费av网址| 国产99视频在线| 在线视频一区二区三区| 国产在线观看免费视频今夜| 国产欧美视频一区二区| 免费观看污网站| 石原莉奈一区二区三区在线观看| 久久久久久久免费视频| 啪啪亚洲精品| 中文字幕一区二区三区在线播放| 一个人看的视频www| 天使萌一区二区三区免费观看| 亚洲小视频在线播放| 精品国产精品国产偷麻豆| 国产高清在线一区| 久久的色偷偷| 国产精品免费网站| 五月天av在线| 高清亚洲成在人网站天堂| 久久综合网导航| 国产性猛交xxxx免费看久久| 天堂中文在线观看视频| 日韩欧美国产一区二区三区| 91在线观看喷潮| 欧美偷拍一区二区| 人妻 日韩精品 中文字幕| 亚洲第一主播视频| 久久久久亚洲av成人片| 亚洲特黄一级片| 国产又粗又猛又爽又黄的视频小说| 99国产麻豆精品| 久中文字幕一区| 国产又粗又猛又爽又黄的视频一| 一区二区三区日韩欧美精品| 欧美风情第一页| 国产精品热久久久久夜色精品三区 | 亚洲一区二区三区欧美| 欧美日韩有码| 日产精品高清视频免费| 杨幂一区二区三区免费看视频| 成人欧美一区二区三区视频xxx| 91麻豆精品国产91久久久更新资源速度超快| 欧美在线国产精品| 最新欧美色图| 欧美专区福利在线| 成人勉费视频| 国产精品久久精品| 国产精品久久亚洲不卡| 国产精品成熟老女人| 久久xxx视频| 国产狼人综合免费视频| 亚洲网站免费| 日韩精品在线免费播放| 国产一区二区视频免费在线观看| 天天躁日日躁狠狠躁欧美巨大小说| 国产欧美综合精品一区二区| 黄色欧美在线| 裸模一区二区三区免费| 亚洲最大在线| 亚洲一区精彩视频| 亚洲人metart人体| 欧美性猛交内射兽交老熟妇| 好看的亚洲午夜视频在线| 黄色成人在线看| 母乳一区在线观看| 亚洲 欧美 日韩系列| 精品亚洲免费视频| 精品无码av一区二区三区| 99久精品国产| www.日本高清视频| 亚洲视频每日更新| 精品一区在线视频| 日韩欧美在线视频| 91av国产精品| 亚洲国产精品久久久久久| 男人天堂网在线| 丝袜情趣国产精品| 色悠悠久久综合网| 一本久久知道综合久久| 九色porny91| 国产精品一区二区三区网站| 在线精品一区二区三区| 欧美韩日一区二区三区四区| 手机在线中文字幕| 香港成人在线视频| 中文在线免费观看| 欧美大片国产精品| 国产有码在线| 欧美成人免费小视频| 亚洲一二三四| 91九色在线观看| 少妇一区二区视频| 大片在线观看网站免费收看| 亚洲精品孕妇| 不卡中文字幕在线观看| 91女神在线视频| www.97视频| 欧美特级www| 国产偷拍一区二区| 亚洲奶大毛多的老太婆| 羞羞污视频在线观看| 日本一区二区不卡| 成人在线免费视频| 亚洲一区日韩精品中文字幕| 好看的av在线| 精品国产乱码久久久久久牛牛| 国产女主播在线写真| 国模极品一区二区三区| 黄色精品视频网站| 欧美日韩另类丝袜其他| 欧美日韩国产一区精品一区| 超碰影院在线观看| 北岛玲一区二区三区四区| 精品视频第一页| 色综合天天狠狠| 色呦呦视频在线| 欧美成人精品一区二区三区| 国产一区一一区高清不卡| 精品乱子伦一区二区三区| 欧美激情视频一区二区三区免费| 成人黄色一区二区| 91丝袜国产在线播放| 毛片aaaaa| 欧美精品乱人伦久久久久久| 黄色片免费在线| 97视频人免费观看| 成人中文字幕视频| 亚洲国产精品女人| 久久精品国产99久久6| 亚洲欧洲在线一区| 青草在线视频| 欧美一级淫片丝袜脚交| av一级亚洲| 国产手机免费视频| 国产福利一区在线观看| 国产黄色小视频网站| 欧美日韩成人激情| av在线天堂播放| 国产精品视频网址| 不卡一区综合视频| 免费涩涩18网站入口| 久久精品在线观看| 国产一区二区视频免费| 亚洲无亚洲人成网站77777| 久久人体大尺度| 欧美少妇一区| 丝袜脚交一区二区| 亚洲ⅴ国产v天堂a无码二区| 91官网在线观看| av网站无病毒在线| 国产精品久久久久久久久久久久久久 | 欧美性大战久久久久久久蜜臀| 日韩在线免费看| 一本色道久久综合亚洲aⅴ蜜桃 | 国产一级大片免费看| 国产精品一区一区| 日韩乱码一区二区| 国产视频久久久久| 国产亚洲一区二区手机在线观看| 欧美一区二视频在线免费观看| 视频一区二区中文字幕| 亚洲综合欧美综合| 欧美精品久久天天躁| 在线观看中文字幕的网站| yellow视频在线观看一区二区 | 一本大道熟女人妻中文字幕在线| 久久色.com| 国产精品久久婷婷| 欧美激情中文字幕乱码免费| 青青草这里只有精品| 欧美一级黄色影院| 中文字幕视频一区| 北条麻妃一二三区| 538国产精品视频一区二区| 精品国产一区探花在线观看| 999在线精品视频| 噜噜噜躁狠狠躁狠狠精品视频 | 孩娇小videos精品| 亚洲免费观看视频| 五月天婷婷在线播放| 国产福利精品在线| 天天影视天天精品| 完美搭档在线观看| 欧美在线色视频| 少女频道在线观看免费播放电视剧| 精品国产乱码久久久久| 日韩主播视频在线| 欧美日韩三级在线观看| 精品亚洲夜色av98在线观看| 日韩国产一二三区| 9久久9毛片又大又硬又粗| 国产精品久久久久一区| 内射后入在线观看一区| 国产欧美精品日韩精品| 在线播放日韩| 久久精品日韩无码| 精品视频偷偷看在线观看| 粉嫩一区二区三区在线观看|