久久精品国产精品国产精品污,男人扒开添女人下部免费视频,一级国产69式性姿势免费视频,夜鲁夜鲁很鲁在线视频 视频,欧美丰满少妇一区二区三区,国产偷国产偷亚洲高清人乐享,中文 在线 日韩 亚洲 欧美,熟妇人妻无乱码中文字幕真矢织江,一区二区三区人妻制服国产

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

面试-03-数据库和事务专题

發布時間:2023/12/20 数据库 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 面试-03-数据库和事务专题 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

關鍵字

1 存儲引擎

1.1 Mysql 的架構圖

1.2 選擇合適的存儲引擎

1.3 InnoDB 和 MyIsam 的對比

1.3.1 兩者的區別

1.3.2 關于兩者的總結

1.4 一張表,里面有 ID 自增主鍵,當 insert 了 17 條記錄之后,刪除了第15、16、17 條記錄,再把 Mysql 重啟,再 insert 一條記錄,這條記錄的 ID 是 18 還是 15

1.5 Mysql 服務器默認端口是什么

1.6 LIKE 聲明中的 % 和 _ 是什么意思

2 事務的概念和 ACID 特性

2.1 概念

2.2 ACID 特性

2.2.1 原子性(Atomicity)

2.2.2 一致性(Consistency)

2.2.3 隔離性(Isolation)

2.2.4 持久性(Durability)

3 事務隔離級別詳解

3.1 四個隔離級別

3.2 隔離級別與一致性問題的關系

3.3 默認隔離級別的理解

4 分布式事務

4.1 什么是分布式事務

4.2 CAP 定理和 Base 理論

4.3 2PC 二階段分步提交

4.4 TCC (Try Confirm Cancel)

4.5 項目中的使用

5 數據庫鎖和并發策略

5.1 數據庫鎖的分類

5.1.1 行級鎖

5.1.2 表級鎖

5.1.3 頁級鎖

5.2 數據庫的并發策略

5.2.1 樂觀鎖

5.2.2 悲觀鎖

5.2.3 鎖表問題

6 存儲過程和觸發器

6.1 存儲過程(特定功能的 SQL 語句集)

6.2 觸發器(一段能自動執行的程序)

7 數據庫結構優化

7.1 三大范式

7.2 數據庫命名規范

7.3 建表時優化

7.3.1 列選擇原則

7.3.2 主鍵的選擇

7.3.3 反范式設計表

7.3.4 將字段很多的表分解成多個表

7.3.5 增加中間表

7.3.6 增加冗余字段

8 查詢語句優化

8.1 數據庫優化概述

8.1.1 什么是優化?

8.1.2 數據庫性能參數

8.2 常見的查詢優化

8.2.1 緩存優化

8.2.2 讀寫分離

8.2.3 mysql 的分庫分表

8.3 EXPLAIN

8.3.1 id

8.3.2 select_type

8.3.3 table

8.3.4 type

8.3.5 possible_keys

8.3.6 key

8.3.7 key_len

8.3.8 ref

8.3.9 rows

8.3.10 Extra

8.4 in 型子查詢引出的陷阱

8.5 from 型子查詢

8.6 count() 優化

8.7 group by

8.8 union 優化

8.9 巧用變量

8.10 子查詢優化

9 索引及優化

9.1 索引的作用

9.2 索引的分類

9.3 索引的優點

9.4 索引的缺點

9.5 哪些情況或字段適合加索引

9.6 哪些情況不適合創建索引

9.7 哪些情況會造成索引失效

9.8 索引相關 sql

9.8.1 創建索引

9.8.2 刪除索引

9.8.3 查看索引

9.9 索引原理

9.9.1 BTree 索引

9.9.2 B+Tree 索引

9.9.3 hash 索引

9.9.4 btree 索引的常見誤區

9.10 索引優化策略

9.10.1 最左前綴原則

9.10.2 注意避免冗余索引

9.10.3 使用索引查詢需要注意

9.10.4 聚簇索引與非聚簇索引

9.10.5 對于左前綴不易區分的列,建立索引的技巧

9.10.6 多列索引

9.10.7 限制每張表上的索引數量(5 個)

9.10.8 禁止給表中的每一列都建立單獨的索引

9.10.9 每個 Innodb 表必須有個主鍵

9.10.10 常見索引列建議

9.10.11 如何選擇索引列的順序

9.10.12 避免建立冗余索引和重復索引(增加了查詢優化器生成執行計劃的時間)

9.10.13 對于頻繁的查詢優先考慮使用覆蓋索引

9.10.14 索引 SET 規范

9.11 主鍵、外鍵和索引的區別

9.12 mysql:刪除表數據drop、truncate 和 delete 的用法

10 插入數據的優化? ?

10.1 MyISAM

10.1.1 禁用索引

10.1.2 禁用唯一性檢查

10.1.3 批量插入數據

10.1.4 使用 LOAD DATA INFILE

10.2 InnoDB

10.2.1 禁用唯一性檢查

10.2.2 禁用外鍵檢查

10.2.3 禁止自動提交

11 服務器優化

11.1 優化服務器硬件

11.2 優化 MySQL 的參數

12 測試定位

12.1 測試指標

12.1.1 發現系統運行緩慢,如何定位和分析查詢慢的 sql 語句

12.2 測試工具

12.2.1 mysqlslap

12.2.2 sysbench

12.3 查看 mysql 的進程狀態


關鍵字

1.? 存儲引擎

? 1.1? InnoDB/MyIsam

? ? ? ? ?InnoDB(默認)-->支持外鍵,支持事務,提供表級鎖和行級鎖(默認)

? ? ? ? ?MyIsam-->只有表級鎖

2.? 事務的概念和 ACID 特性

? 2.1? 事務(Start Transaction/rollback/commit)

? 2.2? ACID

? ? ? ? C(一致性)是目的,A(原子性)、I(隔離性)、D(持久性)是手段

3.? 事務隔離級別詳解

? 3.1? 隔離級別(讀未提交/讀已提交/可重復讀/串行化)

? 3.2? 一致性問題(更新丟失/臟讀/不可重復讀/幻讀)

? 3.3??InnoDB 存儲引擎的默認支持的隔離級別是可重讀,達到了可串行化隔離級別

4.? 分布式事務

? 4.1? 開啟分布式事務(@EnableDistributedTransaction)

? 4.2? 使用分布式事務(@LcnTransation/@TCCTransation)

5.? 數據庫鎖和并發策略

? 5.1? 鎖(表鎖/頁級鎖/行鎖/讀鎖/寫鎖/共享鎖/排它鎖)

? 5.2? 并發策略(樂觀鎖/悲觀鎖)

6.? 存儲過程和觸發器

7.? 數據庫結構優化

? 7.1? 三大范式

? 7.2? 數據庫命名規范

? 7.3? 建表時優化

? ? ? ? 【列選擇原則】【主鍵的選擇】【反范式設計表】【將字段很多的表分解成多個表】

? ? ? ? 【增加中間表】【增加冗余字段】

8.? 查詢語句優化

? 8.1? 讀寫分離,分庫分表

? ? ? ? ?垂直拆分[分庫]? 水平拆分[分表]

? 8.2? explain

? ? ? ?【id】【select_type】【table】【type】【possible_keys】【key】

? 8.3? 常見的查詢優化

? ? ? ?【避免直接使用 select *】【避免造成索引失效】【IN 包含的值不應過多】【?limit 1】

? ? ? ?【能用 inner join 就不用 left join right join,如必須使用 一定要已小表為驅動】

? 8.4??子查詢優化

? ? ? ?【子查詢靈活,但執行效率并不高,執行子查詢時,MYSQL 需要創建臨時表】

? ? ? ?【使用連接查詢 (JOIN)? 代替子查詢】

9.? 索引及優化

? 9.1??索引的分類

? ? ? ?【普通索引】【主鍵索引】【唯一索引】【聯合索引】【全文索引】

? 9.2? 索引的優缺點

? ? ? ? 優點:【提高檢索的速度】【建立唯一索引或者主鍵索引,數據的唯一性】

? ? ? ? ? ? ? ? ? ?【表連接的連接條件】【分組和排序字句進行數據檢索】

? ? ? ? 缺點:【創建索引和維護索引會耗費時間】【索引文件會占用物理空間】

? ? ? ? ? ? ? ? ? ?【增刪改索引也要動態的維護】

9.3? 創建索引

? ? ? ?【經常需要搜索的列】【主鍵列上可以確保列的唯一性】【表與表的連接條件上】【排序,分組】

9.4? 索引失效

? ? ? ? 【最左前綴原則】【只有or前后的字段都帶索引才生效】【like 查詢以%開頭會失效】

? ? ? ? 【在索引的列上使用表達式或者函數會使索引失效】

? ? ? ? 【如果列類型是字符串,那一定要在條件中將數據使用單引號引用起來,否則不使用索引

9.5? 索引優化

? ? ? ? ?【最左前綴原則】【注意避免冗余索引】【聚簇索引與非聚簇索引】

? ? ? ? ? 【既存儲了主鍵值,又存儲了行數據,這種結構稱為 "聚簇索引"、innodb為聚簇索引】

10.? 插入數據的優化

? 10.1? 影響插入速度的原因

? ? ? ? ? 【索引】【唯一性校驗】【一次插入的數據條數】

? 10.2??MyISAM

? ? ? ? ?【禁用索引】【禁用唯一性檢查】【批量插入數據】

? 10.3??InnoDB

? ? ? ? ? 【禁用唯一性檢查】【禁用外鍵檢查】【禁止自動提交】


1 存儲引擎

數據庫存儲引擎是數據庫底層軟件組織,數據庫管理系統(DBMS)使用數據引擎進行創建、查詢、更新和刪除數據

不同的存儲引擎提供不同的存儲機制、索引技巧、鎖定水平等功能,使用不同的存儲引擎,還可以獲得特定的功能

現在許多不同的數據庫管理系統都支持多種不同的數據引擎

存儲引擎主要有: 1. MyIsam,?2. InnoDB, 3. Memory,4. Archive,5. Federated

Mysql 在 5.5.5 之前默認存儲引擎是 MyISAM;在此之后默認存儲引擎是 InnoDB

1.1 Mysql 的架構圖

Server 層:主要包括連接器、查詢緩存、分析器、優化器、執行器等,所有跨存儲引擎的功能都在這一層實現,比如存儲過程、觸發器、視圖,函數等,還有一個通用的日志模塊 binglog 日志模塊

存儲引擎:主要負責數據的存儲和讀取,采用可以替換的插件式架構,支持 InnoDB、MyISAM、Memory 等多個存儲引擎,其中 InnoDB 引擎有自有的日志模塊 redolog 模塊

現在最常用的存儲引擎是 InnoDB,它從MySQL 5.5.5 版本開始就被當做默認存儲引擎了

1.2 選擇合適的存儲引擎

當創建表時,應根據表的應用場景選擇適合的存儲引擎

MyISAM 表最適合于大量的數據讀而少量數據更新的混合操作

MyISAM 表的另一種適用情形是使用壓縮的只讀表

如果查詢中包含較多的數據更新操作,應使用 InnoDB

行級鎖機制和多版本的支持為數據讀取和更新的混合操作提供了良好的并發機制

可使用 MEMORY 存儲引擎來存儲非永久需要的數據,或者是能夠從基于磁盤的表中重新生成的數據

1.3 InnoDB 和 MyIsam 的對比

1.3.1 兩者的區別

MyISAM

InnoDB

count 運算上的區別

因為 MyISAM 緩存有表 meta-data(行數等),因此在做 COUNT(*) 時對于一個結構很好的查詢是不需要消耗多少資源的

對于 InnoDB 來說,則沒有這種緩存

是否支持事務和崩潰后的安全恢復

MyISAM 強調的是性能,每次查詢具有原子性,其執行數度比 InnoDB 類型更快,但是不提供事務支持

InnoDB 提供事務支持事務外部鍵等高級數據庫功能

具有事務(commit)、回滾(rollback)和崩潰修復能力(crash recovery capabilities)的事務安全(transaction-safe (ACIDcompliant))型表

是否支持外鍵

MyISAM 不支持

InnoDB 支持

是否支持行級鎖

MyISAM 只有表級鎖(table-level locking)

InnoDB 支持行級鎖(row-level locking)和表級鎖默認為行級鎖

1.3.2 關于兩者的總結

MyISAM 更適合密集的表,而 InnoDB 更適合密集的的表

在數據庫做主從分離的情況下,經常選擇 MyISAM 作為主庫的存儲引擎

一般來說,如果需要事務支持,并且有較高的并發讀取頻率(MyISAM 的表鎖的粒度太大,所以當該表寫并發量較高時,要等待的查詢就會很多了),InnoDB 是不錯的選擇

如果你的數據量很大(MyISAM 支持壓縮特性可以減少磁盤的空間占用),而且不需要支持事務時,MyISAM 是最好的選擇

1.4 一張表,里面有 ID 自增主鍵,當 insert 了 17 條記錄之后,刪除了第15、16、17 條記錄,再把 Mysql 重啟,再 insert 一條記錄,這條記錄的 ID 是 18 還是 15

如果表的類型是?MyISAM,那么是?18

因為 MyISAM 表會把自增主鍵的最大 ID 記錄到數據文件里,重啟 MySQL 自增主鍵的最大 ID 也不會丟失

如果表的類型是?InnoDB,那么是 15

InnoDB 表只是把自增主鍵的最大 ID 記錄到內存中,所以重啟數據庫或者是對表進行 OPTIMIZE 操作,都會導致最大 ID 丟失

存儲引擎不同,索引生成的文件也不同

? Myisam 生成 3 個文件,非聚簇索引

? ? frm 為表結構文件

? ? MYD 是數據文件

? ? MYI? 是索引文件

? InnoDB 生成 2 個文件,聚簇索引

? ? frm 為表結構文件

? ? ibd 為索引+數據

1.5 Mysql 服務器默認端口是什么

Mysql 服務器的默認端口是 3306

1.6 LIKE 聲明中的 % 和 _ 是什么意思

% 對應于?0 個或更多字符

_? 只是 LIKE 語句中的一個字符


2 事務的概念和 ACID 特性

2.1 概念

事務(TRANSACTION)表示一個完整的不可分割的業務,批量的 DML 語句同時成功或者同時失敗;原子性不可再分最基本單元,可以看做一個完整的事件,通常一個事務可以對應一個完整的業務流程

可以保證多個操作原子性,要么全成功,要么全失敗

對于數據庫來說事務保證批量的 DML 要么全成功,要么全失敗

事務中存在一些概念:

a) 事務(Transaction):保證批量的 DML 同時成功或同時失敗;一批操作(一組 DML)

b) 開啟事務(Start Transaction)

c) 回滾事務(rollback)

d) 提交事務(commit)

e) SET AUTOCOMMIT:禁用或啟用事務的自動提交模式

當執行 DML 語句時其實就是開啟一個事務

關于事務的回滾需要注意:只能回滾 insert、delete 和 update 語句,不能回滾 select(回滾 select 沒有任何意義),對于 create、drop、alter 這些無法回滾

事務只對 DML 有效果

注意:rollback,或者 commit 后事務就結束了

2.2 ACID 特性

事務具有四個特征 ACID

2.2.1 原子性(Atomicity)

整個事務中的所有操作,必須作為一個單元全部完成(或全部取消)

undo log 名為回滾日志,是實現原子性的關鍵,當事務回滾時能夠撤銷所有已經成功執行的 sql 語句,他需要記錄你要回滾的相應日志信息

2.2.2 一致性(Consistency)

在事務開始之前與結束之后,數據庫都保持一致狀態?

從數據庫層面,數據庫通過原子性、隔離性、持久性來保證一致性

也就是說 ACID 四大特性之中,C(一致性)是目的,A(原子性)、I(隔離性)、D(持久性)是手段,是為了保證一致性,數據庫提供的手段

數據庫必須要實現 AID 三大特性,才有可能實現一致性;例如,原子性無法保證,顯然一致性也無法保證

但是,如果你在事務里故意寫出違反約束的代碼,一致性還是無法保證的

例如,你在轉賬的例子中,你的代碼里故意不給 B 賬戶加錢,那一致性還是無法保證;因此,還必須從應用層角度考慮

從應用層面,通過代碼判斷數據庫數據是否有效,然后決定回滾還是提交數據

2.2.3 隔離性(Isolation)

一個事務不會影響其他事務的運行

事務的隔離性是利用的是鎖和 MVCC(Multi Version Concurrency Control?多版本并發控制)機制

2.2.4 持久性(Durability)

在事務完成以后,該事務對數據庫所作的更改將持久地保存在數據庫之中,并不會被回滾

事務的持久性是利用 Innodb 的 redo log


3 事務隔離級別詳解

事務的隔離級別決定了事務之間可見的級別

3.1 四個隔離級別

InnoDB 實現了四個隔離級別,用以控制事務所做的修改,并將修改通告至其它并發的事務:

讀未提交(READ UMCOMMITTED)

允許一個事務可以看到其他事務未提交的修改

讀已提交(READ COMMITTED)

允許一個事務只能看到其他事務已經提交的修改,未提交的修改是不可見的

可重復讀(REPEATABLE READ)

確保如果在一個事務中執行兩次相同的 SELECT 語句,都能得到相同的結果,不管其他事務是否提交這些修改(銀行總賬)

串行化(SERIALIZABLE) 【序列化】

該隔離級別為 InnoDB 的缺省設置

將一個事務與其他事務完全地隔離

3.2 隔離級別與一致性問題的關系

當多個客戶端并發地訪問同一個表時,可能出現下面的一致性問題
更新丟失:兩個并行操作,后進行的操作覆蓋掉了先進行操作的操作結果,被稱作更新丟失

臟讀(Dirty Read):一個事務在提交之前,在事務過程中修改的數據,被其他事務讀取到了

某個事務已更新一份數據,另一個事務在此時讀取了同一份數據,由于某些原因,前一個RollBack了操作,則后一個事務所讀取的數據就會是不正確的

不可重復讀(Non-repeatable Read):一個事務在提交之前,在事務過程中讀取以前的數據卻發現數據發生了改變

在一個事務的兩次查詢之中數據不一致,這可能是兩次查詢過程中間插入了一個事務更新的原有的數據

幻讀(Phantom Read):一個事務按照相同的條件重新讀取以前檢索過的數據時,卻發現了其他事務插入的新數據

在一個事務的兩次查詢中數據筆數不一致,例如有一個事務查詢了幾列(Row)數據,而另一個事務卻在此時插入了新的幾列數據,先前的事務在接下來的查詢中,就會發現有幾列數據是它先前所沒有的

通用的解決思路是更新丟失通過應用程序完全避免

而其他的問題點則通過調整數據庫事務隔離級別來解決

事務的隔離機制的實現手段之一就是利用鎖

隔離級別

臟讀

不可重復讀

幻影讀

讀未提交(READ UMCOMMITTED)

讀已提交(READ COMMITTED)

×

可重復讀(REPEATABLE READ)

×

×

串行化(SERIALIZABLE)

×

×

×

3.3 默認隔離級別的理解

與 SQL 標準不同的地方在于 InnoDB 存儲引擎在 REPEATABLE-READ(可重讀)事務隔離級別下使用的是Next-Key Lock 鎖算法,因此可以避免幻讀的產生,這與其他數據庫系統(如 SQL Server)是不同的

所以說 InnoDB 存儲引擎的默認支持的隔離級別是 REPEATABLE-READ(可重讀) 已經可以完全保證事務的隔離性要求,即達到了 SQL 標準的 SERIALIZABLE(可串行化)隔離級別

因為隔離級別越低,事務請求的鎖越少,所以大部分數據庫系統的隔離級別都是 READ-COMMITTED(讀取提交內容),但是你要知道的是 InnoDB 存儲引擎默認使用 REPEATABLE-READ(可重讀)并不會有任何性能損失

InnoDB 存儲引擎在分布式事務的情況下一般會用到 SERIALIZABLE(可串行化)隔離級別


4 分布式事務

4.1 什么是分布式事務

傳統項目中用一個 mysql 數據庫,mysql 數據庫當中 InnoDB 引擎是支持 ACID 事務特性的,能夠滿足我們的事務要求,但現在分布式項目中,我們會有多個微服務處理不同業務,這些微服務都是獨立的進程,數據庫也都是相互獨立,但是事務可能要橫跨這些微服務, 比如訂單功能, 如果我支付訂單成功在訂單微服務中我需要改變訂單狀態, 在庫存微服務中需要減對應的庫存, 在積分微服務中得加對應積分, 這是一個整體的事務,這種事務就是分布式事務

4.2 CAP 定理和 Base 理論

CAP 定理是由加州大學伯克利分校 Eric Brewer 教授提出來的,他指出 WEB 服務無法同時滿足以下三個屬性

一致性(Consistency): 客戶端知道一系列的操作都會同時發生(生效)

可用性(Availability): 每個操作都必須以可預期的響應結束

分區容錯性(Partition tolerance): 即使出現單個組件無法可用,操作依然可以完成

在分布式系統中,我們往往追求的是可用性,它的重要程序比一致性要高,那么如何實現高可用性呢?那就是另外一個理論 BASE 理論,它是用來對 CAP 定理進行進一步擴充的

BASE 理論指的是

Basically Available(基本可用):分布式系統在出現故障時,允許損失部分可用功能,保證核心功能可用

Soft state(軟狀態):允許系統中存在中間狀態,這個狀態不影響系統可用性,這里指的是 CAP 中的不一致

Eventually consistent(最終一致性):指經過一段時間后,所有節點數據都將會達到一致

BASE 理論是對 CAP 中的一致性和可用性進行一個權衡的結果,理論的核心思想就是:我們無法做到強一致,但每個應用都可以根據自身的業務特點,采用適當的方式來使系統達到最終一致性(Eventual consistency)

4.3 2PC 二階段分步提交

其核心思想是將分布式事務拆分成本地事務進行處理

白話

各個服務在處理數據過程中,會進行預備提交操作,預備操作可以反映出各個節點是否都能夠提交,預備操作

如果成功的話,那么事務協調器會執行每個數據庫的 commit 操作

如果在預提交過程當中有一個節點不能夠提交,事務協調器會執行每個數據庫的 roll back 操作

官腔

事務管理器要求每個涉及到事務的數據庫預提交(precommit)此操作,并反映是否可以提交

事務協調器要求每個數據庫提交數據,或者回滾數據

實現的思路

消息生產方,需要額外建一個消息表,并記錄消息發送狀態

消息表和業務數據要在一個事務里提交,也就是說他們要在一個數據庫里面

然后消息會經過 MQ 發送到消息的消費方

如果消息發送失敗,會進行重試發送消息消費方,需要處理這個消息,并完成自己的業務邏輯

此時如果本地事務處理成功,表明已經處理成功了,如果處理失敗,那么就會重試執行

如果是業務上面的失敗,可以給生產方發送一個業務補償消息,通知生產方進行回滾等操作

生產方和消費方定時掃描本地消息表,把還沒處理完成的消息或者失敗的消息再發送一遍

如果有靠譜的自動對賬補賬邏輯,這種方案還是非常實用的

這種方案遵循 BASE 理論,采用的是最終一致性

4.4 TCC (Try Confirm Cancel)

Try 階段嘗試執行,完成所有業務檢查(一致性),預留必需業務資源(準隔離性)

Confirm 階段確認真正執行業務,不作任何業務檢查,只使用 try 階段預留的業務資源,Confirm 操作滿足冪等性;要求具備冪等設計,Confirm 失敗后需要進行重試;默認只要 Try 成功,Confirm 一定成功

Cancel 階段取消執行,釋放 Try 階段預留的業務資源,Cancel 操作滿足冪等性;Cancel 階段的異常和Confirm 階段異常處理方案基本上一致

舉個簡單的例子:如果你用 100 元買了一瓶水, Try 階段:你需要向你的錢包檢查是否夠 100 元并鎖住這 100 元,水也是一樣的。如果有一個失敗,則進行 Cancel(釋放這 100 元和這一瓶水),如果 Cancel 失敗不論什么失敗都進行重試 Cancel,所以需要保持冪等。如果都成功,則進行 Confirm,確認這 100 元被扣,和這一瓶水被賣,如果 Confirm 失敗無論什么失敗則重試(會依靠活動日志進行重試)

4.5 項目中的使用

使用開源框架 TX-LCN 分布式事務框架 5.0 版本對代碼的侵入比較少,而且提供了完整的 SpringCloud 和dubbo 注解解決方案,項目組引入該框架的成本非常低,并且有專門的公司對這個開源項目進行維護

該框架主要有兩大核心部分 TM 事務的協調管理器需要獨立運行(在源碼中有該工程,并且整合了 docker 只需要改下配置文件中 mysql、redis 的地址即可運行)

所有參與分布式事務的微服務項目需要引入客戶端依賴

com.codingapi.txlcn

txlcn-txmsg-netty

5.0.2.RELEASE

在啟動類當中,使用 @EnableDistributedTransaction 注解開啟分布式事務

在配置文件中配置好 Tx-manager 的連接地址

在需要進行事務管理的 service 方法中

如果要使用分布式事務加上 @LcnTransation;如果要使用 TCC 的模式需要加上@TCCTransation 注解并且在該注解指定 confirm 對應的方法以及 cancel 對應的方法


5 數據庫鎖和并發策略

https://www.jianshu.com/p/69ed3b9d858c

事務的隔離機制的實現手段之一就是利用鎖

5.1 數據庫鎖的分類

MyIsam 實現了表鎖

表鎖可以針對數據庫表加鎖,在鎖的靈活性上不如行鎖

表鎖分為兩種鎖:讀鎖與寫鎖

InnoDB 存儲引擎實現了行鎖與表鎖(意向鎖)

行鎖可以以行為單位對數據集進行鎖定

行鎖也分為兩種鎖:共享鎖與排他鎖

InnoDB 對于 Update、Delete、Insert 語句會自動給涉及的數據集隱式的加上排他鎖

對于 select 語句 InnoDB 不會加任何鎖

共享鎖:允許一個事務讀取一行,阻止其他事務獲得相同數據集的排他鎖

但允許其他事務獲取共享鎖

顯示加鎖 select * from table where ... lock in share mode

共享鎖,事務加多少,都能讀

修改是唯一的,必須等待前一個事務 commit,才可以下個修改

排他鎖:允許獲得排他鎖的事務更新數據,阻止其他事務取得相同數據集的共享與排他鎖

但是可以對獲取了排他鎖的數據集進行單純的查詢訪問

顯示加鎖 sql select * from table where ... for update

排他鎖,不允許其它事務增加共享或排他鎖讀取

修改是唯一的,必須等待前一個事務 commit,才可以下一個修改

InnoDB 的行鎖的實現方式是基于索引項的

這意味著即使你嘗試獲取不同行的排他鎖,若使用了相同的索引鍵,也可能會造成鎖沖突

5.1.1 行級鎖

行級鎖是一種排他鎖,防止其他事務修改此行

行鎖的特點是開銷大,加鎖慢;會出現死鎖;鎖定粒度最小,發生鎖沖突的概率最低,并發度也最高

在使用以下語句時,Oracle 會自動應用行級鎖:

1. INSERT、UPDATE、DELETE、SELECT ? FOR UPDATE [OF columns] [WAIT n | NOWAIT];

2. SELECT ? FOR UPDATE 語句允許用戶一次鎖定多條記錄進行更新

3. 使用 COMMIT 或 ROLLBACK 語句釋放鎖

5.1.2 表級鎖

表鎖的特點是開銷小,加鎖快;不會出現死鎖;鎖定粒度大,發生鎖沖突的概率最高,并發度最低

表示對當前操作的整張表加鎖,它實現簡單,資源消耗較少,被大部分 MySQL 引擎支持

最常使用的 MYISAM與 INNODB 都支持表級鎖定

5.1.3 頁級鎖

頁級鎖是 MySQL 中鎖定粒度介于行級鎖和表級鎖中間的一種鎖

表級鎖速度快,但沖突多,行級沖突少,但速度慢

所以取了折衷的頁級,一次鎖定相鄰的一組記錄

BDB 支持頁級鎖

5.2 數據庫的并發策略

5.2.1 樂觀鎖

樂觀鎖認為一個用戶讀數據的時候,別人不會去寫自己所讀的數據;悲觀鎖就剛好相反,覺得自己讀數據庫的時候,別人可能剛好在寫自己剛讀的數據,其實就是持一種比較保守的態度;時間戳就是不加鎖,通過時間戳來控制并發出現的問題

解決方案為:時間戳就是在數據庫表中單獨加一列時間戳,比如 "TimeStamp",每次讀出來的時候,把該字段也讀出來,當寫回去的時候,把該字段加 1,提交之前 ,跟數據庫的該字段比較一次,如果比數據庫的值大的話,就允許保存,否則不允許保存,這種處理方法雖然不使用數據庫系統提供的鎖機制,但是這種方法可以大大提高數據庫處理的并發量

Select max(nub) ,version from biao

Update biao set nub=nub+1,version=vsersion+1 where id=id and version =version

5.2.2 悲觀鎖

悲觀鎖就是在讀取數據的時候,為了不讓別人修改自己讀取的數據,就會先對自己讀取的數據加鎖,只有自己把數據讀完了,才允許別人修改那部分數據,或者反過來說,就是自己修改某條數據的時候,不允許別人讀取該數據,只有等自己的整個事務提交了,才釋放自己加上的鎖,才允許其他用戶訪問那部分數據

悲觀鎖所說的加 "鎖",其實分為幾種鎖,分別是:排它鎖(寫鎖)和共享鎖(讀鎖)

解決方案為 sql 語句后邊加上 for update 例子:select id,nam from biao for update

5.2.3 鎖表問題

鎖表發生在 insert、update 、delete 中

鎖表的原理是數據庫使用獨占式鎖機制,當執行 insert、update 和 delete 的語句時,對表進行鎖住,直到發生commite 或者回滾或者退出數據庫用戶

鎖表的原因 : 當多個連接(數據庫連接)同時對一個表的數據進行更新操作,那么速度將會越來越慢,持續一段時間后將出現數據表被鎖的現象,從而影響到其它的查詢及更新

A 程序執行了對 tableA 的 insert ,并還未 commite 時,B 程序也對 tableA 進行 insert 則此時會發生資源正忙的異常就是鎖表

鎖表常發生于并發而不是并行(并行時,一個線程操作數據庫時,另一個線程是不能操作數據庫的,cpu和 i/o 分配原則)

減少鎖表的概率

減少 insert 、update 、delete 語句執行到 commite 之間的時間;具體點批量執行改為單個執行、優化 sql 自身的非執行速度

如果異常對事物進行回滾

https://blog.csdn.net/fragrant_no1/article/details/79727263 https://www.cnblogs.com/shuilangyizu/p/7383183.html

6 存儲過程和觸發器

6.1 存儲過程(特定功能的 SQL 語句集)

一組為了完成特定功能的 SQL 語句集,存儲在數據庫中,經過第一次編譯后再次調用不需要再次編譯,用戶通過指定存儲過程的名字并給出參數(如果該存儲過程帶有參數)來執行它;存儲過程是數據庫中的一個重要對象

存儲過程優化思路:

1. 盡量利用一些 sql 語句來替代一些小循環,例如聚合函數,求平均函數等

2. 中間結果存放于臨時表,加索引

3. 少使用游標

sql 是個集合語言,對于集合運算具有較高性能;而 cursors 是過程運算;比如對一個 100 萬行的數據進行查詢;游標需要讀表 100 萬次,而不使用游標則只需要少量幾次讀取

4. 事務越短越好

sqlserver 支持并發操作;如果事務過多過長,或者隔離級別過高,都會造成并發操作的阻塞,死鎖;導致查詢極慢,cpu 占用率極地

5. 使用 try-catch 處理錯誤異常

6. 查找語句盡量不要放在循環內

6.2 觸發器(一段能自動執行的程序)

觸發器是一段能自動執行的程序,是一種特殊的存儲過程,觸發器和普通的存儲過程的區別是: 觸發器是當對某一個表進行操作時觸發

諸如:update、insert、delete 這些操作的時候,系統會自動調用執行該表上對應的觸發器

SQL Server 2005 中觸發器可以分為兩類:DML 觸發器和 DDL 觸發器,其中 DDL 觸發器它們會影響多種數據定義語言語句而激發,這些語句有 create、 alter、drop 語句


7 數據庫結構優化

一個好的數據庫設計方案對于數據庫的性能往往會起到事半功倍的效果

需要考慮數據冗余、查詢和更新的速度、字段的數據類型是否合理等多方面的內容

7.1 三大范式

第一范式:有主鍵,具有原子性,字段不可分割

第二范式:完全依賴,表中非主鍵列不存在對主鍵的部分依賴

要求每個表只描述一 件事情

第三范式:沒有傳遞依賴,表中的列不存在對非主鍵列的傳遞依賴

數據庫設計盡量遵循三范式,但是還是根據實際情況進行取舍,有時可能會拿冗余換速度,最終用目的要滿足客戶需求

7.2 數據庫命名規范

所有數據庫對象名稱必須使用小寫字母并用下劃線分割

所有數據庫對象名稱禁止使用 MySQL 保留關鍵字(如果表名中包含關鍵字查詢時,需要將其用單引號括起來)

數據庫對象的命名要能做到見名識意,并且最后不要超過 32 個字符

臨時庫表必須以 tmp 為前綴并以日期為后綴,備份表必須以 bak 為前綴并以日期 (時間戳) 為后綴

所有存儲相同數據的列名和列類型必須一致(一般作為關聯列,如果查詢時關聯列類型不一致會自動進行數據類型隱式轉換,會造成列上的索引失效,導致查詢效率降低)

7.3 建表時優化

7.3.1 列選擇原則

1: 字段類型優先級 整型 > date,time > char,varchar > blob

2: 夠用就行,不要慷慨 (如 smallint,varchar(N))

原因:列的字段越大,建立索引時所需要的空間也就越大,這樣一頁中所能存儲的索引節點的數量也就越少也越少,在遍歷時所需要的 IO 次數也就越多,索引的性能也就越差

3: 盡量避免用 NULL()

原因:索引 NULL 列需要額外的空間來保存,所以要占用更多的空間進行比較和計算時要對 NULL 值做特別的處理

4:對于非負型的數據 (如自增 ID、整型 IP) 來說,要優先使用無符號整型來存儲

原因:無符號相對于有符號可以多出一倍的存儲空間

SIGNED INT -2147483648~2147483647 UNSIGNED INT 0~4294967295

VARCHAR(N) 中的 N 代表的是字符數,而不是字節數,使用 UTF8 存儲 255 個漢字 Varchar(255)=765 個字節

過大的長度會消耗更多的內存

5:避免使用 TEXT、BLOB 數據類型,最常見的 TEXT 類型可以存儲 64k 的數據

6:同財務相關的金額類數據必須使用 decimal 類型

非精準浮點:float,double

精準浮點:decimal

Decimal 類型為精準浮點數,在計算時不會丟失精度

占用空間由定義的寬度決定,每 4 個字節可以存儲 9 位數字,并且小數點要占用一個字節可用于存儲比 bigint 更大的整型數據

7.3.2 主鍵的選擇

主鍵用來區分,查找,和關聯數據,非常重要

1.在 myisam 中,字符串索引會被壓縮,用字符串做主鍵性能不如整型

2. 用遞增的值,不要用離散的值,離散值會導致文件在磁盤的位置有間隔,浪費空間且不易連續讀取

3. UUID,也是逐步增長的,可以去掉 "-",轉換為整數

7.3.3 反范式設計表

反范式的目的--減少表的關聯查詢

常用辦法:

冗余字段和冗余表

冗余字段:表中某字段存儲另一表的統計信息

冗余表:表中統計或匯總其他表的信息,又稱匯總表

本質

1.? 空間換時間

2.? 大任務分成小任務,分散執行

7.3.4 將字段很多的表分解成多個表

對于字段較多的表,如果有些字段的使用頻率很低,可以將這些字段分離出來形成新表

因為當一個表的數據量很大時,會由于使用頻率低的字段的存在而變慢

舉例:商品表和商品描述表就是把描述字段拆分成一個單獨的表

7.3.5 增加中間表

Note;不是多對多的中間表

對于需要經常聯合查詢的表,可以建立中間表以提高查詢效率

通過建立中間表,將需要通過聯合查詢的數據插入到中間表中,然后將原來的聯合查詢改為對中間表的查詢

7.3.6 增加冗余字段

設計數據表時應盡量遵循范式理論的規約,盡可能的減少冗余字段,讓數據庫設計看起來精致、優雅

但是,合理的加入冗余字段可以提高查詢速度

表的規范化程度越高,表和表之間的關系越多,需要連接查詢的情況也就越多,性能也就越差

注意:

冗余字段的值在一個表中修改了,就要想辦法在其他表中更新,否則就會導致數據不一致的問題

舉例:商品表里增加類目名稱


8 查詢語句優化

1: sql 語句的時間花在哪兒?

答: 等待時間,執行時間

這兩個時間并非孤立的,如果單條語句執行的快了,對其他語句的鎖定的也就少了

所以,我們來分析如何降低執行時間

2: sql 語句的執行時間,又花在哪兒了?

答:

a: 查 ----> 沿著索引查,甚至全表掃描

b: 取 ----> 查到行后,把數據取出來(sending data)

3: sql 語句的優化思路?

答: 不查,通過業務邏輯來計算,比如論壇的注冊會員數,我們可以根據前 3 個月統計的每天注冊數,用程序來估算

少查,盡量精準數據,少取行;我們觀察新聞網站,評論內容等,一般一次性取列表 10-30 條左右

必須要查,盡量走在索引上查詢行

取時,取盡量少的列

比如 select * from tableA,就取出所有列,不建議

比如 select * from tableA,tableB,取出 A,B 表的所有列

4: 如果定量分析查的多少行,和是否沿著索引查?

答: 用 explain 來分析

8.1 數據庫優化概述

8.1.1 什么是優化?

合理安排資源、調整系統參數使 MySQL 運行更快、更節省資源

優化是多方面的,包括查詢、更新、服務器等

原則:減少系統瓶頸,減少資源占用,增加系統的反應速度

8.1.2 數據庫性能參數

使用 SHOW STATUS 語句查看 MySQL 數據庫的性能參數

SHOW STATUS LIKE 'value'

常用的參數:

Slow_queries 慢查詢次數

Com_(CRUD) 操作的次數

Uptime 上線時間

8.2 常見的查詢優化

SELECT 語句務必指明字段名稱(避免直接使用 select * )

SQL 語句要避免造成索引失效的寫法

SQL 語句中 IN 包含的值不應過多

當只需要一條數據的時候,使用 limit 1

? ?第一個參數指定第一個返回記錄行的偏移量,第二個參數指定返回記錄行的最大數目

? ? ? SELECT * FROM table LIMIT 5,10; // 檢索記錄行 6-15

? ?為了檢索從某一個偏移量到記錄集的結束所有的記錄行,可以指定第二個參數為 -1

? ? ?SELECT * FROM table LIMIT 95,-1; // 檢索記錄行 96-last

? 如果只給定一個參數,它表示返回最大的記錄行數目

? ? ?SELECT * FROM table LIMIT 5; //檢索前 5 個記錄行

? ? ?換句話說,LIIT n 等價于 LIMIT 0,n

如果排序字段沒有用到索引,就盡量少排序

如果限制條件中其他字段沒有索引,盡量少用 or

盡量用 union all 代替 union

避免在 where 子句中對字段進行 null 值判斷

不建議使用 % 前綴模糊查詢

避免在 where 子句中對字段進行表達式操作

Join 優化 能用 inner join 就不用 left join right join,如必須使用 一定要已小表為驅動

8.2.1 緩存優化

為了提高查詢速度,我們可以通過不同的方式去緩存我們的結果從而提高響應效率

當我們的數據庫打開了 Query Cache(簡稱 QC)功能后,數據庫在執行 SELECT 語句時,會將其結果放到 QC 中,當下一次處理同樣的 SELECT請求時,數據庫就會從 QC 取得結果,而不需要去數據表中查詢

如果緩存命中率非常高的話,有測試表明在極端情況下可以提高效率 238%

8.2.2 讀寫分離

如果數據庫的使用場景讀的操作比較的時候,為了避免寫的操作所造成的性能影響可以采用讀寫分離的架構,讀寫分離,解決的是,數據庫的寫入,影響了查詢的效率

讀寫分離的基本原理是讓主數據庫處理事務性增、改、刪操作(INSERT、UPDATE、DELETE),而從數據庫處理 SELECT 查詢操作

數據庫復制被用來把事務性操作導致的變更同步到集群中的從數據庫

8.2.3 mysql 的分庫分表

數據量越來越大時,單體數據庫無法滿足要求,可以考慮分庫分表

兩種拆分方案:

垂直拆分:(分庫)業務表太多? 將業務細化不同的小業務專門用一個庫來維護

水平拆分:(分表)單個表存的數據太多,裝不下了? 將該表查分成多個

分庫分表常用工具:MyCat、Sharding-JDBC

8.3 EXPLAIN

在 MySQL 中可以使用 EXPLAIN 查看 SQL 執行計劃,用法:EXPLAIN SELECT * FROM tb_item

8.3.1 id

SELECT 識別符

這是 SELECT 查詢序列號

這個不重要

代表 select 語句的編號,如果是連接查詢,表之間是平等關系,select 編號都是 1,從 1 開始

如果某 select 中有子查詢,則編號遞增

8.3.2 select_type

表示 SELECT 語句的類型

有以下幾種值:

?

1. SIMPLE

表示簡單查詢,其中不包含連接查詢和子查詢

2. PRIMARY

表示主查詢,或者是最外面的查詢語句

?

3. UNION

表示連接查詢的第 2 個或后面的查詢語句

?

4. DEPENDENT UNION

UNION 中的第二個或后面的 SELECT 語句,取決于外面的查詢

5. UNION RESULT

連接查詢的結果

6. SUBQUERY

子查詢中的第 1 個 SELECT 語句

?

7. DEPENDENT SUBQUERY

子查詢中的第 1 個 SELECT 語句,取決于外面的查詢

8. DERIVED

SELECT(FROM 子句的子查詢)

8.3.3 table

表示查詢的表

有可能是

實際的表名 如 select * from t1;

表的別名 如 select * from t2 as tmp;

derived 如 from 型子查詢時

null 直接計算得結果,不用走表

8.3.4 type

表示表的連接類型

以下的連接類型的順序是從最佳類型到最差類型:

1. system

表僅有一行,這是 const 類型的特列,平時不會出現,這個也可以忽略不計

2. const

數據表最多只有一個匹配行,因為只匹配一行數據,所以很快,常用于 PRIMARY KEY 或者 UNIQUE 索引的查詢,可理解為 const 是最優化的

?

3. eq_ref

mysql 手冊是這樣說的:"對于每個來自于前面的表的行組合,從該表中讀取一行

這可能是最好的聯接類型,除了 const 類型

它用在一個索引的所有部分被聯接使用并且索引是 UNIQUE 或 PRIMARY KEY"

eq_ref 可以用于使用=比較帶索引的列

?

4. ref

查詢條件索引既不是 UNIQUE 也不是 PRIMARY KEY 的情況

ref 可用于=或操作符的帶索引的列

?

5. ref_or_null

該聯接類型如同 ref,但是添加了 MySQL 可以專門搜索包含 NULL 值的行

在解決子查詢中經常使用該聯接類型的優化

上面這五種情況都是很理想的索引使用情況

6. index_merge

該聯接類型表示使用了索引合并優化方法

在這種情況下,key 列包含了使用的索引的清單,key_len 包含了使用的索引的最長的關鍵元素

7. unique_subquery

該類型替換了下面形式的 IN 子查詢的 ref:

value IN (SELECT primary_key FROM single_table WHERE some_expr)

unique_subquery 是一個索引查找函數,可以完全替換子查詢,效率更高

8. index_subquery

該聯接類型類似于 unique_subquery

可以替換 IN 子查詢,但只適合下列形式的子查詢中的非唯一索引:

value IN (SELECT key_column FROM single_table WHERE some_expr)

9. range

只檢索給定范圍的行,使用一個索引來選擇行

?

10. index

該聯接類型與 ALL 相同,除了只有索引樹被掃描

這通常比 ALL 快,因為索引文件通常比數據文件小

11. ALL

對于每個來自于先前的表的行組合,進行完整的表掃描(性能最差)

8.3.5 possible_keys

可能用到的索引

注意: 系統估計可能用的幾個索引,但最終只能用 1 個

指出 MySQL 能使用哪個索引在該表中找到行

如果該列為 NULL,說明沒有使用索引,可以對該列創建索引來提供性能

8.3.6 key

最終用的索引

顯示 MySQL 實際決定使用的鍵(索引)

如果沒有選擇索引,鍵是 NULL

可以強制使用索引或者忽略索引:

?

8.3.7 key_len

顯示 MySQL 決定使用的鍵長度

如果鍵是 NULL,則長度為 NULL

注意:key_len 是確定了 MySQL 將實際使用的索引長度

使用的索引的最大長度

type 列:是指查詢的方式,非常重要,是分析 ”查數據過程” 的重要依據可能的值

all:意味著從表的第 1 行,往后,逐行做全表掃描,運氣不好掃描到最后一行

index:比 all 性能稍好一點

通俗的說:all 掃描所有的數據行,相當于 data_all index 掃描所有的索引節點,相當于 index_all

8.3.8 ref

顯示使用哪個列或常數與 key 一起從表中選擇行

8.3.9 rows

顯示 MySQL 認為它執行查詢時必須檢查的行數

8.3.10 Extra

該列包含 MySQL 解決查詢的詳細信息

1.? Distinct:MySQL 發現第 1 個匹配行后,停止為當前的行組合搜索更多的行

2.? Not exists:MySQL 能夠對查詢進行 LEFT JOIN 優化,發現 1 個匹配 LEFT JOIN 標準的行后,不再為前面的的行組合在該表內檢查更多的行

3.? range checked for each record (index map: #):MySQL 沒有發現好的可以使用的索引,但發現如果來自前面的表的列值已知,可能部分索引可以使用

4.? Using filesort:MySQL 需要額外的一次傳遞,以找出如何按排序順序檢索行

5.? Using index:從只使用索引樹中的信息而不需要進一步搜索讀取實際的行來檢索表中的列信息

6.? Using temporary:為了解決查詢,MySQL 需要創建一個臨時表來容納結果

7.? Using where:WHERE 子句用于限制哪一個行匹配下一個表或發送到客戶

8.? Using sort_union(...),Using union(...),Using intersect(...):這些函數說明如何為 index_merge 聯接類型合并索引掃描

9.? Using index for group-by:類似于訪問表的Using index 方式,Using index for group-by 表示MySQL發現了一個索引,可以用來查 詢 GROUP BY 或 DISTINCT 查詢的所有列,而不要額外搜索硬盤訪問實際的表

8.4 in 型子查詢引出的陷阱

改進:用連接查詢來代替子查詢

exists 子查詢

優化 1: 在 group 時,用帶有索引的列來 group,速度會稍快一些,另外,用 int 型 比 char 型分組,也要快一些

優化 2:在 group 時,我們假設只取了 A 表的內容,group by 的列,盡量用 A 表的列,會比 B 表的列要快

優化 3:從語義上去優化

8.5 from 型子查詢

注意:內層 from 語句查到的臨時表,是沒有索引的

所以 from 的返回內容要盡量少

min/max 優化

在表中,一般都是經過優化的? 如下地區表

?

我們查 min(id),id 是主鍵,查 Min(id)非常快

但是,pid 上沒有索引,現在要求查詢 3113 地區的 min(id);

select min(id) from it_area where pid=69;

試想 id 是有順序的,(默認索引是升續排列),因此,如果我們沿著 id 的索引方向走,那么 第 1 個 pid=69 的索引結點,他的 id 就正好是最小的 id

select id from it_area use index(primary) where pid=69 limit 1;

| 12 | 0.00128100 | select min(id) from it_area where pid=69 |

| 13 | 0.00017000 | select id from it_area use index(primary) where pid=69 limit 1 |

改進后的速度雖然快,但語義已經非常不清晰,不建議這么做,僅僅是實驗目的

8.6 count() 優化

誤區:

1.? myisam 的 count() 非???/p>

答: 是比較快,但僅限于查詢表的 "所有行" 比較快,因為 Myisam 對行數進行了存儲

一旦有條件的查詢,速度就不再快了,尤其是 where 條件的列上沒有索引

2: 假如,id

select count(*) from lx_com where id>=100; (1000 多萬行用了 6.X 秒)

小技巧:

select count(*) from lx_com; 快

select count(*) from lx_com where id<100; 快

select count(*) frol lx_com -? select count(*) from lx_com where id<100; 快

select (select count(*) from lx_com) - (select count(*) from lx_com where id<100)

8.7 group by

注意:

1.? 分組用于統計,而不用于篩選數據

比如:統計平均分,最高分,適合;但用于篩選重復數據,則不適合

以及用索引來避免臨時表和文件排序

2.? 以 A,B 表連接為例,主要查詢 A 表的列

那么 group by,order by 的列盡量相同,而且列應該顯示聲明為 A 的列

8.8 union 優化

注意:union all 不過濾效率提高,如非必須,請用 union all

因為 union 去重的代價非常高,放在程序里去重

limit 及翻頁優化

limit offset,N,當 offset 非常大時,效率極低

原因是 mysql 并不是跳過 offset 行,然后單取 N 行,

而是取 offset+N 行,返回放棄前 offset 行,返回 N 行

效率較低,當 offset 越大時,效率越低

優化辦法:

1.? 從業務上去解決

辦法:不允許翻過 100 頁

以百度為例,一般翻頁到 70 頁左右

2.? 不用 offset,用條件查詢

3.? 非要物理刪除,還要用 offset 精確查詢,還不限制用戶分頁,怎么辦?

分析:優化思路是? 不查,少查,查索引,少取

我們現在必須要查,則只查索引,不查數據,得到 id

再用 id 去查具體條目? ?這種技巧就是延遲索引

8.9 巧用變量

1.? 用變量排名

例: 以 ecshop 中的商品表為例,計算每個欄目下的商品數,并按商品數排名

select cat_id,count(*) as cnt from goods group by cat_id order by cnt desc;

并按商品數計算這些欄目的名次

set @curr_cnt := 0,@prev_cnt := 0, @rank := 0;

select cat_id, (@curr_cnt := cnt) as cnt,

(@rank := if(@curr_cnt <> @prev_cnt,@rank+1,@rank)) as rank,

@prev_cnt := @curr_cnt

from ( select cat_id,count(*) as cnt from shop. goods group by shop. goods.cat_id order by cnt desc) as tmp;

2.? 用變量計算真正影響的行數

當插入多條,當主鍵重復時,則自動更新,這種效果,可以用 insert on duplication for update

要統計真正 ”新增” 的條目,如下圖,我們想得到的值是 ”1”,即被更新的行數

?

insert into user (uid,uname) values (4,?ds?),(5,'wanu'),(6,?safdsaf?)

on duplicate key update uid=values(uid)+(0*(@x:=@x+1)) , uname=values(uname);

mysql> set @x:=0;

Query OK, 0 rows affected (0.00 sec)

?

總影響行數-2*實際 update 數,即新增的行數

3.? 簡化 union

比如有新聞表,news,news_hot

new_hot 是一張內存表,非???#xff0c;用來今天的熱門新聞

首頁取新聞時,邏輯是這樣的:先取 hot,沒有 再取 news,為了省事,用一個 union 來完成

select nid,title from news_hot where nid=xxx

union

select nid,title from news where nid=xxx;

?

如何利用變量讓后半句 select 不執行

select id,content,(@find := 1) from news where id=1

union

select id,content,(@find :=1) from news2 where id=1 and (@find

union 1,1,1 where (@find :=null) is not null;

4.? 小心變量的順序

如下圖:變量先在 where 中發揮作用,然后再是 select 操作

如果 where 不成立,select 操作再不發生

?

Eg;

?

在這個例子中,1、2 兩行,先排好序,在內存中,就是這樣的順序 [2] [1]

再逐行 where 條件判斷,取值

?

?

?

對比這 2 張圖,分析:

1.? where 先發揮作用,把需要的行都給找出

2.? 然后再逐行 select

因此,前者,最終 select 時,select@num 變量,都是一個值

后者,不斷 select,不斷修改@num 的值,值不斷變化

同時:使用變量,將會使 sql 語句的結果不緩存

8.10 子查詢優化

MySQL 從 4.1 版本開始支持子查詢,使用子查詢進行 SELECT 語句嵌套查詢,可以一次完成很多邏輯上需要多個步驟才能完成的 SQL 操作

子查詢雖然很靈活,但是執行效率并不高

執行子查詢時,MYSQL 需要創建臨時表,查詢完畢后再刪除這些臨時表,所以,子查詢的速度會受到一定的影響

優化:

可以使用連接查詢(JOIN)代替子查詢,連接查詢時不需要建立臨時表,其速度比子查詢快

Rbac-----兩種 SQL 語句


9 索引及優化

數據庫索引的本質是數據結構,這種數據結構能夠幫助我們快速的獲取數據庫中的數據

9.1 索引的作用

當表中的數據量越來越大時,索引對于性能的影響愈發重要

索引優化應該是對查詢性能優化最有效的手段

索引能夠輕易將查詢性能提高好幾個數量級

有了索引相當于我們給數據庫的數據加了目錄一樣,可以快速的找到數據,如果不適用索引則需要一點一點去查找數據

簡單來說提高數據查詢的效率

9.2 索引的分類

普通索引:index:加速查找

主鍵索引:primary key :加速查找+約束(不為空且唯一)

唯一索引:unique:加速查找+約束 (唯一)

聯合索引(組合索引)

全文索引

-primary key(id,name):聯合主鍵索引

-unique(id,name):聯合唯一索引

-index(id,name):聯合普通索引

全文索引 fulltext:用于搜索很長一篇文章的時候,效果最好

空間索引 spatial:了解就好,幾乎不用

9.3 索引的優點

1.? 可以通過建立唯一索引或者主鍵索引,保證數據庫表中每一行數據的唯一性

2.? 建立索引可以大大提高檢索的速度,以及減少表的檢索行數

3.? 在表連接的連接條件可以加速表與表直接的相連

4.? 在分組和排序字句進行數據檢索,可以減少查詢時間中分組和排序時所消耗的時間(數據庫的記錄會重新排序)

5.? 建立索引,在查詢中使用索引可以提高性能

9.4 索引的缺點

1.? 在創建索引和維護索引會耗費時間,隨著數據量的增加而增加

2.? 索引文件會占用物理空間,除了數據表需要占用物理空間之外,每一個索引還會占用一定的物理空間

3.? 當對表的數據進行 INSERT,UPDATE,DELETE 的時候,索引也要動態的維護,這樣就會降低數據的維護速度(建立索引會占用磁盤空間的索引文件;一般情況這個問題不太嚴重,但如果你在一個大表上創建了多種組合索引,索引文件的會膨脹很快)

9.5 哪些情況或字段適合加索引

1.? 在經常需要搜索的列上,可以加快索引的速度

2.? 主鍵列上可以確保列的唯一性

3.? 在表與表的而連接條件上加上索引,可以加快連接查詢的速度

4.? 在經常需要排序(order by),分組(group by)和的 distinct 列上加索引可以加快排序查詢的時間

9.6 哪些情況不適合創建索引

1.? 查詢中很少使用到的列不應該創建索引,如果建立了索引然而還會降低 mysql 的性能和增大了空間需求

2.? 很少數據的列也不應該建立索引,比如 一個性別字段 0 或者 1,在查詢中,結果集的數據占了表中數據行的比例比較大,mysql 需要掃描的行數很多,增加索引,并不能提高效率

3.? 定義為 text 和 image 和 bit 數據類型的列不應該增加索引

4.? 當表的修改(UPDATE,INSERT,DELETE)操作遠遠大于檢索(SELECT)操作時不應該創建索引,這兩個操作是互斥的關系

9.7 哪些情況會造成索引失效

1.? 如果條件中有 or,即使其中有條件帶索引也不會使用(這也是為什么盡量少用 or 的原因)

2.? 索引字段的值不能有 null 值,有 null 值會使該列索引失效

3.? 對于多列索引,不是使用的第一部分,則不會使用索引(最左原則

4.? like 查詢以 % 開頭

5.? 如果列類型是字符串,那一定要在條件中將數據使用單引號引用起來,否則不使用索引

6.? 在索引的列上使用表達式或者函數會使索引失效

例如:select * from users where YEAR(adddate) < 2007,將在每個行上進行運算,這將導致索引失效而進行全表掃描,因此我們可以改成:select * from users where adddate < '2007-01-01′

9.8 索引相關 sql

9.8.1 創建索引

mysql>ALTER TABLE 表名 ADD INDEX 索引名 列名;

mysql>ALTER TABLE 表名 ADD UNIQUE 索引名 列名;

mysql>ALTER TABLE 表名 ADD PRIMARY KEY 索引名 列名;

mysql>CREATE INDEX 索引名 ON 表名 列名;

mysql>CREATE UNIQUE INDEX 索引名 ON 表名 列名;

9.8.2 刪除索引

DORP INDEX IndexName ON TableName

9.8.3 查看索引

show index from tableName;

9.9 索引原理

MySQL 的基本存儲結構是頁(記錄都存在頁里邊):

各個數據頁可以組成一個雙向鏈表

每個數據頁中的記錄又可以組成一個單向鏈表

每個數據頁都會為存儲在它里邊兒的記錄生成一個頁目錄,在通過主鍵查找某條記錄的時候可以在頁目錄中使用二分法快速定位到對應的槽,然后再遍歷該槽對應分組中的記錄即可快速找到指定的記錄

以其他列(非主鍵)作為搜索條件:只能從最小記錄開始依次遍歷單鏈表中的每條記錄

所以說,如果我們寫 select * from user where indexname = 'xxx' 這樣沒有進行任何優化的 sql 語句,默認會這樣做:

1. 定位到記錄所在的頁:需要遍歷雙向鏈表,找到所在的頁

2. 從所在的頁內中查找相應的記錄:由于不是根據主鍵查詢,只能遍歷所在頁的單鏈表了

很明顯,在數據量很大的情況下這樣查找會很慢!這樣的時間復雜度為 O(n)

使用索引之后

索引做了些什么可以讓我們查詢加快速度呢?其實就是將無序的數據變成有序(相對):

很明顯的是:沒有用索引我們是需要遍歷雙向鏈表來定位對應的頁,現在通過 "目錄"?就可以很快地定位到對應的頁上了!(二分查找,時間復雜度近似為 O(logn))

其實底層結構就是 B+ 樹,B+ 樹作為樹的一種實現,能夠讓我們很快地查找出對應的記錄

索引被用來快速找出在一個列上用一特定值的行。沒有索引,MySQL 不得不首先以第一條記錄開始,然后讀完整個表直到它找出相關的行;表越大,花費時間越多;對于一個有序字段,可以運用二分查找(Binary Search),這就是為什么性能能得到本質上的提高

MYISAM 和 INNODB 都是用 B+Tree 作為索引結構

(主鍵,unique 都會默認的添加索引)

索引的實現本質上是為了讓數據庫能夠快速查找數據,而單獨維護的數據結構;mysql 實現索引主要使用的兩種數據結構:hash 和 B+ 樹: 我們比較常用的 MyIsam 和 innorDB 引擎都是基于 B+ 樹的

hash:(hash 索引在 mysql 比較少用)他以把數據的索引以 hash 形式組織起來,因此當查找某一條記錄的時候,速度非常快;當時因為是 hash 結構,每個鍵只對應一個值,而且是散列的方式分布;所以他并不支持范圍查找和排序等功能

B+樹:b+tree 是(mysql 使用最頻繁的一個索引數據結構)數據結構以平衡樹的形式來組織,因為是樹型結構,所以更適合用來處理排序,范圍查找等功能;相對 hash 索引,B+ 樹在查找單條記錄的速度雖然比不上 hash 索引,但是因為更適合排序等操作,所以他更受用戶的歡迎;畢竟不可能只對數據庫進行單條記錄的操作

9.9.1 BTree 索引

大的方面看,都用的平衡樹,但具體的實現上,各引擎稍有不同

比如,嚴格的說,NDB 引擎使用的是 T-tree

Myisam,innodb 中,默認用 B-tree 索引

但抽象一下---B-tree 系統,可理解為 "排好序的快速查找結構"

BTree 是平衡搜索多叉樹,設樹的度為 2d(d>1),高度為 h,那么 BTree 要滿足以一下條件:

每個葉子結點的高度一樣,等于 h;

每個非葉子結點由 n-1 個 key 和 n 個指針 point 組成,其中 d

葉子結點指針都為 null;

非葉子結點的 key 都是 [key,data] 二元組,其中 key 表示作為索引的鍵,data 為鍵值所在行的數據

9.9.2 B+Tree 索引

B+Tree 是 BTree 的一個變種,設 d 為樹的度數,h 為樹的高度,B+Tree 和 BTree 的不同主要在于:

B+Tree 中的非葉子結點不存儲數據,只存儲鍵值;

B+Tree 的葉子結點沒有指針,所有鍵值都會出現在葉子結點上,且 key 存儲的鍵值對應 data 數據的物理地址;

B+Tree 的每個非葉子節點由 n 個鍵值 key 和 n 個指針 point 組成;

9.9.3 hash 索引

在 memory 表里,默認是 hash 索引,hash 的理論查詢時間復雜度為 O(1) 疑問

既然 hash 的查找如此高效,為什么不都用 hash 索引?

答:

1.? ?hash 函數計算后的結果,是隨機的,如果是在磁盤上放置數據,比主鍵為 id 為例,那么隨著 id 的增長, id 對應的行,在磁盤上隨機放置

2.??無法對范圍查詢進行優化

3: 無法利用前綴索引;比如 在 btree 中,field 列的值 "hellopworld",并加索引

查詢 xx=helloword,自然可以利用索引, xx=hello,也可以利用索引(左前綴索引)

因為 hash("helloword"),和 hash("hello"),兩者的關系仍為隨機

4.? 排序也無法優化

5.? 必須回行;就是說通過索引拿到數據位置,必須回到表中取數據

9.9.4 btree 索引的常見誤區

9.9.4.1 在 where 條件常用的列上都加上索引

例:where cat_id=3 and price>100;? //查詢第 3 個欄目,100 元以上的商品

誤:cat_id 上和 price 上都加上索引

錯:只能用上 cat_id 或 Price 索引,因為是獨立的索引,同時只能用上 1 個

9.9.4.2 在多列上建立索引后,查詢哪個列,索引都將發揮作用

誤:多列索引上,索引發揮作用,需要滿足左前綴要求;以 index(a,b,c) 為例

?

多列索引經典題目:

http://www.zixue.it/thread-9218-1-4.html

9.9.4.3 面試題

有商品表,有主鍵,goods_id,欄目列 cat_id,價格 price

說:在價格列上已經加了索引,但按價格查詢還是很慢,問可能是什么原因,怎么解決?

答:在實際場景中,一個電商網站的商品分類很多,直接在所有商品中,按價格查商品,是極少的,一般客戶都來到分類下,然后再查

改正:去掉單獨的 Price 列的索引,加 (cat_id,price) 復合索引再查詢

9.10 索引優化策略

1.? 選擇唯一性索引

2.? 唯一性索引的值是唯一的,可以更快速的通過該索引來確定某條記錄

3.? 為經常需要排序、分組和聯合操作的字段建立索引

4.? 為常作為查詢條件的字段建立索引

5.? 限制索引的數目: 越多的索引,會使更新表變得很浪費時間

6.? 盡量使用數據量少的索引

7.? 如果索引的值很長,那么查詢的速度會受到影響

8.? 盡量使用前綴來索引

9.? 如果索引字段的值很長,最好使用值的前綴來索引

10.? 刪除不再使用或者很少使用的索引

11.? 最左前綴匹配原則,非常重要的原則

12.? 盡量選擇區分度高的列作為索引

13.? 區分度的公式是表示字段不重復的比例

14.? 索引列不能參與計算,保持列 "干凈":帶函數的查詢不參與索引

15.? 盡量的擴展索引,不要新建索引

9.10.1 最左前綴原則

MySQL 中的索引可以以一定順序引用多列,這種索引叫作聯合索引;如 User 表的 name 和 city 加聯合索引就是(name,city),而最左前綴原則指的是,如果查詢的時候查詢條件精確匹配索引的左邊連續一列或幾列,則此列就可以被用到;如下:

select * from user where name=xx and city=xx ;//可以命中索引select * from user where name=xx ; // 可以命中索引select * from user where city=xx ; // 無法命中索引

這里需要注意的是,查詢的時候如果兩個條件都用上了,但是順序不同,如 city= xx and name =xx,那么現在的查詢引擎會自動優化為匹配聯合索引的順序,這樣是能夠命中索引的

由于最左前綴原則,在創建聯合索引時,索引字段的順序需要考慮字段值去重之后的個數,較多的放前面ORDER BY 子句也遵循此規則

9.10.2 注意避免冗余索引

冗余索引指的是索引的功能相同,能夠命中就肯定能命中 ,那么就是冗余索引如(name,city )和(name )這兩個索引就是冗余索引,能夠命中后者的查詢肯定是能夠命中前者的,在大多數情況下,都應該盡量擴展已有的索引而不是創建新索引

MySQLS.7 版本后,可以通過查詢 sys 庫的 schema_redundant_indexes 表來查看冗余索引

9.10.3 使用索引查詢需要注意

索引可以提供查詢的速度,但并不是使用了帶有索引的字段查詢都會生效,有些情況下是不生效的,需要注意

9.10.3.1 使用 LIKE 關鍵字的查詢

在使用 LIKE 關鍵字進行查詢的查詢語句中,如果匹配字符串的第一個字符為 "%",索引不起作用

只有 "%" 不在第一個位置,索引才會生效

?

?

9.10.3.2 使用聯合索引的查詢

MySQL 可以為多個字段創建索引,一個索引可以包括 16 個字段

對于聯合索引,只有查詢條件中使用了這些字段中第一個字段時,索引才會生效

?

?

?

9.10.3.3 使用 OR 關鍵字的查詢

查詢語句的查詢條件中只有 OR 關鍵字,且 OR 前后的兩個條件中的列都是索引時,索引才會生效,否則,索引不生效

?

?

?

9.10.4 聚簇索引與非聚簇索引

Myisam 與 innodb 引擎,索引文件的異同

innodb 的主索引文件上,直接存放該行數據,稱為聚簇索引,次索引指向對主鍵的引用

myisam 中,主索引和次索引,都指向物理行(磁盤位置)

注意:innodb 來說

1.? 主鍵索引既存儲索引值,又在葉子中存儲行的數據

2.? 如果沒有主鍵,則會 Unique key 做主鍵

3.? 如果沒有 unique,則系統生成一個內部的 rowid 做主鍵

4.? 像 innodb 中,主鍵的索引結構中,既存儲了主鍵值,又存儲了行數據,這種結構稱為 "聚簇索引"

聚簇索引

優勢:根據主鍵查詢條目比較少時,不用回行(數據就在主鍵節點下)

劣勢:如果碰到不規則數據插入時,造成頻繁的頁分裂

9.10.4.1 高性能索引策略

對于 innodb 而言,因為節點下有數據文件,因此節點的分裂將會比較慢

對于 innodb 的主鍵,盡量用整型,而且是遞增的整型

如果是無規律的數據,將會產生的頁的分裂,影響速度

9.10.4.2 索引覆蓋

索引覆蓋是指:如果查詢的列恰好是索引的一部分,那么查詢只需要在索引文件上進行,不需要回行到磁盤再找數據

這種查詢速度非常快,稱為 "索引覆蓋"

9.10.4.3 理想的索引

1.? 查詢頻繁

2.? 區分度高

3.? 長度小

4.? 盡量能覆蓋常用查詢字段

1.? 索引長度直接影響索引文件的大小,影響增刪改的速度,并間接影響查詢速度(占用內存多)

針對列中的值,從左往右截取部分,來建索引

1: 截的越短,重復度越高,區分度越小,索引效果越不好

2: 截的越長,重復度越低,區分度越高,索引效果越好,但帶來的影響也越大--增刪改變慢,并間影響查詢速度

所以,我們要在 區分度 + 長度 兩者上,取得一個平衡

對于一般的系統應用:區別度能達到 0.1,索引的性能就可以接受

9.10.5 對于左前綴不易區分的列,建立索引的技巧

如 url 列

http://www.baidu.comhttp://www.zixue.it

列的前 11 個字符都是一樣的,不易區分,可以用如下 2 個辦法來解決

1.? 把列內容倒過來存儲,并建立索引

Moc.udiab.www//:ptthTi.euxiz.www//://ptth

這樣左前綴區分度大

2.? 偽 hash 索引效果

同時存 url_hash 列

9.10.6 多列索引

多列索引的考慮因素 --- 列的查詢頻率,列的區分度

9.10.6.1 索引與排序

排序可能發生 2 種情況:

1.? 對于覆蓋索引,直接在索引上查詢時,就是有順序的,using index

2.? 先取出數據,形成臨時表做 filesort(文件排序,但文件可能在磁盤上,也可能在內存中)

我們的爭取目標-----取出來的數據本身就是有序的;利用索引來排序

9.10.6.2 重復索引與冗余索引

重復索引

是指在同 1 個列(如 age),或者順序相同的幾個列(age,school),建立了多個索引,稱為重復索引,重復索引沒有任何幫助,只會增大索引文件,拖慢更新速度,需要去掉

冗余索引

冗余索引是指 2 個索引所覆蓋的列有重疊,稱為冗余索引

比如 x,m列,加索引 index x(x),index xm(x,m)

x,xm 索引,兩者的 x 列重疊了,這種情況,稱為冗余索引

甚至可以把 index mx(m,x) 索引也建立,mx,xm 也不是重復的,因為列的順序不一樣

9.10.6.3 索引碎片與維護

在長期的數據更改過程中,索引文件和數據文件,都將產生空洞,形成碎片

我們可以通過一個 nop 操作(不產生對數據實質影響的操作),來修改表

比如:表的引擎為 innodb,可以 alter table xxx engine innodb

optimize table 表名,也可以修復

注意:修復表的數據及索引碎片,就會把所有的數據文件重新整理一遍,使之對齊

這個過程,如果表的行數比較大,也是非常耗費資源的操作

所以,不能頻繁的修復

如果表的 Update 操作很頻率,可以按周/月,來修復

如果不頻繁,可以更長的周期來做修復

9.10.7 限制每張表上的索引數量(5 個)

建議單張表索引不超過 5 個

索引并不是越多越好

索引可以提高效率同樣可以降低效率

索引可以增加查詢效率,但同樣也會降低插入和更新的效率,甚至有些情況下會降低查詢效率

因為 MySQL 優化器在選擇如何優化查詢時,會根據統一信息,對每一個可以用到的索引來進行評估,以生成出一個最好的執行計劃,如果同時有很多個索引都可以用于查詢,就會增加 MySQL 優化器生成執行計劃的時間,同樣會降低查詢性能

9.10.8 禁止給表中的每一列都建立單獨的索引

5.6 版本之前,一個 sql 只能使用到一個表中的一個索引,5.6 以后,雖然有了合并索引的優化方式,但是還是遠遠沒有使用一個聯合索引的查詢方式好

9.10.9 每個 Innodb 表必須有個主鍵

Innodb 是一種索引組織表:數據的存儲的邏輯順序和索引的順序是相同的

每個表都可以有多個索引,但是表的存儲順序只能有一種

Innodb 是按照主鍵索引的順序來組織表的

1.? 不要使用更新頻繁的列作為主鍵,不適用多列主鍵(相當于聯合索引)

2.? ? 不要使用 UUID,MD5,HASH,字符串列作為主鍵(無法保證數據的順序增長)

3.? ?主鍵建議使用自增 ID 值

9.10.10 常見索引列建議

1. 出現在 SELECT、UPDATE、DELETE 語句的 WHERE 從句中的列

2. 包含在 ORDER BY、GROUP BY、DISTINCT 中的字段

3. 并不要將符合 1 和 2 中的字段的列都建立一個索引, 通常將 1、2 中的字段建立聯合索引效果更好

4. 多表 join 的關聯列

9.10.11 如何選擇索引列的順序

建立索引的目的是:希望通過索引進行數據查找,減少隨機 IO,增加查詢性能 ,索引能過濾出越少的數據,則從磁盤中讀入的數據也就越少

區分度最高的放在聯合索引的最左側(區分度=列中不同值的數量/列的總行數)

盡量把字段長度小的列放在聯合索引的最左側(因為字段長度越小,一頁能存儲的數據量越大,IO 性能也就越好)

使用最頻繁的列放到聯合索引的左側(這樣可以比較少的建立一些索引)

9.10.12 避免建立冗余索引和重復索引(增加了查詢優化器生成執行計劃的時間)

重復索引示例:primary key(id)、index(id)、unique index(id)

冗余索引示例:index(a,b,c)、index(a,b)、index(a)

9.10.13 對于頻繁的查詢優先考慮使用覆蓋索引

覆蓋索引:就是包含了所有查詢字段 (where,select,ordery by,group by 包含的字段) 的索引覆蓋索引的好處:

避免 Innodb 表進行索引的二次查詢: Innodb 是以聚集索引的順序來存儲的,對于 Innodb 來說,二級索引在葉子節點中所保存的是行的主鍵信息,如果是用二級索引查詢數據的話,在查找到相應的鍵值后,還要通過主鍵進行二次查詢才能獲取我們真實所需要的數據。而在覆蓋索引中,二級索引的鍵值中可以獲取所有的數據,避免了對主鍵的二次查詢 ,減少了 IO 操作,提升了查詢效率

可以把隨機 IO 變成順序 IO 加快查詢效率: 由于覆蓋索引是按鍵值的順序存儲的,對于 IO 密集型的范圍查找來說,對比隨機從磁盤讀取每一行的數據 IO 要少的多,因此利用覆蓋索引在訪問時也可以把磁盤的隨機讀取的 IO 轉變成索引查找的順序 IO

9.10.14 索引 SET 規范

盡量避免使用外鍵約束

不建議使用外鍵約束(foreign key),但一定要在表與表之間的關聯鍵上建立索引

外鍵可用于保證數據的參照完整性,但建議在業務端實現

外鍵會影響父表和子表的寫操作從而降低性能

9.11 主鍵、外鍵和索引的區別

主鍵

外鍵

索引

定義

唯一標識一條記錄,不能有重復的,不允許為空

表的外鍵是另一表的主鍵,外鍵可以有重復的,可以是空值

該字段沒有重復值,但可以有一個空值

作用

用來保證數據完整性

用來和其他表建立聯系用的

是提高查詢排序的速度

個數

主鍵只能有一個

一個表可以有多個外鍵

一個表可以有多個唯一索引

9.12 mysql:刪除表數據drop、truncate 和 delete 的用法

程度從強到弱

1. drop table tb

drop將表格直接刪除,沒有辦法找回

2. truncate (table) tb

刪除表中的所有數據,不能與where一起使用

3. delete from tb (where)

刪除表中的數據(可制定某一行)

區別:truncate 和 delete 的區別

1. 事務:truncate 是不可以 rollback 的,但是 delete 是可以 rollback 的

原因:truncate 刪除整表數據(ddl語句,隱式提交),delete 是一行一行的刪除,可以 rollback

2. 效果:truncate 刪除后將重新水平線和索引(id從零開始),delete 不會刪除索引

3. truncate 不能觸發任何? Delete 觸發器

4. delete 刪除可以返回行數


10 插入數據的優化? ?

插入數據時,影響插入速度的主要是索引、唯一性校驗、一次插入的數據條數

插入數據的優化,不同的存儲引擎優化手段不一樣,在 MySQL 中常用的存儲引擎有:MyISAM 和 InnoDB,兩者的區別:

http://www.cnblogs.com/panfeng412/archive/2011/08/16/2140364.html

?

10.1 MyISAM

10.1.1 禁用索引

對于非空表,插入記錄時,MySQL 會根據表的索引對插入的記錄建立索引

如果插入大量數據,建立索引會降低插入數據速度

為了解決這個問題,可以在批量插入數據之前禁用索引,數據插入完成后再開啟索引

禁用索引的語句:

ALTER TABLE table_name DISABLE KEYS

開啟索引語句:

ALTER TABLE table_name ENABLE KEYS

對于空表批量插入數據,則不需要進行操作,因為 MyISAM 引擎的表是在導入數據后才建立索引

10.1.2 禁用唯一性檢查

唯一性校驗會降低插入記錄的速度,可以在插入記錄之前禁用唯一性檢查,插入數據完成后再開啟

禁用唯一性檢查的語句:SET UNIQUE_CHECKS = 0;

開啟唯一性檢查的語句:SET UNIQUE_CHECKS = 1;

10.1.3 批量插入數據

插入數據時,可以使用一條 INSERT 語句插入一條數據,也可以插入多條數據

?

?

第二種方式的插入速度比第一種方式快

10.1.4 使用 LOAD DATA INFILE

當需要批量導入數據時,使用 LOAD DATA INFILE 語句比 INSERT 語句插入速度快很多

10.2 InnoDB

10.2.1 禁用唯一性檢查

用法和 MyISAM 一樣

10.2.2 禁用外鍵檢查

插入數據之前執行禁止對外鍵的檢查,數據插入完成后再恢復,可以提供插入速度

禁用:SET foreign_key_checks = 0;

開啟:SET foreign_key_checks = 1;

10.2.3 禁止自動提交

插入數據之前執行禁止事務的自動提交,數據插入完成后再恢復,可以提高插入速度

禁用:SET autocommit = 0;

開啟:SET autocommit = 1;


11 服務器優化

11.1 優化服務器硬件

服務器的硬件性能直接決定著 MySQL 數據庫的性能,硬件的性能瓶頸,直接決定 MySQL 數據庫的運行速度和效率

需要從以下幾個方面考慮:

1. 配置較大的內存

足夠大的內存,是提高 MySQL 數據庫性能的方法之一;內存的 IO 比硬盤快的多,可以增加系統的緩沖區容量,使數據在內存停留的時間更長,以減少磁盤的 IO

2. 配置高速磁盤

比如 SSD

3. 合理分配磁盤 IO

把磁盤 IO 分散到多個設備上,以減少資源的競爭,提高并行操作能力

4. 配置多核處理器

MySQL 是多線程的數據庫,多處理器可以提高同時執行多個線程的能力

11.2 優化 MySQL 的參數

通過優化 MySQL 的參數可以提高資源利用率,從而達到提高 MySQL 服務器性能的目的

MySQL 的配置參數都在 my.conf 或者 my.ini 文件的[mysqld]組中,常用的參數如下:

?

?

?

要求:必須記憶至少 3 個


12 測試定位

高性能不是指 "絕對性能" 強悍,而是指業務能發揮出硬件的最大水平。性能強的服務器并非 "設計" 而來,而是不斷改進,提升短板,測試,就是量化找出短板的過程

12.1 測試指標

只有會測試,能把數據量化,才能進一步改進優化

1:吞吐量:單位時間內的事務處理數,單位 tps(每秒事務數)

2:響應時間:語句平均響應時間,一般截取某段時間內,95% 范圍內的平均時間

3:并發性:線程同時執行

4:可擴展性:資源增加,性能也能正比增加

12.1.1 發現系統運行緩慢,如何定位和分析查詢慢的 sql 語句

1.開啟 mysql 慢日志查詢 定位查詢較慢的 sql 語句 (200ms 500ms )

2.使用 EXPLAIN 關鍵字可以讓你知道 MySQL 是如何處理你的 SQL 語句的。這可以幫你分析你的查詢語句或是表結構的性能瓶頸。EXPLAIN 的查詢結果還會告訴你你的索引主鍵被如何利用的,你的數據表是如何被搜索和排序的……等等,等等

3.代碼中 可以使用 AOP 的操作 對每個持久層的 service 方法打印執行時間,將所有執行時間較長的 sql 語句進行預警

12.2 測試工具

12.2.1 mysqlslap

?

12.2.2 sysbench

測試 CPU 性能

測試 IO 性能

測試事務性能

12.3 查看 mysql 的進程狀態

mysql -h 192.168.177.128 -u root -e 'show processlist\G'|grep State:|sort|uniq -c|sort -rn

5 State: Sending data

2 State: statistics

2 State: NULL

1 State: Updating

1 State: update

以下幾種狀態要注意:

converting HEAP to MyISAM 查詢結果太大時,把結果放在磁盤

create tmp table 創建臨時表(如 group 時儲存中間結果)

Copying to tmp table on disk 把內存臨時表復制到磁盤

locked 被其他查詢鎖住

logging slow query 記錄慢查詢

總結

以上是生活随笔為你收集整理的面试-03-数据库和事务专题的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

人妻人人添人妻人人爱 | 国内精品人妻无码久久久影院蜜桃 | 亚洲成av人影院在线观看 | 日日摸天天摸爽爽狠狠97 | 日本xxxx色视频在线观看免费 | 国产成人av免费观看 | 欧美午夜特黄aaaaaa片 | 四虎影视成人永久免费观看视频 | 亚洲欧洲日本无在线码 | 国产凸凹视频一区二区 | 天下第一社区视频www日本 | 亚洲乱码日产精品bd | 久久久久免费精品国产 | 久久国产36精品色熟妇 | 日本一区二区三区免费高清 | 国产精品久久久久9999小说 | 免费播放一区二区三区 | 人人妻人人澡人人爽欧美一区 | 老司机亚洲精品影院 | 精品国偷自产在线 | 欧美人与禽zoz0性伦交 | 国产一区二区三区四区五区加勒比 | 最新国产乱人伦偷精品免费网站 | 无码国产激情在线观看 | 大色综合色综合网站 | 亚洲综合精品香蕉久久网 | 国产超级va在线观看视频 | 特大黑人娇小亚洲女 | 永久免费观看国产裸体美女 | 国产在线一区二区三区四区五区 | 纯爱无遮挡h肉动漫在线播放 | 久久99精品国产麻豆 | 性生交大片免费看l | 久久精品国产99精品亚洲 | 久久aⅴ免费观看 | 亚洲精品一区二区三区婷婷月 | 久久国产36精品色熟妇 | 中文字幕精品av一区二区五区 | 国产激情无码一区二区app | 亚洲色大成网站www | 国产激情艳情在线看视频 | 中文精品无码中文字幕无码专区 | 一区二区传媒有限公司 | 国产香蕉97碰碰久久人人 | 国产精品久久久久久亚洲毛片 | 精品无人区无码乱码毛片国产 | 成人无码视频在线观看网站 | 少妇邻居内射在线 | 在线观看国产一区二区三区 | 国内精品九九久久久精品 | a在线观看免费网站大全 | 国产在线一区二区三区四区五区 | 鲁一鲁av2019在线 | 国色天香社区在线视频 | 水蜜桃色314在线观看 | 精品无码成人片一区二区98 | 亚洲爆乳无码专区 | 国产av剧情md精品麻豆 | 欧美一区二区三区 | 国产无遮挡又黄又爽免费视频 | 国产精品无码一区二区三区不卡 | 亚洲成av人在线观看网址 | 国产精品无码一区二区桃花视频 | 在线天堂新版最新版在线8 | 国产精品美女久久久 | 三上悠亚人妻中文字幕在线 | 免费人成网站视频在线观看 | 亚洲国产精品久久久久久 | 久久综合久久自在自线精品自 | 18禁黄网站男男禁片免费观看 | 色婷婷av一区二区三区之红樱桃 | 婷婷色婷婷开心五月四房播播 | 色一情一乱一伦一区二区三欧美 | 天天av天天av天天透 | 在线精品国产一区二区三区 | 免费人成网站视频在线观看 | 国产精品亚洲lv粉色 | 无码人中文字幕 | 国产 精品 自在自线 | 国产在热线精品视频 | 丁香花在线影院观看在线播放 | 国产成人一区二区三区别 | 国产另类ts人妖一区二区 | 亚洲区小说区激情区图片区 | 国产尤物精品视频 | 天天摸天天碰天天添 | 日本欧美一区二区三区乱码 | 亚洲国产精品久久久天堂 | 国产内射爽爽大片视频社区在线 | 人人妻人人澡人人爽人人精品 | 国产免费无码一区二区视频 | 丰满人妻一区二区三区免费视频 | 国产激情一区二区三区 | 97资源共享在线视频 | 亚无码乱人伦一区二区 | 无码中文字幕色专区 | 澳门永久av免费网站 | 18精品久久久无码午夜福利 | 日本xxxx色视频在线观看免费 | 免费播放一区二区三区 | 中文字幕av伊人av无码av | 亚洲性无码av中文字幕 | 特黄特色大片免费播放器图片 | 国产性生交xxxxx无码 | 伊人久久大香线焦av综合影院 | 国内精品一区二区三区不卡 | 日本一卡2卡3卡4卡无卡免费网站 国产一区二区三区影院 | 久久久精品国产sm最大网站 | 国产精品无码一区二区三区不卡 | 亚洲中文字幕乱码av波多ji | 性史性农村dvd毛片 | 欧美丰满熟妇xxxx性ppx人交 | 在线天堂新版最新版在线8 | 曰韩少妇内射免费播放 | 蜜臀av无码人妻精品 | 免费中文字幕日韩欧美 | 国内精品人妻无码久久久影院 | 亚洲精品国偷拍自产在线观看蜜桃 | 蜜桃av蜜臀av色欲av麻 999久久久国产精品消防器材 | 熟女少妇在线视频播放 | 成人精品一区二区三区中文字幕 | 久久99久久99精品中文字幕 | 国产精华av午夜在线观看 | 久久精品一区二区三区四区 | 午夜精品久久久久久久久 | 无码国内精品人妻少妇 | 国产农村乱对白刺激视频 | 久久99精品国产.久久久久 | 免费无码av一区二区 | 成人精品天堂一区二区三区 | 久久久久se色偷偷亚洲精品av | 欧美一区二区三区视频在线观看 | 男女猛烈xx00免费视频试看 | 久久久久久a亚洲欧洲av冫 | 国产精品久久久久无码av色戒 | 少妇性l交大片欧洲热妇乱xxx | 亚洲欧美中文字幕5发布 | 亚洲精品欧美二区三区中文字幕 | 国产一精品一av一免费 | а√天堂www在线天堂小说 | 久久综合给久久狠狠97色 | 亚洲日韩av一区二区三区四区 | av香港经典三级级 在线 | 亚洲欧美日韩综合久久久 | 欧美三级不卡在线观看 | 色综合久久中文娱乐网 | 麻豆md0077饥渴少妇 | 日韩精品无码一区二区中文字幕 | 激情爆乳一区二区三区 | av在线亚洲欧洲日产一区二区 | 少妇性l交大片 | 国产三级精品三级男人的天堂 | 欧美xxxx黑人又粗又长 | 国产精品无码一区二区桃花视频 | 精品久久久中文字幕人妻 | 爱做久久久久久 | 成人aaa片一区国产精品 | 国产另类ts人妖一区二区 | 色噜噜亚洲男人的天堂 | 亚洲成在人网站无码天堂 | 狠狠色丁香久久婷婷综合五月 | 精品一区二区三区无码免费视频 | 国产suv精品一区二区五 | 男女超爽视频免费播放 | 亚洲精品综合一区二区三区在线 | 俺去俺来也在线www色官网 | 久久精品中文字幕一区 | 欧美自拍另类欧美综合图片区 | 欧美日韩一区二区三区自拍 | 亚洲国产精品毛片av不卡在线 | 少妇无码av无码专区在线观看 | 亚洲成av人影院在线观看 | 在线а√天堂中文官网 | 亚洲中文字幕成人无码 | 高清国产亚洲精品自在久久 | 免费无码av一区二区 | 亚洲一区二区观看播放 | 人人爽人人澡人人高潮 | 无码免费一区二区三区 | 久久久国产一区二区三区 | 亚洲综合无码一区二区三区 | 大地资源网第二页免费观看 | 日韩 欧美 动漫 国产 制服 | 国产精品永久免费视频 | 久久无码中文字幕免费影院蜜桃 | 亚洲自偷自偷在线制服 | 亚洲色欲色欲欲www在线 | 亚洲精品成a人在线观看 | 婷婷五月综合缴情在线视频 | 麻豆果冻传媒2021精品传媒一区下载 | 一区二区三区乱码在线 | 欧洲 | 无码国产激情在线观看 | 人人妻人人澡人人爽人人精品浪潮 | 丰满少妇女裸体bbw | 99久久亚洲精品无码毛片 | 亚洲精品欧美二区三区中文字幕 | 蜜臀av在线播放 久久综合激激的五月天 | 国产精品久久久一区二区三区 | 精品一区二区不卡无码av | 67194成是人免费无码 | 一本精品99久久精品77 | 偷窥日本少妇撒尿chinese | 人妻插b视频一区二区三区 | 精品国产福利一区二区 | 无码人妻黑人中文字幕 | 国产无遮挡又黄又爽又色 | 欧美人与牲动交xxxx | 丰满肥臀大屁股熟妇激情视频 | 双乳奶水饱满少妇呻吟 | 国产国语老龄妇女a片 | 国产成人综合色在线观看网站 | 乱人伦人妻中文字幕无码久久网 | 天堂无码人妻精品一区二区三区 | 国产日产欧产精品精品app | 18精品久久久无码午夜福利 | 一本无码人妻在中文字幕免费 | 国产尤物精品视频 | www国产精品内射老师 | 久久综合网欧美色妞网 | 福利一区二区三区视频在线观看 | 日韩精品一区二区av在线 | 久久国产精品_国产精品 | 永久免费精品精品永久-夜色 | 欧美大屁股xxxxhd黑色 | 久激情内射婷内射蜜桃人妖 | 国产精品二区一区二区aⅴ污介绍 | 丝袜足控一区二区三区 | 欧美日韩综合一区二区三区 | 国产免费久久精品国产传媒 | 国产乱码精品一品二品 | 亚洲精品午夜国产va久久成人 | 欧美激情内射喷水高潮 | 国产乡下妇女做爰 | 精品乱子伦一区二区三区 | 亚洲精品综合五月久久小说 | 亚洲欧美中文字幕5发布 | 精品无码国产自产拍在线观看蜜 | 性色欲网站人妻丰满中文久久不卡 | av香港经典三级级 在线 | 任你躁国产自任一区二区三区 | 国产成人精品视频ⅴa片软件竹菊 | 窝窝午夜理论片影院 | 色欲人妻aaaaaaa无码 | 麻豆av传媒蜜桃天美传媒 | 亚洲人成无码网www | 欧美猛少妇色xxxxx | a在线观看免费网站大全 | 少妇厨房愉情理9仑片视频 | 亚洲精品无码国产 | 精品国产av色一区二区深夜久久 | 成人亚洲精品久久久久 | 亚洲无人区一区二区三区 | 国精产品一品二品国精品69xx | 精品欧美一区二区三区久久久 | 中文字幕人成乱码熟女app | 综合激情五月综合激情五月激情1 | 伊在人天堂亚洲香蕉精品区 | 在线а√天堂中文官网 | 国产免费无码一区二区视频 | 国产熟妇高潮叫床视频播放 | 日日摸日日碰夜夜爽av | 美女极度色诱视频国产 | www一区二区www免费 | 玩弄中年熟妇正在播放 | 欧美35页视频在线观看 | 人妻少妇被猛烈进入中文字幕 | 日韩无套无码精品 | 7777奇米四色成人眼影 | 亚洲精品国产精品乱码视色 | 老太婆性杂交欧美肥老太 | 永久免费观看国产裸体美女 | 丝袜人妻一区二区三区 | 亚欧洲精品在线视频免费观看 | 黑人大群体交免费视频 | 伊人久久大香线蕉亚洲 | 久热国产vs视频在线观看 | 一本久久a久久精品vr综合 | 人妻少妇被猛烈进入中文字幕 | 亚洲 日韩 欧美 成人 在线观看 | 装睡被陌生人摸出水好爽 | 亚洲精品久久久久avwww潮水 | 99riav国产精品视频 | 欧洲熟妇色 欧美 | 午夜精品一区二区三区的区别 | 欧洲vodafone精品性 | 国产av一区二区三区最新精品 | 午夜精品久久久久久久 | 无码吃奶揉捏奶头高潮视频 | 国产午夜视频在线观看 | 久久久久久久人妻无码中文字幕爆 | 日本丰满熟妇videos | 亚洲人成网站在线播放942 | 老子影院午夜精品无码 | 久久久中文久久久无码 | 在线观看欧美一区二区三区 | 中文字幕 人妻熟女 | 99久久精品日本一区二区免费 | 欧美精品一区二区精品久久 | 荫蒂被男人添的好舒服爽免费视频 | 久久精品国产大片免费观看 | 在线欧美精品一区二区三区 | 亚洲日韩av片在线观看 | 国产精品无码一区二区桃花视频 | 中文字幕人成乱码熟女app | 亚洲性无码av中文字幕 | 男女猛烈xx00免费视频试看 | 日韩人妻无码一区二区三区久久99 | 日韩人妻无码一区二区三区久久99 | 永久黄网站色视频免费直播 | 亚洲男人av香蕉爽爽爽爽 | 亚洲第一网站男人都懂 | 国产69精品久久久久app下载 | 亚洲色欲久久久综合网东京热 | 好爽又高潮了毛片免费下载 | 在线a亚洲视频播放在线观看 | 久精品国产欧美亚洲色aⅴ大片 | 国产尤物精品视频 | 久久99久久99精品中文字幕 | 久久亚洲国产成人精品性色 | 国精产品一区二区三区 | 熟妇女人妻丰满少妇中文字幕 | 成人无码精品一区二区三区 | 久久精品国产亚洲精品 | 久久五月精品中文字幕 | 日本在线高清不卡免费播放 | 无码人妻丰满熟妇区五十路百度 | 久久久久久亚洲精品a片成人 | 日韩精品无码一本二本三本色 | 丰满岳乱妇在线观看中字无码 | 精品国产aⅴ无码一区二区 | 久久久婷婷五月亚洲97号色 | 国产亚洲精品久久久久久国模美 | 国产精品va在线观看无码 | 国产av无码专区亚洲a∨毛片 | 精品一区二区三区无码免费视频 | 国产精品久久久久久亚洲影视内衣 | 亚洲高清偷拍一区二区三区 | 性欧美videos高清精品 | 日本一区二区三区免费播放 | 人人妻在人人 | 男女超爽视频免费播放 | 荡女精品导航 | 日日摸天天摸爽爽狠狠97 | 自拍偷自拍亚洲精品被多人伦好爽 | 国产亚洲人成a在线v网站 | 久久这里只有精品视频9 | 精品久久久久久亚洲精品 | 99精品视频在线观看免费 | 国产真实乱对白精彩久久 | 最新版天堂资源中文官网 | 久久99热只有频精品8 | 性欧美疯狂xxxxbbbb | 国产婷婷色一区二区三区在线 | 亚洲精品一区三区三区在线观看 | 国产精品毛片一区二区 | 强奷人妻日本中文字幕 | 色综合久久88色综合天天 | 熟妇人妻无码xxx视频 | 国产莉萝无码av在线播放 | 国产精品久久久久影院嫩草 | 成人av无码一区二区三区 | 国产av久久久久精东av | 国产精品第一区揄拍无码 | 人妻体内射精一区二区三四 | 欧美 丝袜 自拍 制服 另类 | 国产97色在线 | 免 | 任你躁国产自任一区二区三区 | 在线а√天堂中文官网 | 超碰97人人做人人爱少妇 | 亚洲啪av永久无码精品放毛片 | 色婷婷综合中文久久一本 | 波多野结衣 黑人 | 欧美野外疯狂做受xxxx高潮 | 99久久精品无码一区二区毛片 | 蜜桃视频韩日免费播放 | 天堂在线观看www | 中文字幕乱妇无码av在线 | 国产成人精品无码播放 | 欧美一区二区三区视频在线观看 | 亚洲a无码综合a国产av中文 | 欧美国产日韩久久mv | 啦啦啦www在线观看免费视频 | 超碰97人人做人人爱少妇 | 亚洲国产欧美国产综合一区 | 精品国产一区二区三区四区在线看 | 又大又黄又粗又爽的免费视频 | 无码国产色欲xxxxx视频 | 美女毛片一区二区三区四区 | 捆绑白丝粉色jk震动捧喷白浆 | 超碰97人人做人人爱少妇 | 亚洲中文无码av永久不收费 | 日本熟妇人妻xxxxx人hd | 麻豆av传媒蜜桃天美传媒 | 国产成人av免费观看 | 俺去俺来也www色官网 | 中文字幕无线码免费人妻 | 少妇高潮喷潮久久久影院 | 东京热一精品无码av | 精品乱子伦一区二区三区 | 精品水蜜桃久久久久久久 | 欧美激情一区二区三区成人 | av无码不卡在线观看免费 | 丝袜人妻一区二区三区 | 大乳丰满人妻中文字幕日本 | 中文字幕色婷婷在线视频 | 人人妻人人澡人人爽欧美一区九九 | 沈阳熟女露脸对白视频 | 波多野结衣 黑人 | 亚洲伊人久久精品影院 | av无码久久久久不卡免费网站 | 国产精品自产拍在线观看 | 国产精品久久久av久久久 | 国产精品久久久久无码av色戒 | 久久99精品国产麻豆 | 国产极品视觉盛宴 | 真人与拘做受免费视频一 | 亚洲精品欧美二区三区中文字幕 | av人摸人人人澡人人超碰下载 | 国产亚洲精品久久久闺蜜 | 狠狠噜狠狠狠狠丁香五月 | 中文字幕色婷婷在线视频 | 人人澡人摸人人添 | 成人无码视频在线观看网站 | 色综合视频一区二区三区 | 天天摸天天碰天天添 | 乱人伦人妻中文字幕无码久久网 | av人摸人人人澡人人超碰下载 | 国产99久久精品一区二区 | 国产特级毛片aaaaaa高潮流水 | 国产三级精品三级男人的天堂 | 在线精品亚洲一区二区 | 亚洲综合另类小说色区 | 熟妇人妻无乱码中文字幕 | 亚洲色大成网站www | 日产国产精品亚洲系列 | 伊人久久婷婷五月综合97色 | 欧美性猛交xxxx富婆 | 国内老熟妇对白xxxxhd | 日韩欧美群交p片內射中文 | 无码av最新清无码专区吞精 | 亚洲精品中文字幕久久久久 | 中文字幕av无码一区二区三区电影 | 欧美刺激性大交 | 在教室伦流澡到高潮hnp视频 | 亚洲欧美色中文字幕在线 | 六十路熟妇乱子伦 | 国产莉萝无码av在线播放 | 久久人妻内射无码一区三区 | 亚洲熟妇色xxxxx亚洲 | 国产午夜无码视频在线观看 | 亚洲成av人在线观看网址 | 亚洲综合精品香蕉久久网 | 亚洲一区二区三区国产精华液 | 搡女人真爽免费视频大全 | 色一情一乱一伦一视频免费看 | 午夜成人1000部免费视频 | 日本一区二区更新不卡 | 熟妇人妻中文av无码 | 任你躁国产自任一区二区三区 | 国产成人无码一二三区视频 | 粉嫩少妇内射浓精videos | 99久久精品无码一区二区毛片 | 色婷婷久久一区二区三区麻豆 | 国产凸凹视频一区二区 | 丰满少妇女裸体bbw | 伊人久久大香线焦av综合影院 | 国产精品自产拍在线观看 | 国产肉丝袜在线观看 | 领导边摸边吃奶边做爽在线观看 | 国产精品爱久久久久久久 | 377p欧洲日本亚洲大胆 | 97夜夜澡人人爽人人喊中国片 | 伊人色综合久久天天小片 | 久久精品国产一区二区三区肥胖 | 激情内射亚州一区二区三区爱妻 | 丰满岳乱妇在线观看中字无码 | 欧美日韩亚洲国产精品 | 红桃av一区二区三区在线无码av | 亚洲色大成网站www国产 | 偷窥村妇洗澡毛毛多 | 午夜免费福利小电影 | 在线看片无码永久免费视频 | 亚洲熟妇色xxxxx欧美老妇y | 一本久道久久综合婷婷五月 | 99国产精品白浆在线观看免费 | √天堂资源地址中文在线 | 国产成人无码av在线影院 | 国产三级精品三级男人的天堂 | 亚洲国产成人av在线观看 | 中文字幕无码av激情不卡 | 免费观看激色视频网站 | 鲁一鲁av2019在线 | 日本爽爽爽爽爽爽在线观看免 | 在线看片无码永久免费视频 | 夜精品a片一区二区三区无码白浆 | 亚洲综合久久一区二区 | 天天躁夜夜躁狠狠是什么心态 | 免费人成网站视频在线观看 | 最新版天堂资源中文官网 | 久久久久久av无码免费看大片 | 99精品视频在线观看免费 | 亚洲国产av精品一区二区蜜芽 | 久久97精品久久久久久久不卡 | 日本护士毛茸茸高潮 | 亚洲日本va中文字幕 | 亚洲高清偷拍一区二区三区 | 国产97人人超碰caoprom | 亚洲国产精品成人久久蜜臀 | 日韩精品无码一区二区中文字幕 | 亚洲成av人综合在线观看 | 免费乱码人妻系列无码专区 | 国产在线精品一区二区高清不卡 | 中文字幕人妻无码一夲道 | 欧美 亚洲 国产 另类 | 自拍偷自拍亚洲精品被多人伦好爽 | 夜夜夜高潮夜夜爽夜夜爰爰 | 亚洲狠狠色丁香婷婷综合 | 中文字幕无码av激情不卡 | 影音先锋中文字幕无码 | 2020久久超碰国产精品最新 | 狠狠色色综合网站 | 人妻少妇被猛烈进入中文字幕 | 久久久成人毛片无码 | 久久精品国产大片免费观看 | 久久综合九色综合97网 | 日本大香伊一区二区三区 | 高清无码午夜福利视频 | 亚洲国产av精品一区二区蜜芽 | 欧美日韩久久久精品a片 | 国产av无码专区亚洲awww | 少妇厨房愉情理9仑片视频 | 无码人妻精品一区二区三区不卡 | 麻豆精品国产精华精华液好用吗 | 精品国产aⅴ无码一区二区 | 99精品视频在线观看免费 | 亚洲精品美女久久久久久久 | 一区二区三区乱码在线 | 欧洲 | 在线a亚洲视频播放在线观看 | 免费人成网站视频在线观看 | 鲁鲁鲁爽爽爽在线视频观看 | 成人三级无码视频在线观看 | 国内精品人妻无码久久久影院蜜桃 | 国产午夜福利100集发布 | 中文字幕 人妻熟女 | 荫蒂添的好舒服视频囗交 | 任你躁国产自任一区二区三区 | 国产亚洲人成在线播放 | 色情久久久av熟女人妻网站 | 欧美xxxx黑人又粗又长 | 精品国产一区二区三区av 性色 | 欧美人与禽猛交狂配 | 久久久无码中文字幕久... | 内射爽无广熟女亚洲 | 久久无码中文字幕免费影院蜜桃 | 欧美 日韩 人妻 高清 中文 | 亚洲综合精品香蕉久久网 | 99久久婷婷国产综合精品青草免费 | 岛国片人妻三上悠亚 | 丝袜美腿亚洲一区二区 | 天天躁夜夜躁狠狠是什么心态 | 日韩精品乱码av一区二区 | 欧美日韩精品 | 成人免费无码大片a毛片 | 亚洲国产欧美国产综合一区 | 久久久精品国产sm最大网站 | 色诱久久久久综合网ywww | 国产三级久久久精品麻豆三级 | 国产在线无码精品电影网 | 日韩人妻系列无码专区 | 人妻少妇精品无码专区二区 | 国产69精品久久久久app下载 | 乌克兰少妇性做爰 | 国产九九九九九九九a片 | 水蜜桃亚洲一二三四在线 | 国产精品久久久久9999小说 | 内射白嫩少妇超碰 | 狠狠色欧美亚洲狠狠色www | 99久久精品午夜一区二区 | 亚洲啪av永久无码精品放毛片 | 人人爽人人澡人人人妻 | 特黄特色大片免费播放器图片 | 免费观看又污又黄的网站 | 麻豆果冻传媒2021精品传媒一区下载 | 国产农村妇女aaaaa视频 撕开奶罩揉吮奶头视频 | 国产亚av手机在线观看 | 天天燥日日燥 | 中文字幕av无码一区二区三区电影 | 欧美乱妇无乱码大黄a片 | 色欲久久久天天天综合网精品 | 精品无人国产偷自产在线 | 纯爱无遮挡h肉动漫在线播放 | 无码帝国www无码专区色综合 | 午夜精品久久久久久久久 | a在线亚洲男人的天堂 | 欧美喷潮久久久xxxxx | 无码av岛国片在线播放 | 国产乱人无码伦av在线a | 日日麻批免费40分钟无码 | 亚洲伊人久久精品影院 | 亚洲 激情 小说 另类 欧美 | 久久zyz资源站无码中文动漫 | 精品无码av一区二区三区 | 亚洲啪av永久无码精品放毛片 | 精品国产福利一区二区 | 久久人人97超碰a片精品 | 丰腴饱满的极品熟妇 | 国产在线精品一区二区高清不卡 | 无码吃奶揉捏奶头高潮视频 | 未满小14洗澡无码视频网站 | 午夜理论片yy44880影院 | 啦啦啦www在线观看免费视频 | 真人与拘做受免费视频一 | 亚洲精品成人av在线 | 国色天香社区在线视频 | 天堂一区人妻无码 | 久久视频在线观看精品 | 六月丁香婷婷色狠狠久久 | 亚洲熟妇自偷自拍另类 | 未满小14洗澡无码视频网站 | 中文字幕亚洲情99在线 | 国产绳艺sm调教室论坛 | 亚洲一区二区三区偷拍女厕 | 中文字幕av日韩精品一区二区 | 精品成人av一区二区三区 | 亚洲日本va中文字幕 | 国产乱人伦av在线无码 | 成人无码精品1区2区3区免费看 | 在线亚洲高清揄拍自拍一品区 | 无码人妻丰满熟妇区五十路百度 | 亚洲乱码中文字幕在线 | 国产无av码在线观看 | 无套内谢的新婚少妇国语播放 | 亚洲综合无码久久精品综合 | 亚洲区小说区激情区图片区 | 樱花草在线社区www | 中文字幕av日韩精品一区二区 | 999久久久国产精品消防器材 | 日本www一道久久久免费榴莲 | 欧美日韩一区二区三区自拍 | 亚洲中文字幕无码中字 | 亚洲精品国产a久久久久久 | 波多野结衣高清一区二区三区 | 97久久超碰中文字幕 | 55夜色66夜色国产精品视频 | 国产在线精品一区二区高清不卡 | 国产又爽又猛又粗的视频a片 | 国产两女互慰高潮视频在线观看 | 国产激情综合五月久久 | 永久免费精品精品永久-夜色 | 真人与拘做受免费视频一 | 成年美女黄网站色大免费视频 | 国产在线精品一区二区三区直播 | 黑人巨大精品欧美黑寡妇 | 在线看片无码永久免费视频 | 国产午夜亚洲精品不卡 | 亚洲国产av精品一区二区蜜芽 | 大乳丰满人妻中文字幕日本 | 日本护士xxxxhd少妇 | 国产精品无码一区二区桃花视频 | 夜夜夜高潮夜夜爽夜夜爰爰 | 欧美日本免费一区二区三区 | 青青青爽视频在线观看 | 中文字幕无码免费久久9一区9 | 熟妇人妻无码xxx视频 | 97夜夜澡人人爽人人喊中国片 | 2019午夜福利不卡片在线 | 精品亚洲成av人在线观看 | 高清国产亚洲精品自在久久 | 亚洲中文无码av永久不收费 | 国产综合久久久久鬼色 | 免费看男女做好爽好硬视频 | 国产人妻人伦精品1国产丝袜 | 国产亚洲tv在线观看 | 老头边吃奶边弄进去呻吟 | 亚洲呦女专区 | 天干天干啦夜天干天2017 | 久久精品国产亚洲精品 | 精品成在人线av无码免费看 | 扒开双腿吃奶呻吟做受视频 | 双乳奶水饱满少妇呻吟 | 久久亚洲精品中文字幕无男同 | 国产亚洲精品久久久闺蜜 | 四虎永久在线精品免费网址 | 欧美日韩一区二区综合 | 亚洲s色大片在线观看 | 在线播放亚洲第一字幕 | 午夜熟女插插xx免费视频 | 少妇性l交大片欧洲热妇乱xxx | 亚洲国产日韩a在线播放 | 国产av一区二区精品久久凹凸 | 噜噜噜亚洲色成人网站 | 天海翼激烈高潮到腰振不止 | 欧美刺激性大交 | 精品久久久久久人妻无码中文字幕 | 国产亚洲视频中文字幕97精品 | 精品厕所偷拍各类美女tp嘘嘘 | 毛片内射-百度 | 日产精品高潮呻吟av久久 | 久久精品中文闷骚内射 | 国产成人精品优优av | 成 人 免费观看网站 | 国产莉萝无码av在线播放 | 黑人巨大精品欧美黑寡妇 | 久久伊人色av天堂九九小黄鸭 | 久久亚洲国产成人精品性色 | 噜噜噜亚洲色成人网站 | 亚洲最大成人网站 | 日本熟妇乱子伦xxxx | 亚洲成av人在线观看网址 | 久久久久成人精品免费播放动漫 | 精品水蜜桃久久久久久久 | 日韩人妻少妇一区二区三区 | 麻豆国产97在线 | 欧洲 | 无码纯肉视频在线观看 | 中文字幕乱码人妻无码久久 | 成人亚洲精品久久久久软件 | 久久国产精品偷任你爽任你 | 日本熟妇乱子伦xxxx | 1000部啪啪未满十八勿入下载 | 中文字幕乱码中文乱码51精品 | 久久成人a毛片免费观看网站 | 欧美日韩一区二区三区自拍 | 亚洲无人区午夜福利码高清完整版 | 娇妻被黑人粗大高潮白浆 | 99精品无人区乱码1区2区3区 | 国产乱人伦av在线无码 | 在线天堂新版最新版在线8 | 99精品无人区乱码1区2区3区 | 中文字幕无码av波多野吉衣 | 欧美黑人巨大xxxxx | 国产色xx群视频射精 | 人妻aⅴ无码一区二区三区 | 中国女人内谢69xxxx | 人人妻人人澡人人爽精品欧美 | 1000部啪啪未满十八勿入下载 | 久久国产精品偷任你爽任你 | 国产成人精品一区二区在线小狼 | 久久久久久久人妻无码中文字幕爆 | 无码人妻黑人中文字幕 | 久久久久成人片免费观看蜜芽 | 无码人妻丰满熟妇区五十路百度 | 中国大陆精品视频xxxx | 99久久人妻精品免费二区 | 大胆欧美熟妇xx | 亚洲综合精品香蕉久久网 | 国产一区二区三区精品视频 | 无码国产乱人伦偷精品视频 | 国产精品国产自线拍免费软件 | 国产精品无码一区二区桃花视频 | 欧美国产日韩亚洲中文 | 国产精品亚洲一区二区三区喷水 | 无遮无挡爽爽免费视频 | 日本在线高清不卡免费播放 | 国产亚洲精品久久久久久国模美 | 中文字幕+乱码+中文字幕一区 | 青青青爽视频在线观看 | 亚洲精品一区二区三区四区五区 | 正在播放老肥熟妇露脸 | 欧美兽交xxxx×视频 | 人妻插b视频一区二区三区 | 精品欧洲av无码一区二区三区 | 亚洲欧洲日本无在线码 | 亚洲精品鲁一鲁一区二区三区 | 131美女爱做视频 | 67194成是人免费无码 | 97久久国产亚洲精品超碰热 | 国产福利视频一区二区 | 精品国偷自产在线视频 | 小sao货水好多真紧h无码视频 | 国产麻豆精品精东影业av网站 | 国产av无码专区亚洲a∨毛片 | 成人无码视频在线观看网站 | 日本在线高清不卡免费播放 | 无码国内精品人妻少妇 | 亚洲午夜久久久影院 | 日日碰狠狠躁久久躁蜜桃 | 蜜臀av无码人妻精品 | 一区二区三区高清视频一 | 国产免费观看黄av片 | 久久精品人妻少妇一区二区三区 | 内射爽无广熟女亚洲 | 东京无码熟妇人妻av在线网址 | 任你躁国产自任一区二区三区 | 国产精品亚洲а∨无码播放麻豆 | 成人精品天堂一区二区三区 | 中文久久乱码一区二区 | 无码人中文字幕 | 日本www一道久久久免费榴莲 | 性啪啪chinese东北女人 | 成人免费视频在线观看 | 国产性生大片免费观看性 | 国产成人无码a区在线观看视频app | 暴力强奷在线播放无码 | 377p欧洲日本亚洲大胆 | 夫妻免费无码v看片 | 国产办公室秘书无码精品99 | 欧美精品免费观看二区 | 亚洲男女内射在线播放 | 精品乱码久久久久久久 | 麻豆md0077饥渴少妇 | 亚洲一区二区三区国产精华液 | 人人妻人人澡人人爽人人精品浪潮 | 成人动漫在线观看 | 国产精品毛片一区二区 | 在线亚洲高清揄拍自拍一品区 | 超碰97人人做人人爱少妇 | 精品偷拍一区二区三区在线看 | 成人动漫在线观看 | 97人妻精品一区二区三区 | 97人妻精品一区二区三区 | 乌克兰少妇性做爰 | √天堂资源地址中文在线 | 爱做久久久久久 | 精品一区二区三区无码免费视频 | 中国大陆精品视频xxxx | 亚洲色在线无码国产精品不卡 | 中文字幕日韩精品一区二区三区 | 黑森林福利视频导航 | 日本精品高清一区二区 | 欧美三级a做爰在线观看 | 国产麻豆精品一区二区三区v视界 | 亚洲中文字幕在线无码一区二区 | 丝袜足控一区二区三区 | 日韩欧美中文字幕在线三区 | 色窝窝无码一区二区三区色欲 | 爽爽影院免费观看 | 少妇无码av无码专区在线观看 | 久久亚洲a片com人成 | 又黄又爽又色的视频 | 麻豆av传媒蜜桃天美传媒 | 国产欧美精品一区二区三区 | 全球成人中文在线 | 久久综合给合久久狠狠狠97色 | 国产内射爽爽大片视频社区在线 | 日韩精品久久久肉伦网站 | 欧美日韩在线亚洲综合国产人 | 美女黄网站人色视频免费国产 | 亚洲精品中文字幕久久久久 | 性欧美大战久久久久久久 | 东京无码熟妇人妻av在线网址 | 精品亚洲韩国一区二区三区 | 国产97人人超碰caoprom | 国产午夜无码精品免费看 | 久久久精品456亚洲影院 | 日产精品高潮呻吟av久久 | 在线观看国产一区二区三区 | 久久精品99久久香蕉国产色戒 | 一本久久a久久精品vr综合 | 日产精品99久久久久久 | 十八禁视频网站在线观看 | 精品国偷自产在线 | 日韩精品一区二区av在线 | 欧美大屁股xxxxhd黑色 | 国产av剧情md精品麻豆 | 美女黄网站人色视频免费国产 | 国产极品美女高潮无套在线观看 | 国产偷自视频区视频 | 欧美性生交活xxxxxdddd | 国产精品久久精品三级 | 欧美成人高清在线播放 | 国产在线aaa片一区二区99 | 欧美日韩亚洲国产精品 | 久久人人爽人人爽人人片av高清 | 欧美日韩在线亚洲综合国产人 | 亚洲熟悉妇女xxx妇女av | 一本精品99久久精品77 | 国产精品久久国产精品99 | 99re在线播放 | 国产日产欧产精品精品app | 精品久久久久香蕉网 | 六月丁香婷婷色狠狠久久 | 一本久道高清无码视频 | 激情综合激情五月俺也去 | 久久精品国产99久久6动漫 | 98国产精品综合一区二区三区 | 久久99精品久久久久久动态图 | 狠狠色欧美亚洲狠狠色www | 国产色视频一区二区三区 | 亚洲男人av香蕉爽爽爽爽 | 老头边吃奶边弄进去呻吟 | 人人爽人人澡人人人妻 | 国产精品亚洲а∨无码播放麻豆 | 欧洲精品码一区二区三区免费看 | 亚洲国产精品久久久久久 | 国产免费观看黄av片 | 国产午夜视频在线观看 | 久久无码中文字幕免费影院蜜桃 | 亚洲精品鲁一鲁一区二区三区 | 欧美性猛交xxxx富婆 | 精品久久久无码人妻字幂 | 激情五月综合色婷婷一区二区 | 内射爽无广熟女亚洲 | 97色伦图片97综合影院 | 欧美怡红院免费全部视频 | 亚洲精品一区二区三区在线 | 夜夜躁日日躁狠狠久久av | 欧美日本精品一区二区三区 | 国产亚洲人成在线播放 | 亚洲性无码av中文字幕 | 一本久久a久久精品亚洲 | 国产在线一区二区三区四区五区 | 麻豆av传媒蜜桃天美传媒 | 无码纯肉视频在线观看 | 亚洲精品一区二区三区在线 | 中文字幕无码av激情不卡 | 青青草原综合久久大伊人精品 | 少妇性l交大片欧洲热妇乱xxx | 国精产品一品二品国精品69xx | 亚洲综合无码久久精品综合 | 99久久99久久免费精品蜜桃 | 国产精品无码mv在线观看 | 精品国产福利一区二区 | 在线a亚洲视频播放在线观看 | 天堂亚洲2017在线观看 | 国内精品九九久久久精品 | 天天躁夜夜躁狠狠是什么心态 | 久久综合激激的五月天 | 啦啦啦www在线观看免费视频 | 久久午夜夜伦鲁鲁片无码免费 | 天天拍夜夜添久久精品 | 亚洲精品一区二区三区大桥未久 | a片免费视频在线观看 | 少妇邻居内射在线 | 激情五月综合色婷婷一区二区 | 四虎永久在线精品免费网址 | 久久国语露脸国产精品电影 | 中文字幕中文有码在线 | 1000部夫妻午夜免费 | 久久亚洲国产成人精品性色 | 精品国产av色一区二区深夜久久 | 亚洲男人av天堂午夜在 | 日欧一片内射va在线影院 | 丰满诱人的人妻3 | aⅴ在线视频男人的天堂 | 中文字幕无码免费久久9一区9 | 午夜成人1000部免费视频 | 又大又硬又黄的免费视频 | 国产成人av免费观看 | 亚洲国产av美女网站 | 久久国语露脸国产精品电影 | 久久精品国产一区二区三区肥胖 | 色综合久久中文娱乐网 | 欧美日韩一区二区综合 | 欧美熟妇另类久久久久久不卡 | 国产人成高清在线视频99最全资源 | 狂野欧美激情性xxxx | 噜噜噜亚洲色成人网站 | 鲁鲁鲁爽爽爽在线视频观看 | 牲欲强的熟妇农村老妇女 | 中文字幕乱码中文乱码51精品 | 成人毛片一区二区 | 六月丁香婷婷色狠狠久久 | 国产精品第一国产精品 | 扒开双腿吃奶呻吟做受视频 | 亚洲精品无码人妻无码 | 又黄又爽又色的视频 | 国产高清不卡无码视频 | 国产精品亚洲专区无码不卡 | 狠狠亚洲超碰狼人久久 | 又大又黄又粗又爽的免费视频 | 狠狠色噜噜狠狠狠7777奇米 | 国产乱人偷精品人妻a片 | 国产精品美女久久久久av爽李琼 | 97人妻精品一区二区三区 | 国产精品久久久午夜夜伦鲁鲁 | 国产成人无码一二三区视频 | 成人免费无码大片a毛片 | 日本一区二区三区免费播放 | 无码帝国www无码专区色综合 | 色老头在线一区二区三区 | 女人被男人躁得好爽免费视频 | 国产一区二区不卡老阿姨 | 国产人妻人伦精品1国产丝袜 | 日日天日日夜日日摸 | 成人影院yy111111在线观看 | 99久久人妻精品免费二区 | 久久久久久av无码免费看大片 | 少妇被黑人到高潮喷出白浆 | 亚洲国产午夜精品理论片 | 99久久人妻精品免费一区 | 欧美放荡的少妇 | 99久久久无码国产aaa精品 | 日本护士xxxxhd少妇 | 毛片内射-百度 | 2020久久香蕉国产线看观看 | 岛国片人妻三上悠亚 | 欧美午夜特黄aaaaaa片 | 欧美三级a做爰在线观看 | 大色综合色综合网站 | 无码帝国www无码专区色综合 | 九九久久精品国产免费看小说 | 熟女俱乐部五十路六十路av | 久久久久国色av免费观看性色 | 亚洲日韩中文字幕在线播放 | 国产精品无码永久免费888 | 成人性做爰aaa片免费看不忠 | 伊在人天堂亚洲香蕉精品区 | 日本大乳高潮视频在线观看 | 久久亚洲精品中文字幕无男同 | 偷窥村妇洗澡毛毛多 | 性生交片免费无码看人 | 67194成是人免费无码 | 日日碰狠狠丁香久燥 | 中文字幕乱码人妻二区三区 | 精品一二三区久久aaa片 | 四虎影视成人永久免费观看视频 | 在线а√天堂中文官网 | 在线观看国产一区二区三区 | 久久综合给久久狠狠97色 | 亚洲中文字幕久久无码 | 一本精品99久久精品77 | 四虎国产精品免费久久 | 性色av无码免费一区二区三区 | 在线观看国产午夜福利片 | 自拍偷自拍亚洲精品被多人伦好爽 | 亚欧洲精品在线视频免费观看 | 无码毛片视频一区二区本码 | 国内揄拍国内精品少妇国语 | 欧洲熟妇精品视频 | 国产高清av在线播放 | 成人性做爰aaa片免费看不忠 | 一本久久a久久精品vr综合 | 国产人妻精品午夜福利免费 | 久久www免费人成人片 | 国产三级精品三级男人的天堂 | 澳门永久av免费网站 | 精品无码国产自产拍在线观看蜜 | 人人妻人人澡人人爽精品欧美 | 好屌草这里只有精品 | 精品成在人线av无码免费看 | 波多野结衣aⅴ在线 | 女人和拘做爰正片视频 | 久久亚洲国产成人精品性色 | 欧美国产日韩亚洲中文 | 国产成人无码区免费内射一片色欲 | a片免费视频在线观看 | 色综合天天综合狠狠爱 | 东京热无码av男人的天堂 | 亚洲s码欧洲m码国产av | 又大又硬又爽免费视频 | 在教室伦流澡到高潮hnp视频 | 又大又硬又黄的免费视频 | 图片小说视频一区二区 | 久久午夜无码鲁丝片 | 男女性色大片免费网站 | 女人高潮内射99精品 | 久久99精品国产麻豆 | 麻花豆传媒剧国产免费mv在线 | 玩弄少妇高潮ⅹxxxyw | 日本xxxx色视频在线观看免费 | 人人妻人人藻人人爽欧美一区 | 精品欧洲av无码一区二区三区 | 国产精品自产拍在线观看 | 又紧又大又爽精品一区二区 | 国产精品亚洲专区无码不卡 | 久久久国产精品无码免费专区 | 久久精品99久久香蕉国产色戒 | 国产在线aaa片一区二区99 | 国产精品久久久久久无码 | 欧美日韩视频无码一区二区三 | 国产精品美女久久久网av | 日韩精品成人一区二区三区 | 桃花色综合影院 | 久久无码中文字幕免费影院蜜桃 | 日韩精品无码免费一区二区三区 | 亚洲精品成人福利网站 | 欧美一区二区三区视频在线观看 | 老头边吃奶边弄进去呻吟 | 伊人久久大香线蕉午夜 | 大肉大捧一进一出视频出来呀 | 骚片av蜜桃精品一区 | 亚洲欧美精品伊人久久 | 久久国产自偷自偷免费一区调 | 午夜性刺激在线视频免费 | 中文字幕av无码一区二区三区电影 | 人妻体内射精一区二区三四 | 亚洲熟妇色xxxxx欧美老妇y | 给我免费的视频在线观看 | 扒开双腿吃奶呻吟做受视频 | 亚洲午夜福利在线观看 | 精品无人区无码乱码毛片国产 | 一个人看的视频www在线 | 午夜福利电影 | 天天拍夜夜添久久精品大 | 国产成人午夜福利在线播放 | 久激情内射婷内射蜜桃人妖 | 亚洲精品一区二区三区在线观看 | 国产sm调教视频在线观看 | 精品偷拍一区二区三区在线看 | 综合人妻久久一区二区精品 | 好男人www社区 | 51国偷自产一区二区三区 | 欧美黑人巨大xxxxx | 天天爽夜夜爽夜夜爽 | 18无码粉嫩小泬无套在线观看 | 精品国产aⅴ无码一区二区 | av无码不卡在线观看免费 | 狠狠色噜噜狠狠狠狠7777米奇 | 成人精品视频一区二区 | 少妇性l交大片欧洲热妇乱xxx | 国产国产精品人在线视 | 亚洲精品久久久久久久久久久 | 国产亚洲tv在线观看 | 天天综合网天天综合色 | 久久久婷婷五月亚洲97号色 | 欧美老人巨大xxxx做受 | 中文字幕无码视频专区 | 午夜不卡av免费 一本久久a久久精品vr综合 | 国产熟妇另类久久久久 | 天堂а√在线地址中文在线 | 成人欧美一区二区三区黑人 | 久久久久久久久蜜桃 | 黄网在线观看免费网站 | 国产va免费精品观看 | 色综合天天综合狠狠爱 | 熟女体下毛毛黑森林 | 性色av无码免费一区二区三区 | 久激情内射婷内射蜜桃人妖 | aa片在线观看视频在线播放 | 国产精品无码mv在线观看 | 日日躁夜夜躁狠狠躁 | 亚洲精品国产精品乱码视色 | 一个人免费观看的www视频 | 四虎4hu永久免费 | 妺妺窝人体色www在线小说 | 激情内射亚州一区二区三区爱妻 | 白嫩日本少妇做爰 | 亚洲中文字幕无码一久久区 | 久久亚洲日韩精品一区二区三区 | 亚洲国精产品一二二线 | 亚洲狠狠色丁香婷婷综合 | 亚洲熟妇色xxxxx欧美老妇y | 国产9 9在线 | 中文 | 毛片内射-百度 | 亚洲男人av天堂午夜在 | 亚洲成色在线综合网站 | 国产精品久久久久久亚洲毛片 | 国产人妻久久精品二区三区老狼 | 水蜜桃亚洲一二三四在线 | 亚洲欧洲日本无在线码 | 大乳丰满人妻中文字幕日本 | 性开放的女人aaa片 | 亚洲国产午夜精品理论片 | 无码人中文字幕 | 亚洲 欧美 激情 小说 另类 | 亚洲理论电影在线观看 | 玩弄少妇高潮ⅹxxxyw | 久久久婷婷五月亚洲97号色 | 久久国产精品萌白酱免费 | 久久综合色之久久综合 | 亚洲毛片av日韩av无码 | a在线亚洲男人的天堂 | 欧美35页视频在线观看 | 欧洲精品码一区二区三区免费看 | 亚洲成熟女人毛毛耸耸多 | 免费乱码人妻系列无码专区 | 好男人www社区 | 99久久精品国产一区二区蜜芽 | 99久久久国产精品无码免费 | 成人av无码一区二区三区 | 无码av免费一区二区三区试看 | 亚洲人成网站免费播放 | 日本xxxx色视频在线观看免费 | 亚洲国产午夜精品理论片 | 日韩无码专区 | 日本va欧美va欧美va精品 | 国产在线精品一区二区三区直播 | 爱做久久久久久 | 噜噜噜亚洲色成人网站 | 中文字幕精品av一区二区五区 | 国产精品久久久久久亚洲毛片 | 人妻少妇精品久久 | 国产精品理论片在线观看 | 国产极品视觉盛宴 | 伊人色综合久久天天小片 | 国产99久久精品一区二区 | 国内少妇偷人精品视频免费 | yw尤物av无码国产在线观看 | 国产手机在线αⅴ片无码观看 | 久久国产自偷自偷免费一区调 | 亚洲人成网站在线播放942 | 少妇激情av一区二区 | 成人一区二区免费视频 | 精品少妇爆乳无码av无码专区 | 国产99久久精品一区二区 | 成人无码精品1区2区3区免费看 | 女人被男人爽到呻吟的视频 | 少妇厨房愉情理9仑片视频 | 强奷人妻日本中文字幕 | 国产一区二区三区四区五区加勒比 | 成 人 免费观看网站 | 国产成人一区二区三区在线观看 | 久久国产自偷自偷免费一区调 | 国产精品国产自线拍免费软件 | 中文字幕乱码人妻二区三区 | 日本护士xxxxhd少妇 | 国产精品a成v人在线播放 | 国内揄拍国内精品少妇国语 | 国产精品无码久久av | 国产麻豆精品精东影业av网站 | 国产精品高潮呻吟av久久4虎 | 国产人妻大战黑人第1集 | 国产人妖乱国产精品人妖 | 东京热男人av天堂 | 婷婷五月综合激情中文字幕 | 亚洲精品综合一区二区三区在线 | 国产sm调教视频在线观看 | 国产特级毛片aaaaaaa高清 | 亚洲天堂2017无码中文 | 性史性农村dvd毛片 | 久久久久免费精品国产 | 亚洲成av人影院在线观看 | 亚洲の无码国产の无码步美 | 乱码午夜-极国产极内射 | 日本饥渴人妻欲求不满 | 亚洲国产精品美女久久久久 | 漂亮人妻洗澡被公强 日日躁 | 亚洲成av人在线观看网址 | 亚洲熟悉妇女xxx妇女av | 国内综合精品午夜久久资源 | 久久久婷婷五月亚洲97号色 | 精品夜夜澡人妻无码av蜜桃 | 久久久久成人精品免费播放动漫 | 亚洲最大成人网站 | 女人被男人躁得好爽免费视频 | 无码人妻丰满熟妇区毛片18 | 夜夜夜高潮夜夜爽夜夜爰爰 | 领导边摸边吃奶边做爽在线观看 | 国产精品无码久久av | 一个人看的视频www在线 | 草草网站影院白丝内射 | 欧美亚洲国产一区二区三区 | 人人妻人人澡人人爽欧美一区九九 | 色综合久久中文娱乐网 | 亚洲精品久久久久avwww潮水 | 1000部夫妻午夜免费 | 强辱丰满人妻hd中文字幕 | 国产一精品一av一免费 | 久久久久久久久888 | 成熟女人特级毛片www免费 | 亚洲国产精品无码一区二区三区 | 欧美国产日产一区二区 | 疯狂三人交性欧美 | 欧美国产日产一区二区 | 伊人久久大香线蕉av一区二区 | 国内综合精品午夜久久资源 | 人妻aⅴ无码一区二区三区 | 香港三级日本三级妇三级 | 一本大道伊人av久久综合 | 无遮挡国产高潮视频免费观看 | 在线观看国产一区二区三区 | 亚洲狠狠色丁香婷婷综合 | 女人被爽到呻吟gif动态图视看 | 久久久国产精品无码免费专区 | 国产成人精品久久亚洲高清不卡 | 欧美日韩人成综合在线播放 | 欧美亚洲日韩国产人成在线播放 | 日本大香伊一区二区三区 | 理论片87福利理论电影 | 国产精品内射视频免费 | av无码不卡在线观看免费 | 精品无码一区二区三区爱欲 | 99视频精品全部免费免费观看 | 18精品久久久无码午夜福利 | 成人亚洲精品久久久久 | 亚洲欧洲中文日韩av乱码 | 亚洲欧美日韩成人高清在线一区 | 在线精品国产一区二区三区 | 无码毛片视频一区二区本码 | 欧美日韩在线亚洲综合国产人 | 精品国产一区二区三区四区在线看 | aⅴ在线视频男人的天堂 | 久久国产精品偷任你爽任你 | 国产av一区二区三区最新精品 | 精品国产国产综合精品 | 精品人妻中文字幕有码在线 | 亚洲第一无码av无码专区 | 国产精品亚洲а∨无码播放麻豆 | 中文字幕av日韩精品一区二区 | 六月丁香婷婷色狠狠久久 | 国产激情精品一区二区三区 | 性做久久久久久久免费看 | 亚洲日韩中文字幕在线播放 | 欧美自拍另类欧美综合图片区 | 亚洲中文字幕久久无码 | 午夜精品久久久内射近拍高清 | 最新国产麻豆aⅴ精品无码 | 亚洲日韩中文字幕在线播放 | 国产精品二区一区二区aⅴ污介绍 | 蜜桃视频韩日免费播放 | 久久无码专区国产精品s | 日韩人妻无码一区二区三区久久99 | 亚洲国产一区二区三区在线观看 | 亚洲成熟女人毛毛耸耸多 | 又大又黄又粗又爽的免费视频 | 色欲综合久久中文字幕网 | 亚洲人成网站色7799 | 亚洲精品国产品国语在线观看 | 夜夜高潮次次欢爽av女 | 久久99精品国产麻豆蜜芽 | 精品久久8x国产免费观看 | 久9re热视频这里只有精品 | 97无码免费人妻超级碰碰夜夜 | 又粗又大又硬又长又爽 | 国色天香社区在线视频 | 88国产精品欧美一区二区三区 | 色五月丁香五月综合五月 | 亚洲 高清 成人 动漫 | 巨爆乳无码视频在线观看 | 精品无码一区二区三区爱欲 | 亚洲国产精品一区二区美利坚 | 欧美日韩色另类综合 | 久久午夜无码鲁丝片午夜精品 | 51国偷自产一区二区三区 | 欧美三级不卡在线观看 | 77777熟女视频在线观看 а天堂中文在线官网 | 色欲av亚洲一区无码少妇 | 精品 日韩 国产 欧美 视频 | 国产精品美女久久久久av爽李琼 | 日本欧美一区二区三区乱码 | 性色欲网站人妻丰满中文久久不卡 | 熟妇激情内射com | 国产乱人无码伦av在线a | 一本久久a久久精品亚洲 | 国产va免费精品观看 | 亚洲精品久久久久avwww潮水 | 久久亚洲国产成人精品性色 | 亚洲一区二区三区含羞草 | 精品一区二区不卡无码av | 午夜熟女插插xx免费视频 | 黄网在线观看免费网站 | 性色av无码免费一区二区三区 | 性啪啪chinese东北女人 | 免费看少妇作爱视频 | 少妇高潮喷潮久久久影院 | 久久99精品久久久久久 | 中文字幕日韩精品一区二区三区 | 久久久www成人免费毛片 | 国产电影无码午夜在线播放 | 久久久成人毛片无码 | 亚洲综合色区中文字幕 | 一本色道久久综合狠狠躁 | 97精品国产97久久久久久免费 | 在线 国产 欧美 亚洲 天堂 | 国产69精品久久久久app下载 | 大色综合色综合网站 | 好爽又高潮了毛片免费下载 | 亚洲国产精品成人久久蜜臀 | 奇米影视7777久久精品 | 老熟妇仑乱视频一区二区 | 日本一卡2卡3卡四卡精品网站 | 亚洲理论电影在线观看 | 帮老师解开蕾丝奶罩吸乳网站 | 蜜桃视频插满18在线观看 | 久久久精品成人免费观看 | 日韩欧美群交p片內射中文 | 色婷婷av一区二区三区之红樱桃 | 暴力强奷在线播放无码 | 国内少妇偷人精品视频免费 | 十八禁视频网站在线观看 | 两性色午夜免费视频 | 午夜肉伦伦影院 | 在线观看免费人成视频 | 少妇激情av一区二区 | 国产免费无码一区二区视频 | 国产97色在线 | 免 | 一本久久a久久精品亚洲 | 精品aⅴ一区二区三区 | 国产精品久久国产三级国 | 国产综合在线观看 | 99久久人妻精品免费一区 | 亚洲综合另类小说色区 | 性色欲网站人妻丰满中文久久不卡 | 奇米综合四色77777久久 东京无码熟妇人妻av在线网址 | 久久综合给合久久狠狠狠97色 | 久久www免费人成人片 | ass日本丰满熟妇pics | 日韩 欧美 动漫 国产 制服 | 国产色在线 | 国产 | 日本大乳高潮视频在线观看 | 无套内谢老熟女 | 狠狠色噜噜狠狠狠7777奇米 | 国产亚洲视频中文字幕97精品 | 中文字幕日产无线码一区 | 人妻中文无码久热丝袜 | 亚洲欧美日韩成人高清在线一区 | 亚洲综合伊人久久大杳蕉 | 国产亚洲精品久久久久久久久动漫 | 在线观看国产午夜福利片 | 性生交大片免费看女人按摩摩 | 天天av天天av天天透 | 中文字幕人妻无码一夲道 | 久久午夜无码鲁丝片午夜精品 | 国产亚洲精品精品国产亚洲综合 | 日本大乳高潮视频在线观看 | 人人妻人人澡人人爽欧美一区 | 国产激情艳情在线看视频 | a国产一区二区免费入口 | 亚洲午夜无码久久 | 日本丰满熟妇videos | 亚洲乱码国产乱码精品精 | 清纯唯美经典一区二区 | 青青青爽视频在线观看 | 国产超碰人人爽人人做人人添 | 亚洲小说春色综合另类 | 日本欧美一区二区三区乱码 | 蜜臀av在线播放 久久综合激激的五月天 | 给我免费的视频在线观看 | 人人妻人人澡人人爽人人精品 | 丰满人妻精品国产99aⅴ | 人妻有码中文字幕在线 | 亚洲第一网站男人都懂 | 东京热无码av男人的天堂 | 久久久精品人妻久久影视 | 亚洲欧美精品aaaaaa片 | 亚洲色无码一区二区三区 | 国产av一区二区精品久久凹凸 | 2019nv天堂香蕉在线观看 | 日韩视频 中文字幕 视频一区 | 黄网在线观看免费网站 | 成人三级无码视频在线观看 | 欧洲精品码一区二区三区免费看 | 激情爆乳一区二区三区 | 欧美日本免费一区二区三区 | 国产97在线 | 亚洲 | 精品aⅴ一区二区三区 | 领导边摸边吃奶边做爽在线观看 | 精品乱子伦一区二区三区 | 国产精品99久久精品爆乳 | 免费网站看v片在线18禁无码 | 狠狠色噜噜狠狠狠7777奇米 | 国精品人妻无码一区二区三区蜜柚 | 国产在线精品一区二区三区直播 | 真人与拘做受免费视频 | 国产精品久免费的黄网站 | 亚洲色大成网站www国产 | 未满小14洗澡无码视频网站 | 久久久久久久人妻无码中文字幕爆 | 色五月五月丁香亚洲综合网 | 真人与拘做受免费视频 | 妺妺窝人体色www在线小说 | av人摸人人人澡人人超碰下载 | 大屁股大乳丰满人妻 | 亚洲中文字幕无码一久久区 | 亚无码乱人伦一区二区 | 成年美女黄网站色大免费视频 | 国产超级va在线观看视频 | 人妻体内射精一区二区三四 | 国产av无码专区亚洲a∨毛片 | 亚洲人亚洲人成电影网站色 | 97精品国产97久久久久久免费 | 黑人粗大猛烈进出高潮视频 | 人人澡人摸人人添 | 久久精品女人天堂av免费观看 | 又大又黄又粗又爽的免费视频 | 特黄特色大片免费播放器图片 | 性生交大片免费看l | 国产精品永久免费视频 | 丰满妇女强制高潮18xxxx | 亚洲精品久久久久久一区二区 | 成人三级无码视频在线观看 | 东京热一精品无码av | 欧美日韩人成综合在线播放 | 国色天香社区在线视频 | 亚洲性无码av中文字幕 | 久久午夜无码鲁丝片午夜精品 | 99精品无人区乱码1区2区3区 | 2020久久香蕉国产线看观看 | 婷婷五月综合缴情在线视频 | 精品国产一区av天美传媒 | 色综合久久88色综合天天 | 网友自拍区视频精品 | 亚洲色欲色欲欲www在线 | 强开小婷嫩苞又嫩又紧视频 | 2020久久香蕉国产线看观看 | 亚洲成av人综合在线观看 | 一个人看的视频www在线 | 久久久久久国产精品无码下载 | 日韩亚洲欧美精品综合 | 狠狠综合久久久久综合网 | 国产精品亚洲а∨无码播放麻豆 | 狂野欧美性猛交免费视频 | 西西人体www44rt大胆高清 | 中文字幕乱码亚洲无线三区 | 色婷婷久久一区二区三区麻豆 | 欧美野外疯狂做受xxxx高潮 | 狠狠色噜噜狠狠狠7777奇米 | 在线观看欧美一区二区三区 | 久久久久久亚洲精品a片成人 | 最近免费中文字幕中文高清百度 | 亚洲一区二区三区在线观看网站 | 日本护士毛茸茸高潮 | 乱码av麻豆丝袜熟女系列 | 欧美老妇与禽交 | 精品久久8x国产免费观看 | 99er热精品视频 | 色老头在线一区二区三区 | 亚洲精品一区二区三区四区五区 | 波多野结衣高清一区二区三区 | 久久天天躁狠狠躁夜夜免费观看 | 色妞www精品免费视频 | 中文字幕 亚洲精品 第1页 | 欧美 日韩 人妻 高清 中文 | 久久久久99精品成人片 | 亚洲娇小与黑人巨大交 | 亚洲精品中文字幕乱码 | 一个人看的www免费视频在线观看 | 久久99热只有频精品8 | 影音先锋中文字幕无码 | 精品亚洲韩国一区二区三区 | 精品国偷自产在线视频 | 精品无码国产一区二区三区av | 亚洲aⅴ无码成人网站国产app | 四十如虎的丰满熟妇啪啪 | 欧洲极品少妇 | ass日本丰满熟妇pics | 精品一二三区久久aaa片 | 无遮挡国产高潮视频免费观看 | 国产人妻精品午夜福利免费 | 中文字幕无码av波多野吉衣 | 鲁鲁鲁爽爽爽在线视频观看 | 少妇高潮喷潮久久久影院 | 少妇性荡欲午夜性开放视频剧场 | 色五月丁香五月综合五月 | 亚洲日本一区二区三区在线 | 国产精品沙发午睡系列 | 成人av无码一区二区三区 | 色偷偷人人澡人人爽人人模 | 中文字幕无码av波多野吉衣 | 久久精品人人做人人综合试看 | 清纯唯美经典一区二区 | 人人妻人人藻人人爽欧美一区 | 国产激情精品一区二区三区 | 亲嘴扒胸摸屁股激烈网站 | 内射老妇bbwx0c0ck | www国产精品内射老师 | 国产日产欧产精品精品app | 国产成人精品无码播放 | 55夜色66夜色国产精品视频 | 国产农村妇女aaaaa视频 撕开奶罩揉吮奶头视频 | 精品久久久无码人妻字幂 | 97资源共享在线视频 | 特黄特色大片免费播放器图片 | 正在播放老肥熟妇露脸 | 国产成人无码av在线影院 | 欧美日韩人成综合在线播放 | 97久久精品无码一区二区 | 成人无码视频在线观看网站 | 国产成人人人97超碰超爽8 | 日日躁夜夜躁狠狠躁 | 国产农村妇女高潮大叫 | 国内揄拍国内精品人妻 | 国产特级毛片aaaaaaa高清 | 蜜臀av在线播放 久久综合激激的五月天 | 欧美freesex黑人又粗又大 | 熟女俱乐部五十路六十路av | 美女毛片一区二区三区四区 | 国产成人无码一二三区视频 | 欧美一区二区三区视频在线观看 | 激情内射日本一区二区三区 | 国产精品久久久久无码av色戒 | 人人妻人人澡人人爽欧美精品 | 2020久久香蕉国产线看观看 | 在线 国产 欧美 亚洲 天堂 | 在线观看国产一区二区三区 | 国产精品二区一区二区aⅴ污介绍 | 久久99精品久久久久婷婷 | 午夜精品一区二区三区的区别 | 亚洲综合在线一区二区三区 | 国产人妻人伦精品1国产丝袜 | 国产亚洲视频中文字幕97精品 | 久久99精品久久久久婷婷 | 亚洲成色在线综合网站 | 男人的天堂2018无码 | 亚洲成a人片在线观看日本 | 免费观看又污又黄的网站 | 久久久久亚洲精品男人的天堂 | 中文字幕av伊人av无码av | 中国女人内谢69xxxx | 丰满人妻一区二区三区免费视频 | 一本色道婷婷久久欧美 | 无码精品国产va在线观看dvd | 国产精品第一区揄拍无码 | 无码精品国产va在线观看dvd | 丰满岳乱妇在线观看中字无码 | 国内少妇偷人精品视频 | 熟女少妇人妻中文字幕 | 色狠狠av一区二区三区 | 性史性农村dvd毛片 | 欧美人与禽zoz0性伦交 | 国产精品毛片一区二区 | 精品aⅴ一区二区三区 | 日本乱人伦片中文三区 | 青春草在线视频免费观看 | 狠狠色丁香久久婷婷综合五月 | 日本大香伊一区二区三区 | 一二三四社区在线中文视频 | 波多野结衣一区二区三区av免费 | 日本一区二区三区免费播放 | 欧美人与物videos另类 | 成人欧美一区二区三区黑人免费 | 精品一区二区三区波多野结衣 | 色综合久久久无码中文字幕 | 乱人伦中文视频在线观看 | 偷窥日本少妇撒尿chinese | 欧洲欧美人成视频在线 | 人人澡人摸人人添 | 天天躁日日躁狠狠躁免费麻豆 | 妺妺窝人体色www婷婷 | 欧美性生交xxxxx久久久 | 欧美三级a做爰在线观看 | 国产一区二区三区影院 | 扒开双腿疯狂进出爽爽爽视频 | 美女黄网站人色视频免费国产 | 久久午夜无码鲁丝片秋霞 | 欧美性生交xxxxx久久久 | 国产极品美女高潮无套在线观看 | 色婷婷综合激情综在线播放 | 日韩av无码一区二区三区不卡 | 乱人伦人妻中文字幕无码 | 国产莉萝无码av在线播放 | 亚洲熟妇色xxxxx欧美老妇 | 精品久久久久久亚洲精品 | 日韩亚洲欧美中文高清在线 | 国产又爽又猛又粗的视频a片 | 久久综合网欧美色妞网 | 中文字幕无线码免费人妻 | 久久精品国产一区二区三区肥胖 | 偷窥日本少妇撒尿chinese | 国产av人人夜夜澡人人爽麻豆 | 亚洲一区二区三区四区 | 国产精品高潮呻吟av久久4虎 | 国产亲子乱弄免费视频 | 亚洲色偷偷偷综合网 | 国产av无码专区亚洲awww | 日韩少妇内射免费播放 | 亚洲精品中文字幕乱码 | 国产午夜亚洲精品不卡 | 兔费看少妇性l交大片免费 | 国产无av码在线观看 | 亚洲中文字幕乱码av波多ji | 大肉大捧一进一出好爽视频 | 国产内射爽爽大片视频社区在线 | 久久亚洲中文字幕精品一区 | 国产人妻久久精品二区三区老狼 | 国产亚洲人成a在线v网站 | 婷婷五月综合缴情在线视频 | 鲁一鲁av2019在线 | 99re在线播放 | 一本色道久久综合狠狠躁 | 成 人影片 免费观看 | 免费人成在线观看网站 | 亚洲乱码日产精品bd | 一本大道伊人av久久综合 | 国产精品久久久久久无码 | 亚洲va欧美va天堂v国产综合 | 国产精品亚洲lv粉色 | 欧美老人巨大xxxx做受 | 亚洲国产精品久久人人爱 | 国产av一区二区三区最新精品 | 国产人妻人伦精品 | aⅴ在线视频男人的天堂 | 一本色道久久综合亚洲精品不卡 | 天天拍夜夜添久久精品大 | 精品人妻av区 | 亚洲色大成网站www国产 | 漂亮人妻洗澡被公强 日日躁 | 午夜精品久久久久久久 | 国产免费无码一区二区视频 | 欧美丰满熟妇xxxx性ppx人交 | 又湿又紧又大又爽a视频国产 | 强辱丰满人妻hd中文字幕 | 成年女人永久免费看片 | 男女爱爱好爽视频免费看 | 国产一区二区三区日韩精品 | 中文字幕无码免费久久99 |