欧美日韩亚-欧美日韩亚州在线-欧美日韩亚洲-欧美日韩亚洲第一区-欧美日韩亚洲二区在线-欧美日韩亚洲高清精品

金喜正规买球

理解MySQL——架構與概念

原創|其它|編輯:郝浩|2009-10-19 10:26:32.000|閱讀 590 次

概述:寫在前面:最早接觸的MySQL是在三年前,那時候MySQL還是4.x版本,很多功能都不支持,比如,存儲過程,視圖,觸發器,更別說分布式事務等復雜特性了。

# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>

寫在前面:最早接觸的MySQL是在三年前,那時候MySQL還是4.x版本,很多功能都不支持,比如,存儲過程,視圖,觸發器,更別說分布式事務等復雜特性了。但從5.0(2005年10月)開始,MySQL漸漸步入企業級數據庫的行列了;復制、集群、分區、分布式事務,這些企業級的特性,使得現在的MySQL,完全可以應用于企業級應用環境(很多互聯網公司都用其作為數據庫服務器,盡管節約成本是一個因素,但是沒有強大功能作后盾,則是不可想象的)。雖然,MySQL還有很多不足,比如,復制、分區的支持都十分有限、查詢優化仍需要改進,但是MySQL已經是一個足夠好的DBMS了,更何況它是opensource的。這段時間沒有事,出于好奇,略微的研究了一下MySQL,積累了一些資料,欲總結出來。這些資料打算分為兩部分,上部主要討論MySQL的優化,其中主要參考了《MySQL Manual》和《High Performance MySQL》,如果有時間,以后在下部分析一下MySQL的源碼。如果你是MySQL高手,希望你不吝賜教;如果你是新手,希望對你有用。

 

第一章、MySQL架構與概念
1、MySQL的邏輯架構

 最上面不是MySQL特有的,所有基于網絡的C/S的網絡應用程序都應該包括連接處理、認證、安全管理等。
中間層是MySQL的核心,包括查詢解析、分析、優化和緩存等。同時它還提供跨存儲引擎的功能,包括存儲過程、觸發器和視圖等。
最下面是存儲引擎,它負責存取數據。服務器通過storage engine API可以和各種存儲引擎進行交互。

1.1、查詢優化和執行(Optimization and Execution)

MySQL將用戶的查詢語句進行解析,并創建一個內部的數據結構——分析樹,然后進行各種優化,例如重寫查詢、選擇讀取表的順序,以及使用哪個索引等。查詢優化器不關心一個表所使用的存儲引擎,但是存儲引擎會影響服務器如何優化查詢。優化器通過存儲引擎獲取一些參數、某個操作的執行代價、以及統計信息等。在解析查詢之前,服務器會先訪問查詢緩存(query cache)——它存儲SELECT語句以及相應的查詢結果集。如果某個查詢結果已經位于緩存中,服務器就不會再對查詢進行解析、優化、以及執行。它僅僅將緩存中的結果返回給用戶即可,這將大大提高系統的性能。

 1.2、并發控制
MySQL提供兩個級別的并發控制:服務器級(the server level)和存儲引擎級(the storage engine level)。加鎖是實現并發控制的基本方法,MySQL中鎖的粒度:
(1)    表級鎖:MySQL獨立于存儲引擎提供表鎖,例如,對于ALTER TABLE語句,服務器提供表鎖(table-level lock)。
(2)    行級鎖:InnoDB和Falcon存儲引擎提供行級鎖,此外,BDB支持頁級鎖。InnoDB的并發控制機制,下節詳細討論。
另外,值得一提的是,MySQL的一些存儲引擎(如InnoDB、BDB)除了使用封鎖機制外,還同時結合MVCC機制,即多版本兩階段封鎖協議(Multiversion two-phrase locking protocal),來實現事務的并發控制,從而使得只讀事務不用等待鎖,提高了事務的并發性。
注:并發控制是DBMS的核心技術之一(實際上,對于OS也一樣),它對系統性能有著至關重要的影響,以后再詳細討論。

1.3、事務處理
MySQL中,InnoDB和BDB都支持事務處理。這里主要討論InnoDB的事務處理(關于BDB的事務處理,也十分復雜,以前曾較為詳細看過其源碼,以后有機會再討論)。
1.3.1、事務的ACID特性
事務是由一組SQL語句組成的邏輯處理單元,事務具有以下4個屬性,通常簡稱為事務的ACID屬性(Jim Gray在《事務處理:概念與技術》中對事務進行了詳盡的討論)。
(1)原子性(Atomicity):事務是一個原子操作單元,其對數據的修改,要么全都執行,要么全都不執行。
(2)一致性(Consistent):在事務開始和完成時,數據都必須保持一致狀態。這意味著所有相關的數據規則都必須應用于事務的修改,以保持數據的完整性;事務結束時,所有的內部數據結構(如B樹索引或雙向鏈表)也都必須是正確的。
(3)隔離性(Isolation):數據庫系統提供一定的隔離機制,保證事務在不受外部并發操作影響的“獨立”環境執行。這意味著事務處理過程中的中間狀態對外部是不可見的,反之亦然。
(4)持久性(Durable):事務完成之后,它對于數據的修改是永久性的,即使出現系統故障也能夠保持。
1.3.2、事務處理帶來的相關問題
由于事務的并發執行,帶來以下一些著名的問題:
(1)更新丟失(Lost Update):當兩個或多個事務選擇同一行,然后基于最初選定的值更新該行時,由于每個事務都不知道其他事務的存在,就會發生丟失更新問題--最后的更新覆蓋了由其他事務所做的更新。
(2)臟讀(Dirty Reads):一個事務正在對一條記錄做修改,在這個事務完成并提交前,這條記錄的數據就處于不一致狀態;這時,另一個事務也來讀取同一條記錄,如果不加控制,第二個事務讀取了這些“臟”數據,并據此做進一步的處理,就會產生未提交的數據依賴關系。這種現象被形象地叫做"臟讀"。
(3)不可重復讀(Non-Repeatable Reads):一個事務在讀取某些數據后的某個時間,再次讀取以前讀過的數據,卻發現其讀出的數據已經發生了改變、或某些記錄已經被刪除了!這種現象就叫做“不可重復讀”。
(4)幻讀(Phantom Reads):一個事務按相同的查詢條件重新讀取以前檢索過的數據,卻發現其他事務插入了滿足其查詢條件的新數據,這種現象就稱為“幻讀”。
1.3.3、事務的隔離性
SQL2標準定義了四個隔離級別。定義語句如下:
SET TRANSACTION ISOLATION LEVEL
[READ UNCOMMITTED |
READ COMMITTED  |
REPEATABLE READ  |
SERIALIZABLE ]
這與Jim Gray所提出的隔離級別有點差異。其中READ UNCOMMITTED即Jim的10(瀏覽);READ COMMITTED即20,游標穩定性;REPEATABLE READ為2.99990隔離(沒有幻像保護);SERIALIZABLE隔離級別為30,完全隔離。SQL2標準默認為完全隔離(30)。各個級別存在問題如下:

隔離級

臟讀

不可重復讀

幻象讀

讀未提交

(Read uncommitted)

可能

可能

可能

讀提交

(Read committed)

不可能

可能

可能

可重復讀

(Repeatable read)

不可能

不可能

可能

可串行化

(Serializable)

不可能

不可能

不可能

各個具體數據庫并不一定完全實現了上述4個隔離級別,例如,Oracle只提供READ COMMITTED和Serializable兩個標準隔離級別,另外還提供自己定義的Read only隔離級別;SQL Server除支持上述ISO/ANSI SQL92定義的4個隔離級別外,還支持一個叫做“快照”的隔離級別,但嚴格來說它是一個用MVCC實現的Serializable隔離級別。MySQL 支持全部4個隔離級別,其默認級別為Repeatable read,但在具體實現時,有一些特點,比如在一些隔離級別下是采用MVCC一致性讀。國產數據庫DM也支持所有級別,其默認級別為READ COMMITTED。
 

1.3.4、InnoDB的鎖模型
InnoDB的行級鎖有兩種類型:
(1)共享鎖(shared lock,S):允許一個事務去讀一行,阻止其他事務獲得相同數據集的排他鎖。
(2)排它鎖(exclusive lock,X):允許獲得排它鎖的事務更新數據,阻止其他事務取得相同數據集的共享讀鎖和排他寫鎖。
此外,InnoDB支持多粒度加鎖(multiple granularity locking),從而允許對記錄和表同時加鎖。為此,InnoDB引入意向鎖(intention locks),意向鎖是針對表的:
(1)意向共享鎖(IS):事務打算給數據行加行共享鎖,事務在給一個數據行加共享鎖前必須先取得該表的IS鎖。
(2)意向排他鎖(IX):事務打算給數據行加行排他鎖,事務在給一個數據行加排他鎖前必須先取得該表的IX鎖。
例如,SELECT ... LOCK IN SHARE MODE加IS鎖,SELECT ... FOR UPDATE加IX鎖,意向鎖的規則如下:
(1)事務在對表T中的記錄獲取S鎖前,先要獲取表T的IS鎖或者更強的鎖;
(2)事務在獲取表T中記錄的X鎖前,先要獲取表T的IX鎖。
InnoDB的鎖相容性矩陣:

 如果一個事務請求的鎖模式與當前的鎖兼容,InnoDB就將請求的鎖授予該事務;反之,如果兩者不兼容,該事務就要等待鎖釋放。意向鎖只會阻塞其它事務對表的請求,例如,LOCK TABLES …WRITE,意向鎖的主要目的是表明該事務將要或者正在對表中的記錄加鎖。使用封鎖機制來進行并發控制,一個比較重要的問題就是死鎖。
來看一個死鎖的例子:

1-1

Session 1

Session 2

mysql> CREATE TABLE t (i INT) ENGINE = InnoDB;

Query OK, 0 rows affected (0.22 sec)

 

mysql> INSERT INTO t (i) VALUES(1);

Query OK, 1 row affected (0.08 sec)

 

mysql> START TRANSACTION;

Query OK, 0 rows affected (0.00 sec)

 

mysql> SELECT * FROM t WHERE i = 1 LOCK IN SHARE MODE;

+------+

| i    |

+------+

|    1 |

+------+

1 row in set (0.01 sec)

 

mysql>

 

 

mysql> START TRANSACTION;

Query OK, 0 rows affected (0.00 sec)

 

mysql> DELETE FROM t WHERE i = 1;

等待

mysql> DELETE FROM t WHERE i = 1;

等待

 

 

ERROR 1213 (40001): Deadlock found when trying to get lock; try restarting transaction

Query OK, 1 row affected (0.00 sec)

 

 

 1.3.5、一致性非阻塞讀
一致性讀是MySQL的重要特點之一,InnoDB通過MVCC機制表示數據庫某一時刻的查詢快照,查詢可以看該時刻之前提交的事務所做的改變,但是不能看到該時刻之后或者未提交事務所做的改變。但是,查詢可以看到同一事務中之前語句所做的改變,例如:

1-2

Session 1

Session 2

mysql> select * from t;

Empty set (0.00 sec)

 

mysql> INSERT INTO t (i) VALUES(1);

Query OK, 1 row affected (0.00 sec)

 

mysql> select * from t;

+------+

| i    |

+------+

|    1 |

+------+

1 row in set (0.00 sec)

 

mysql> set autocommit = 0;

Query OK, 0 rows affected (0.01 sec)

 

mysql> update t set i=3;

Query OK, 1 row affected (0.00 sec)

Rows matched: 1 Changed: 1 Warnings: 0

mysql> select * from t;

+------+

| i    |

+------+

|    3 |

+------+

1 row in set (0.00 sec)

 

 

mysql> set autocommit = 0;

Query OK, 0 rows affected (0.00 sec)

 

mysql> select * from t;

+------+

| i    |

+------+

|    1 |

+------+

1 row in set (0.00 sec)

mysql> commit;

Query OK, 0 rows affected (0.06 sec)

 

 

mysql> select * from t;

+------+

| i    |

+------+

|    1 |

+------+

1 row in set (0.00 sec)

 

mysql> commit;

Query OK, 0 rows affected (0.00 sec)

 

mysql> select * from t;

+------+

| i    |

+------+

|    3 |

+------+

1 row in set (0.00 sec)

 

 如果事務的隔離級別為REPEATABLE READ(默認),同一個事務中的所有一致性讀都是讀的事務的第一次讀操作創建的快照。你可以提交當前事務,然后在新的查詢中即可看到最新的快照,如上所示。
如果事務的隔離級別為READ COMMITTED,一致性讀只是對事務內部的讀操作和它自己的快照而言的,結果如下:

1-3

Session 1

Session 2

mysql> SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED;

Query OK, 0 rows affected (0.01 sec)

 

mysql> set autocommit = 0;

Query OK, 0 rows affected (0.00 sec)

 

mysql> select * from t;

+------+

| i    |

+------+

|    3 |

+------+

1 row in set (0.00 sec)

 

 

mysql> SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED;

Query OK, 0 rows affected (0.01 sec)

 

mysql> set autocommit = 0;

Query OK, 0 rows affected (0.00 sec)

 

mysql> select * from t;

+------+

| i    |

+------+

|    3 |

+------+

1 row in set (0.00 sec)

mysql> update t set i=5;

Query OK, 1 row affected (0.00 sec)

Rows matched: 1 Changed: 1 Warnings: 0

 

 

mysql> select * from t;

+------+

| i    |

+------+

|    3 |

+------+

1 row in set (0.00 sec)

mysql> commit;

Query OK, 0 rows affected (0.06 sec)

 

 

mysql> select * from t;

+------+

| i    |

+------+

|    5 |

+------+

1 row in set (0.00 sec)

 

 注意,session 2發生了不可重復讀。
當InnoDB在READ COMMITTED 和REPEATABLE READ隔離級別下處理SELECT語句時,一致性讀是默認的模式。一致性讀不會對表加任何鎖,所以,其它連接可以同時改變表。
假設事務處于REPEATABLE READ級別,當你正在進行一致性讀時,InnoDB根據查詢看到的數據給你一個時間點。如果其它的事務在該時間點之后刪除一行,且提交事務,你不會看到行已經被刪除,插入和更新操作一樣。但是,InnoDB與其它DBMS的不同是,在REPEATABLE READ隔離級別下并不會造成幻像。
一致性讀不與DROP TABLE 或者 ALTER TABLE一起工作。
在nodb_locks_unsafe_for_binlog變量被設置或者事務的隔離級別不是SERIALIZABLE的情況下,InnoDB對于沒有指定FOR UPDATE 或 LOCK IN SHARE MODE的INSERT INTO ... SELECT, UPDATE ... (SELECT), 和CREATE TABLE ... SELECT語句使用一致性讀,在這種情況下,查詢語句不會對表中的元組加鎖。否則,InnoDB將使用鎖。

1.3.6、SELECT ... FOR UPDATE和SELECT ... LOCK IN SHARE MODE的加鎖讀(locking read)
在一些場合,一致性讀并不是很方便,此時,可以用加鎖讀。InnoDB支持兩種加鎖讀:
(1)    SELECT ... LOCK IN SHARE MODE:對讀取的元組加S鎖。
(2)    SELECT ... FOR UPDATE:在掃描索引記錄的過程中,會阻塞其它連接的SELECT ...LOCK IN SHARE MODE和一定事務隔離級別下的讀操作。
InnoDB使用兩階段封鎖協議,事務直到提交或回滾時才會釋放所有的鎖,這都是系統自動執行的。此外,MySQL支持LOCK TABLES和UNLOCK TABLES,但這些都是在服務器層實現的,而不是在存儲引擎。它們有用處,但是不能取代存儲引擎完成事務處理,如果你需要事務功能,請使用事務型存儲引擎。
來考慮locking read的應用,假設你要在表child插入一個新的元組,并保證child中的記錄在表parent有一條父記錄。如果你用一致性讀來讀parent表,確實可以將要插入的child row的parent row,但是可以安全的插入嗎?不,因為在你讀parent表時,其它連接可能已經刪除該記錄。(一致性讀是針對事務內而言的,對于數據庫的狀態,它應該叫做“不一致性讀”)
此時,就可以使用SELECT LOCK IN SHARE MODE,它會對讀取的元組加S鎖,從而防止其它連接刪除或更新元組。另外,如果你想在查詢的同時,進行更新操作,可以使用SELECT ... FOR UPDATE,它讀取最新的數據,然后對讀到的元組加X鎖。此時,使用SELECT ... LOCK IN SHARE MODE不是一個好主意,因為此時如果有兩個事務進行這樣的操作,就會造成死鎖。
注:SELECT ... FOR UPDATE僅在自動提交關閉(即手動提交)時才會對元組加鎖,而在自動提交時,符合條件的元組不會被加鎖。

1.3.7、記錄鎖(record lok)、間隙鎖(gap lock)和后碼鎖(next-key lock)
InnoDB有以下幾種行級鎖:
(1)記錄鎖:對索引記錄(index records)加鎖,InnoDB行級鎖是通過給索引的索引項加鎖來實現的,而不是對記錄實例本身加鎖。如果表沒有定義索引,InnoDB創建一個隱藏的聚簇索引,然后用它來實現記錄加鎖(關于索引與加鎖之間的關系的詳細介紹請看下一章)。
(2)間隙鎖:對索引記錄之間的區間,或者第一個索引記錄之前的區間和最后一個索引之后的區間加鎖。
(3)后碼鎖:對索引記錄加記錄鎖,且對索引記錄之前的區間加鎖。
默認情況下,InnoDB的事務工作在REPEATABLE READ的隔離級別,而且系統變量innodb_locks_unsafe_for_binlog為關閉狀態。此時,InnoDB使用next-key鎖進行查找和索引掃描,從而達到防止“幻像”的目的。
Next-key鎖是記錄鎖和間隙的結合體。當InnoDB查找或掃描表的索引時,對它遇到的索引記錄加S鎖或者X鎖,所以,行級鎖(row-level lock)實際上就是索引記錄鎖(index-record lock);此外,它還對索引記錄之前的區間加鎖。也就是說,next-key鎖是索引記錄鎖,外加索引記錄之前的區間的間隙鎖。如果一個連接對索引中的記錄R持有S或X鎖,其它的連接不能按照索引的順序在R之前的區間插入一個索引記錄。
假設索引包含以下值:10, 11,13和20,則索引的next-key鎖會覆蓋以下區間(“(”表示不包含,“[”表示包含):
(negative infinity, 10]
(10, 11]
(11, 13]
(13, 20]
(20, positive infinity)
對于最后一個區間,next-key鎖將鎖住索引最大值以上的區間,上界虛記錄(“supremum” pseudo-record)的值比索引中的任何值都大,其實,上界不是一個真實的索引記錄,所以,next-lock將對索引的最大值之后的區間加鎖。

間隙鎖對查詢唯一索引中的唯一值是沒有必要的,例如,id列有唯一索引,則下面的查詢僅對id=100的元組加索引記錄鎖(index-record lock),而不管其它連接是否在之前的區間插入元組。
SELECT * FROM child WHERE id = 100;
如果id沒有索引,或者非唯一索引,則語句會鎖住之前的空間。

例1-4
Session 1
Session 2
mysql> create unique index i_index on t(i);
Query OK, 0 rows affected (0.19 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql> select * from t;
+------+
| i    |
+------+
|    4 |
|   10 |
+------+
2 rows in set (0.00 sec)
 
 
 
mysql> set autocommit=0;
Query OK, 0 rows affected (0.00 sec)
mysql> select i from t where i =10 lock in share mode;
+------+
| i    |
+------+
|   10 |
+------+
1 row in set (0.00 sec)
mysql> insert into t(i) values(9);
Query OK, 1 row affected (0.03 sec)
 
 
mysql> select * from t;
+------+
| i    |
+------+
|    4 |
|    9 |
|   10 |
+------+
3 rows in set (0.00 sec)


 上例中,產生了幻像問題。如果將唯一查詢變成范圍查詢,結果如下(接上例的索引):

 

1-5

Session 1

Session 2

mysql> select * from t;

+------+

| i    |

+------+

|    4 |

|    9 |

|   10 |

+------+

3 rows in set (0.00 sec)

 

 

mysql> set autocommit=0;

Query OK, 0 rows affected (0.00 sec)

mysql> select i from t where i>4 lock in share mode;

+------+

| i    |

+------+

|    9 |

|   10 |

+------+

2 rows in set (0.00 sec)

mysql> insert into t(i) values(1);

ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction

mysql> insert into t(i) values(8);

ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction

 

 可以看到,session 2 的next-key使得在i=4之前的區間和之后的插入都被阻塞。
另外,如果刪除索引i_index,則結果如下:

1-6

Session 1

Session 2

mysql> drop index i_index on t;

Query OK, 3 rows affected (0.25 sec)

Records: 3 Duplicates: 0 Warnings: 0

mysql> select * from t;

+------+

| i    |

+------+

|    4 |

|   10 |

|    9 |

+------+

3 rows in set (0.00 sec)

 

 

mysql> set autocommit=0;

Query OK, 0 rows affected (0.00 sec)

 

mysql> select i from t lock in share mode;

+------+

| i    |

+------+

|    4 |

|   10 |

|    9 |

+------+

3 rows in set (0.00 sec)

mysql> insert into t(i) values(8);

等待。。。

 

 

 另外,針對插入(INSERT)操作,只要多個事務不會在同一索引區間的同一個位置插入記錄,它們就不用互相等待,這種情況可以稱為插入意向間隙鎖(insertion intention gap lock)。例如,索引記錄的值為4和7,兩個獨立的事務分別插入5和6,僅管它們都持有4—7之間的間隙鎖,但是它們不會相互阻塞。這可以提高事務的并發性。

 

1-7

Session 1

Session 2

mysql> select * from t;

+------+

| i    |

+------+

|    4 |

|   10 |

|    9 |

|    8 |

+------+

4 rows in set (0.00 sec)

 

mysql> create unique index i_index on t(i);

Query OK, 4 rows affected (0.34 sec)

Records: 4 Duplicates: 0 Warnings: 0

 

mysql> set autocommit=0;

Query OK, 0 rows affected (0.00 sec)

 

 

mysql> set autocommit=0;

Query OK, 0 rows affected (0.00 sec)

mysql> insert into t(i) values(5);

Query OK, 1 row affected (0.00 sec)

 

 

mysql> insert into t(i) values(5);

ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction

mysql> insert into t(i) values(6);

Query OK, 1 row affected (0.00 sec)

 間隙鎖是可以顯示關閉的,如果你將事務的隔離級別設為READ COMMITTED,或者打開innodb_locks_unsafe_for_binlog系統變量,間隙鎖就會關閉。在這種情況下,查找或掃描索引僅會進行外鍵約束檢查和重復鍵值檢查。
此外,READ COMMITTED隔離級別和關閉nodb_locks_unsafe_for_binlog還有另外一個負作用:MySQL會釋放掉不匹配Where條件的記錄鎖。例如,對于UPDATE語句,InnoDB只能進行“半一致性(semi_consistent)讀”,所以,它會返回最新提交事務所做改變,從而產生不可重復讀和幻像問題。

1.3.8、使用next-key lock防止幻像問題
例1-4展示了一個幻像問題。使用next-key鎖的select語句可以解決幻像問題,但例1-4的之所以會產生總是在于唯一索引,使得select語句沒有使用gap lock,而只使用了index-record lock。

1.4、存儲引擎
插件式存儲引擎是MySQL最重要特性之一,也是最不同于其它DBMS的地方。MySQL支持很多存儲引擎,以適用于不同的應用需求,常用的包括MyISAM、InnoDB、BDB、MEMORY、MERGE、NDB Cluster等。其中,BDB和NDB Cluster提供事務支持。
MySQL默認的存儲引擎為MyISAM,當然,創建表的時候可以指定其它的存儲引擎,你可以在同一個數據庫中對不同的表使用不同的存儲引擎(這是非常強大而獨特的特性)。可以通過SHOW TABLE STATUS命令查詢表所使用的存儲引擎,例如,查看mysql數據庫的user表:

 

mysql> SHOW TABLE STATUS LIKE 'user' \G

*************************** 1. row ***************************

 ;          Name: user

         Engine: MyISAM

        Version: 10

     Row_format: Dynamic

           Rows: 4

 Avg_row_length: 61

    Data_length: 244

Max_data_length: 281474976710655

   Index_length: 2048

      Data_free: 0

 Auto_increment: NULL

    Create_time: 2009-06-16 21:50:34

    Update_time: 2009-09-30 14:59:08

     Check_time: NULL

      Collation: utf8_bin

       Checksum: NULL

 Create_options:

        Comment: Users and global privileges

1 row in set (0.00 sec)

 Name:表的名稱;
Engine:表使用的存儲引擎;
Row_format:記錄的格式。MyISAM支持三種不同的存儲格式:靜態(固定長度)表(默認格式)、動態表及壓縮表。靜態表的字段都是固定長度的,例如CHAR和INTEGER;動態表的字段可以是變長的,例如,VARCHAR或者BLOB。
Rows:表中記錄的數量。
Avg_row_length:記錄的平均長度(字節數);
Data_length:表中數據的全部字節數;
Max_data_length:表中數據最大的字節數;
Index_length:索引消耗的磁盤空間;
Data_free:對于MyISAM表,表示已經分配但還沒有使用的空間;該空間包含以前刪除的記錄留下的空間,可以被INSERT操作重用。
Auto_increment:下一個自增的值。
Check_time:上次使用CHECK TABLE或myisamchk檢查表的時間。

1.4.1、MyISAM
1.4.1.1、存儲
MySQL的默認存儲引擎,性能與功能的折中,包括全文索引(full-text index)、數據壓縮,支持空間(GIS)數據,但是,不支持事務和行級鎖。一般來說,MyISAM更適用于大量查詢操作。如果你有大量的插入、刪除操作,你應該選擇InnoDB。
每個表包含3個文件:
(1).frm:表定義文件,對于其它存儲引擎也一樣。
(2).MYD文件:數據文件。
(3).MYI文件:索引文件。
可以在創建表時通過DATA DIRECTORY和INDEX DIRECTORY為數據文件和索引文件指定路徑,它們可以位于不同目錄。另外,MyISAM的存儲格式是跨平臺的,你可以將數據文件和索引文件從Intel平臺拷貝到PPC或者SPARC平臺。
5.0中,MyISAM的變長記錄表默認處理256TB數據,使用6字節的指針來指向數據記錄;而之前的版本使用默認的4字節指針,所以只能處理4GB數據。所有的版本都可以將指針增加到8字節指針,如果你想改變MyISAM表的指針的大小,可以通過設置MAX_ROWS和AVG_ROW_LENGTH來實現:
CREATE TABLE mytable (
   a    INTEGER  NOT NULL PRIMARY KEY,
   b    CHAR(18) NOT NULL
) MAX_ROWS = 1000000000 AVG_ROW_LENGTH = 32;
上面的例子中,MySQL將至少可以存儲32GB的數據??梢圆榭匆幌卤淼男畔ⅲ?/p>

mysql> SHOW TABLE STATUS LIKE 'mytable' \G

*************************** 1. row ***************************

           Name: mytable

         Engine: MyISAM

     Row_format: Fixed

       ;    Rows: 0

 Avg_row_length: 0

    Data_length: 0

Max_data_length: 98784247807

   Index_length: 1024

      Data_free: 0

 Auto_increment: NULL

    Create_time: 2002-02-24 17:36:57

    Update_time: 2002-02-24 17:36:57

     Check_time: NULL

 ;Create_options: max_rows=1000000000 avg_row_length=32

        Comment:

1 row in set (0.05 sec)

可以看到,Create_options列出了創建時的選項,而且該表的最大的數據量為91GB。你可以用ALTER TABLE來改變指針的大小,但是那會導致表和索引的重建,這會花費很長的時間。

1.4.1.2、MyISAM的特性
(1)鎖與并發性:MyISAM只有表級鎖,不支持行級鎖。所以不適合于大量的寫操作,但是它支持并發插入(concurrent inserts),這是一個非常重要且有用的特性。
(2)自動修復:MySQL支持自動檢查和修復MyISAM表。
(3)手動修復:你可以使用CHECK TABLE檢查表的狀態,并用REPAIR TABLE修復表。
(4)索引:你可以為BLOB和TEXT的前500個字符創建索引。而且,MyISAM還支持全文索引,但僅限于CHAR、VARCHAR、和TEXT列。
(5)延遲鍵寫(Delayed key writes):如果創建MyISAM表時指定DELAY_KEY_WRITE,MySQL在查詢結束時,不會將改變的索引數據寫入磁盤,而將修改保存在key buffer中。只有要改變緩存或者關閉表時,才會把索引數據刷入磁盤。

1.4.2、InnoDB
InnoDB是一個高性能的事務存儲引擎,此外,BDB也支持事務處理(關于BDB,以前曾較為詳細的閱讀過其源碼,以后有時間再討論),它有以下一些特點:
1.4.2.1、表空間
InnoDB存儲表和索引有兩種方式:
(1)共享表空間存儲:這種方式下,表的定義位于.frm文件中,數據和索引保存在innodb_data_home_dir和innodb_data_file_path指定的表空間中。
(2)多表空間存儲:表的定義仍位于.frm文件,但是,每個InnoDB表和它的索引在它自己的文件(.idb)中,每個表有它自己的表空間。
對那些想把特定表格移到分離物理磁盤的用戶,或者那些希望快速恢復單個表的備份而無須打斷其余InnoDB表的使用的用戶,使用多表空間會是有益的。你可以往my.cnf的[mysqld]節添加下面行來允許多表空間:
[mysqld]
innodb_file_per_table
重啟服務器之后,InnoDB存儲每個新創建的表到表格所屬于的數據庫目錄下它自己的文件tbl_name.ibd里。這類似于MyISAM存儲引擎所做的,但MyISAM 把表分成數據文件tbl_name.MYD和索引文件tbl_name.MYI。對于InnoDB,數據和所以被一起存到.ibd文件。tbl_name.frm文件照舊依然被創建。
如果你從my.cnf文件刪除innodb_file_per_table行,并重啟服務器,InnoDB在共享的表空間文件里再次創建表。
innodb_file_per_table只影響表的創建。如果你用這個選項啟動服務器,新表被用.ibd文件來創建,但是你仍舊能訪問在共享表空間里的表。如果你刪掉這個選項,新表在共享表空間內創建,但你仍舊可以訪問任何用多表空間創建的表。
InnoDB總是需要共享表空間,.ibd文件對InnoDB不足以去運行,共享表空間包含熟悉的ibdata文件,InnoDB把內部數據詞典和undo日志放在這個文件中。

1.4.2.2、外鍵約束
MySQL中,支持外鍵的存儲引擎只有InnoDB,在創建外鍵時,要求被參照表必須有對應的索引,參照表在創建外鍵時也會自動創建對應的索引。

1.4.2.3、MVCC與后碼鎖(next-key locking)
InnoDB將MVCC機制與next-key lock結合起來,實現事務的各個隔離級別,這是非常用意思的。在nodb_locks_unsafe_for_binlog變量被設置或者事務的隔離級別不是SERIALIZABLE的情況下,InnoDB對于沒有指定FOR UPDATE 或 LOCK IN SHARE MODE的INSERT INTO ... SELECT, UPDATE ... (SELECT), 和CREATE TABLE ... SELECT語句使用一致性讀(參照前面),在這種情況下,查詢語句不會對表中的元組加鎖。否則,InnoDB將使用鎖。


標簽:

本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn

文章轉載自:博客園

為你推薦

  • 推薦視頻
  • 推薦活動
  • 推薦產品
  • 推薦文章
  • 慧都慧問
掃碼咨詢


添加微信 立即咨詢

電話咨詢

客服熱線
023-68661681

TOP
大陆精大陆国产国语精品 | 亚洲国产97视频在线 | 午夜男女爽爽爽免费播放 | 国内精品自产拍在线电影 | 最近中文字幕在线中文高清版 | 国产精品高清在线欧美 | 国产在线观看国语对白 | 自在现偷| 欧美一区精品视频一区二区 | 一区②区三区电影网 | 国产在线脚交免费网站脚丫 | 啦啦啦免费高清视频 | 国产中文字幕视频在线播放 | 九一影院 | 国产中文99视频在线观看 | 成人精品一区二区户外勾搭野 | 精品视频在线 | 国产偷∨国产偷∨精品视频 | 国产在线成本人视频摸腿 | 亚洲人成欧| 亚洲大片精品免费在线 | 免费观看一区二区三区 | 国产综合亚洲欧美日韩一区二区 | 日本高清在 | 中文字幕资源网在线观看免费 | 免费视频播放a | 国产欧美日韩资源在线观看 | 亚洲制服国产一区二区三区 | 欧美日韩一区二区三区自拍 | 激情在线观看视频 | 国产欧美日韩在线一区二区不卡 | 亚洲欧洲日产国产最新 | 亚洲欧美日韩一区二区在线观看 | 欧美精品人爱a欧美精品 | 国产中文成人精品小说 | 日本高清在线观看www色 | 国产性夜夜春夜夜 | 国产私拍福利精 | 亚洲一区高清 | 欧美精品偷自拍另类在线观看 | 国产乱码高清区二区三区在线 | 三级经典国产精品 | 日本黄页网站免费大全 | 亚洲午夜成人精品电影在线观看 | 国产精品天干天干在线观看 | 国产91爱剪辑直播在线观看 | 国产xx| 欧美性色黄大片www喷水 | 亚洲a级午夜线上看不卡 | 亚洲和欧洲一码二码区别在 | 国产乱国产乱老熟300部视频 | 日本高清中文字幕免费一区二区 | 青草青草久热精品视频在线观看 | 亚洲v欧美v国产v在线观看 | 国产播放隔着超 | 欧美视频在线 | 亚洲精品午夜不卡在线播放 | 日韩伦理电影中文在线 | 国产欧美一区二区高清在线 | 老妇喷水一区二 | 欧美黑人又大又粗xxxⅹ | 人人揉人人捏人人添 | 欧美性色xo在 | 欧美激情一区二 | 欧美色中文字幕第一页 | 2025最新国产在线看 | 精品成人 | 男人扒开女人腿桶到爽免费 | 国产亚洲久一区二区 | 国产又黄又大又粗又硬又猛樱花 | 国产农村妇女特 | 2025电视剧手机免费在线观看 | 疯狂欧美牲乱大交777 | 99久9久免费国产动漫 | 国产高清亚洲 | 亚洲国产一区在线观看 | 欧美日本一区二区三区道 | 99re6在线视频精品免费下载 | 国产精品偷窥 | 国产传媒一区 | 国产一区二区不卡 | 91牛牛国产在线无弹窗 | 亚洲国产一区二区中文字幕 | 最新热门高清电影 | 亚洲中文字幕a | 成人精品一区二区户外勾搭野 | 日韩a∨精品一区二区三区 国产亚洲视频中文字幕97精品 | 中文字幕日韩一区 | 国产日韩欧美激情视频不卡 | 欧美精品三区 | 三区在线观看 | 国产一区二区三区免费看视频 | 十九岁在线观看免费完整版 | 中文在线资源官网在线 | 日韩国产一区二区三区地区 | 欧美xxxx | 日韩精品专区在线影院重 | 想要大鸡 | 热门电视剧追剧网站 | 日韩欧美亚洲国产永久在线观看 | 国产精品网站在线观看免费传媒 | 日本免费一区视频 | 中文字幕亚洲一区二区三区四 | 国产欧美日韩精品在线观看 | 日本x片成年免费观看视频 性开放的欧美大片黑白配 欧美激合综图片区小说 | 综合另类小说欧美另类图片 | 成人自拍一区 | 综合五月激情二区视频 | 给我免费观看片在线观看中国 | 亚洲欧美日韩一区在线观看 | 免费电影 | 国产盗拍精品视频 | 国产亚洲香蕉片在线观看 | 精品一区二区6 | 激情欧美视频 | 色偷偷2025免费视频观看 | 亚洲欧洲日韩一区二区日本 | 日产一线 | 忘忧草影院在线www韩国日本 | 国内日本精品视频在线观看 | 年轻的母亲4韩剧免费中文版 | 亚洲中文字幕精品有码在线 | 午夜dj免费视频在线观看 | 五月天激情 | 傲盟下载 | 日本人浓密bbw | 欧美精品成人3d在 | 国产盗摄电影区9876色 | 亚洲国产一区二区三区a毛 国产美女淫秽一区二区三区 | 在线鲁鲁视频免费观看 | 青青青在线播 | 亚洲欧洲中文字 | 日本韩国偷拍视频对白不卡高清精 | 亚洲第一区欧美国产不卡综合 | 国产精产国品一二三在观看 | 夜鲁夜鲁很鲁在线视频视频 | 国产一区精品视频 | 国产精品国产高清 | 1024手机看片国产日韩欧美 | 国产精品成人h片在线 | 中日韩高清无专码 | 欧美日韩第一区二区三区 | 亚洲欧洲日韩国产aa色大片 | 在线观看欧美影 | 亚洲国产精品自在拍在线播放 | 欧美三级韩国三级日本三斤 | 1卡2卡三卡4卡免费日韩乱码 | 中文字幕手机在线看片不卡 | 99这里只有精 | 成人性生交大片在线观看 | 欧美日韩亚洲国产一 | 一级视频在线观看免费 | 国内精品自在自线视频在线观 | 国产日产中文在线观看 | 最快无弹窗小说阅读网 | 亚洲国产精品自在拍在线播放 | 91电影网 | 国产手机在线国内精品软件的特点 | 日韩电影在线观看视频 | 国产亚洲人成网站在线观看不卡 | 日本欧美一区二区三区在线观看 | 国产视频网站在线 | 美女是黄的网址视频在线 | 最新中文字幕第一页 | 欧美日韩中文字幕在线看 | 男女午夜视频 | 轻点灬大ji巴大粗长了视频 | 日久精品不卡一区 | 欧美制服丝袜国产日韩一区 | 色与欲影视天天看综合网 | 国产精品综合色区在线 | 国产在线不卡一区二区三区 | 国产偷人视频免费538 | 亚洲清纯自偷自拍另类专区 | 精品国产一区二区三区亚洲 | 性生大片免费观看性 | 日韩欧美亚洲一区二区综合 | 日韩高清国产一区在线 | 综合亚洲精品 | 亚洲成色综 | 国内高清久 | 91高清视频| 欧美激情区二区一区三 | 中文字幕乱码亚洲中文在线 | 国产放荡对白 | 区四区在线 | 欧美精品一区二区三区在线播放 | 人人天天夜夜曰曰狠狠狠肉感 | 日本成年人 | 最新亚洲精品国自 | 老子影院午夜伦不卡亚洲 | 青青青草国产线观 | 亚洲精品免播放器在线观看 | 最新好看的影视大全在线观看 | 日本中文字幕在线观看全 | 高清免费大 | 免费观看最新电影和热门影视剧 | 91秦先生在线视频 | 狠狠做深爱 | 国产欧美亚洲专区在线 | 国精产品一区一区三区有 | 男人猛躁进女人成人免 | 国产精品福利自产拍在线观看 | 国产偷v国产偷v | 日本三级韩国三级欧美三级 | 免费国产在线 | 日本爽爽爽爽爽爽在线观看免 | 蜜桃一区二区三区 | 91看片淫黄大片欧美看国产片 | 妇女偷汉对白视频 | 日本特大a级猛片在线观看 国精产品999国精产 | 国产福利一区二区三区在线视频 | 国产最新精品精品视频 | 国产在线观看精品一区二区 | 视频一区在线免费观看 | 女教师巨大乳孔中文字幕 | 又刺激又爽又黄的视频在线观看 | 自拍视频| 日韩高清亚洲日韩精品一 | 国产又大又粗又长免费视频 | 亚洲高清免费观看 | 91视频专区 | 国产嘿嘿嘿视频在线观看 | 朝鲜女人大白屁股ass | 偷自拍亚洲视频在线观看99 | 欧美高清免费一 | 成年男人午夜片免费观看 | 三级网站在线免费观看 | 国产精品蜜桃 | 亚洲品质自拍视频 | 精品国产一区二区三区香蕉欧美 | 亚洲第一精品电影网 | 亚洲91视频 | 亚洲欧洲国产日产综合综合 | 成在线人免费视频 | 99爱在线精品视频免费观看9 | 亚洲欧美国产制服另类 | 亚洲欧洲日韩国产aa色大片 | 成人午夜福利片 | 亚洲不卡一卡2 | 国产乱子伦高清对白 | 天天综合网天天综合 | 三级特黄60分钟在线观看 | 欧美一级特黄aa大片 | 在线日韩 | 国产欧美精品一区二 | 亚洲性影院在线看 | 国产婷婷综合在线精品尤物 | 成人一级电影视频 | 忍不住的亲子中文字幕在线 | 国产一区自拍欧美 | 日本一区二区三区在线播放 | 91社区国产在线播放 | 国产精品亚洲欧韩在线 | 一区二区三区免费播放 | 亚洲欧美中文精品激情在线 | www网站羞羞视 | xxxx国产| 老司机午夜精 | 女被男啪到哭的视频网站 | 经典三级欧美 | 国产欧美精品一区二区三区 | 香蕉有码在线视频发布 | 国产又大又黑又粗免费视频 | 国产女人精品视 | 日本免费在线观看视频 | 91啪在线视频 | 欧美人一级淫片a免费播放 国产精品永久免费自在线观 | 亚洲男人的天堂在线播放 | 亚洲国产丝袜一区二区 | 日韩欧美一区二区三区精品 | 九九精品视频国产 | 成人国产精品免费视频 | 7788电影网| 欧洲美熟女乱又伦免费视频 | 亚洲欧美日韩中文字幕一区 | 日本中文字幕在线视频一区 | 中文字幕一区二区三区四区 | 午夜成人影院在线观看不卡 | 在线观看三 | 45分钟无遮掩免费完整版高清 | 新91网页版 | 中文在线天堂网www 日本高清不卡中文字幕网 anquye | 国产午夜福利一区在线观看 | 在线精品91青草国产在线观看 | 日本野花视频在线观看 | 国产伦精品一区二 | 精品欧美小视频在线观看 | 勃起又长又黑又粗毛又多 | 国内欧美日韩在线 | 欧美a√在线免费观看 | 色综合婷婷在线观看66 | 尤物免费人成在线观看播放a | 欧美国产日韩一区二区 | 日韩中文字幕第二页 | 色老板久| 成人精品午夜在线观看 | 67pao国产成视频永久免费 | 欧亚成人 | 亚洲国产品综合 | 91秒拍国产福利在线观看 | 性欧美一区二区三区在线观看 | 两性色午夜视 | 电影在线观看 | 极品美女在线观看免费直播 | 三级网站视频 | 国产又色 | 亚洲欧美一区二区三区久本道 | 91成人免费观看 | 欧美a级情欲片在线观看免费网站 | 欧美不卡一卡二 | 2025最新热门电视排行榜 | 成年免费视频播放网站推荐 | 娇妻被交换粗又大又硬彩 | 最近中文字幕完整版2025一页 | 好吊色青青青国产欧美日韩 | 精品熟人| 国产亚洲精品午夜福利 | 成人性生交大片免费看中文 | 色橹橹欧美在线观看视频高清 | 国产香蕉人在线播放视频网站 | 日本天堂免费观看 | 亚洲欧美日韩综合在线播放 | 国产专区一va亚洲v天堂 | 亚洲欧美春色激情另类 | 欧美国产亚洲一区 | 日本一区二区 | 国产鲁鲁视频在线观看 | 日本中文字幕在线视频站 | 国产亚洲一区二区三区日本 | 国语自产偷成人精品视频 | 夜夜狂射影院欧美极品 | 性猛交╳xxx乱大交 欧美午夜理伦三级在线 | 亚洲日韩电影网天堂影院 | 欧美日韩国产这里只有精品 | 亚洲欧美视频在线 | 国产91尤物在线观看互 | 在线观看国产福利91啪 | 成人精品一区二区三四 | 日本性爱欧美精品 | 性高朝久| 色综合色综合婷婷热 | 快活影院永久地址 | 免费精品国偷自产在线青年 | 欧美人与日本人xx在线视频 | 福利微拍一区二区 | 国产va免费精品高清在线 | 草莓视频污免 | 国产精品亚洲给色区 | 欧美黑人巨大xxxxx | 亚洲日韩动漫一区 | 日本高清乱理伦片中文字幕 | 免费获取| 国产在线精品成人一区二区三区 | 午夜性影院爽爽爽爽爽爽 | 电影在线观看不卡 | 日日噜噜夜夜狠狠视频无 | 亚洲精品乱码电影在线观看 | 56prom精品视频在放免费 | 黑人巨大精品欧 | 影视大全网 | 中文字幕乱码无 | 国产精品亚洲片夜色在线 | 国产老熟女老女人老人 | 成人啪精品视频网站午夜 | 日韩成人精品无v国产 | 91福利国产在线观看香蕉 | 在线精品国产一区二区三区 | 亚洲是第一大洲的原因 | 国产高清视频在线观 | 欧美va日本va亚洲ⅴa | 国产精彩 | 女厕脱裤撒尿大全视频 | 亚洲欧洲中文字 | 国产偷国产偷精品孕妇 | 中文字幕亚洲日韩第一页 | 成人国产一区二区 | 国产精品亚洲给色区 | 国产免费131美女 | aⅴ日本亚洲欧洲免费 | 97影视首页 | 国产亚洲视频中文字幕97精品 | 国产免费v片在线观看完整版 | 亚洲中文字幕dⅴd | 欧美一级大 | 乱仑图片| 国产91蜜芽在线观看 | 偷国内自拍视频在线观看 | 日本一本精品中文字幕视频 | 国产亚洲欧美手机在线观看 | 美国一级欧美三级 | 亚洲韩国欧美一区二区三区 | 中文字幕电影一区二区 | 亚洲国产欧美在线人网站 | 亚洲日韩色在 | 精品国产日韩亚洲一区在线 | 国产xxxx视频在线观看 | 国产欧美日韩精品福利98 | 日韩视频一区二区在线观看 | 国产精品jlzz视频 | 亚洲精品一区国产 | 欧美一区二区三区免费 | 日韩亚洲人成影院 | 想要大鸡 | 美丽的姑娘高清版在线观看 | 两口子交换真实刺激 | 成人性生交大片免费看一 | 97亚洲综合色成在线观看 | 午夜免费观看福利片 | 人人干操 | 欧美一级一区二区电影 | 欧美日韩在线亚洲一区二区三区 | 精品午夜福利在线观看 | 欧美亚洲日本国产黑白配 一级特黄高清aaa | 日韩一区二区超清视频 | 亚洲精品国产一级高清在线观看 | 日本xxxwww在线观看 | 免费人成在线视频无 | 国产午夜福利免费看片 | 性夜黄a爽爽免费视频国产 亚洲日本一区二区一本一道 | 欧美激情狠狠14p | 成人精品动漫一区二区三区 | 国产亚洲精品午夜福利巨大 | 国产精品综合色区在线 | 国产香蕉人在线播放视频网站 | 欧美性video高清精品 | 在线观看亚洲h视频 | 国产在线一区二区三区四区 | a级精品九九九大片免费看 婷婷亚洲久悠 | 岛国大片 | 日本一本免费一二区 | 经典大片电影免费在线观看 | 欧美性白人极品hd | 亚洲人成在线影院 | 欧美激情va永久在线播放 | 免费va国产高清大片在线 | 国产网站在线 | 51福利国产在线观看午夜天堂 | 激情婷婷 | 在线中文字幕不卡视频 | 国产乱妇乱子在线播放视频 | 精品国内一区二区三区免费 | 女厕脱裤撒尿大全视频 | 欧美日韩视频一区二区三区 | 国产一国产二国产三国产 | 一级做a| 日韩欧美国产免费看清风阁 | 国产精品你 | 疼快拔出去 | 日本宅男午夜免费永久网站 | 国产专区在线视频 | 国语对白精品视频在 | 污污污污污污www网 午夜福利小视频400 | 免费jjzz | 亚洲精品成人区在线观看 | 国内精品在线一区二区 | 亚洲国内精品 | 在线观看视频国产 | 国产精品欧美激情 | 亚洲精品在线中文字幕 | 色综合激情丁香七月色综合 | 亚洲国产精品视频自拍 | 欧美日韩免费高清一区二区 | 中文字幕亚洲精品 | 欧美激情视频在线免费观看 | 国产人妇三级视频在线观看 | 亚洲精品1卡2卡三卡23卡 | 99久热海外精品视频 | 又粗又大又硬又爽的免费视频 | 欧美一级高清片国产特黄大 | 精品国产免费第一区二区三区 | 一级a性色生活片久 | 国产高清免费在线观看 | 另类专区亚洲 | 亚洲日本aⅴ片在线观看香蕉 | 三区四区五区高 | 动漫精品一区二区三区四 | 在线观看免费无 | 欧美制服丝袜国产日韩一区 | 亚洲精品成a人在线观看 | 国产精品视频一区 | 激情欧美一区二区三区 | 国产麻传媒精品国产v | 免费午夜无 | 国产精品亚洲片在 | 国产极品视频一区二区三区 | 99精品成人高清在线观看 | 亚洲欧美乱综合图片区小说区 | 国产激情电影综合在线看 | 国产综合色在线视频区 | 日本高清免费aaaaa大片视频 | 午夜福利在线观看 | 日韩精品一区二区免费在线观看 | 梦乃爱华作品在线观看播放 | 国产真实伦 | 观看视频 | 大地资源高清日本 | 国产在线脚交免费网站脚丫 | 亚洲国产a视频 | 国产男生夜间福利免费网站 | 亚洲区小说区图片区qvod | 最近韩国电影hd在线 | 敌伦交换一区二区三 | 国产欧美一区二区精品婷婷 | 精品国产欧美一区二区最新 | 国内精品视频一区二区在线观看 | 国产在线精品国自产在线 | 色色色导航 | 久一在线视频 | 日韩一区精品视频一区二区 | 激情综合一区二区三区 | 国产免费人成在线看视频 | 人人曰人人 | 日韩.国产.欧美.亚洲 | yellow高清免费观看日本 | 护士精品一区二区三区 | 最新91天堂国产电影在线观看 | 日韩免费码| 国农村精品国产自线拍 | 字幕一区二区三区四区 | 亚洲一区二区在线免费观看 | 天美传媒、91制片厂、天美传媒 | 自拍影视亚洲高清 | 日本三级强在线观看 | 国产产精品亚洲一区二区在线观看 | 在线观看视频91 | 国产激情| 国产精品激情综合 | 国产精品大片大片看大 | 日韩欧美国产精品专区 | 国产乱人 | 国产2025精品视频免费播放 | 国产伦精品一区二区三区视 | 亚洲中文字幕高清有码在线 | 忍不住的亲子中文字幕在线 | 日韩精品专区中文字幕 | 国产亚洲精品九九久在线观看 | 国产自在自线精品午夜视频 | 日本不卡高清免费v日本 | 精品日韩欧美一区二区三区 | 欧美日韩午 | 亚洲欧美日韩中文另类不卡 | 欧美中文小说在线观看 | 一二三四影视在线看片免费 | 未满十八勿入网站 | 全部视频欧美日韩在线无人 | 精品国产乱码 | 99精品电影一区二区免费看 | 亚洲日韩天堂网中文字幕 | 狂野欧美性猛交xxxx免费 | 亚洲一区免 | 国产精品最新高清 | 九九热这里只有精品视频 | 九一国产精品视频 | 国产在线观看一区二区91精品 | 亚洲精品亚洲人成在线 | 91草莓视频在线观看 | 亚洲经典 | 日本一区二区三区四区视频 | 男人扒开女人腿桶到爽免费 | 国产男女| 精品国产亚洲人成在线观看 | 亚洲欧美一区二区综合精品 | 在线国产自偷自拍视频 | 最新电影电视剧短剧大全 | 亚洲欧洲日产国码a | 午夜夫妻试看120国产 | 国产一级精品高清 | 亚洲国产欧美脱 | 日韩精品一区二区三区影院 | 人人影视 | 最新国产ts人妖系列视频 | 国产精品高清尿小便嘘嘘主演 | 男女午夜视频 | 亚洲最新精品每日一更新 | j8又粗又大又长又爽又硬电影 | 在线国产自偷自拍视频 | 亚洲一区二区三区高清在线播放 | 国产又色又爽又黄又刺激的网站 | 制服丝袜国产精 | 精品国内自产 | 国产精品对白交换绿帽视频 | 洋妞国产全集在线观看 | 91福利官网| 日本黄页网站免费大全 | 亚洲911精品一区二区 | 亚洲国产精品天堂jua | 青青青国产爽爽视频免费观看 | 午夜视频久 | 三区观看 | 国产精品高清尿小便嘘嘘主演 | 精品一区二区三区中文字幕 | 欧美特级特黄aa | 免费国产自线拍 | 亚洲中文字幕无线 | 国产精品欧美日韩视频一区 | 日韩在线中文字幕欧美 | 91精品福利 | 视频一区在线免费观看 | 欧美高清一区二区三区不卡视频 | 国产午夜伦伦午夜伦 | 老鸭窝laoyaw | 熟女精品www久 | 欧美亚洲国产日韩完全在线电影 | 国产极品视 | 午夜性刺激| 免费在线观看的网站 | 在线观看中文 | 中国在线观看免费的www | 96国产xxxx免费视频 | 91天堂а8天堂资源在线官网 | 亚洲色www成 | 久精品国产欧美亚洲色a大片 | 欧洲尺码日本尺码专线 | 日本在线视频在线 | 欧美性色aⅴ欧美综合色 | 精品三级影视亚洲 | 国产日韩欧美视频在线观看 | 欧美亚洲日本中文字幕在线 | 国产视频欧美综合 | 视频免费| 电视剧大全免 | 中文字幕在线免费观看 | 国产精品熟女视频一区二区 | 日韩一中文字 | 五月社区免费 | 国产精品欧美日韩区二区 | 亚洲日韩视频在线观看 | 欧美1区2区3区| 日韩精品福利 | 私人订制1080在线观看免费 | 国产精品导航一区二区 | 国产亚洲精品福利在线 | 中日欧洲精品视频在线 | 无人视频在线观看免费播放影院 | 在线日韩日本国 | 亚洲一区制服丝袜 | 日本一区二区三区免费乱视频 | 国产精品自在 | 国产精品亚洲二区在线观看 | 亚洲欧美日韩一区超高清 | 九九热精品在线视频观看 | 日本免费高清视频不卡 | 无人区大片中文字幕在线 | 亚洲一区二区三区香蕉 | 亚洲天堂偷拍日韩中文字 | 99精产国品一二三产品香蕉 | 91桃色在线免费观看 | 免费动漫成本人视频网站 | 欧美va亚洲va在线观看 | 国产亚洲欧美日韩国产片 | 欧美一区二区三区性 | 日韩在线欧美高清一区 | 免费人成网站在线免费观看 | 日本一区二区三区精品视频 | 成人免费在线视频一区二区三区 | 亚洲精品综合在线发布 | 亚洲欧美精品一区二区 | 果冻传媒一区二区天美传媒 | 8x成年视频在线 | 国产婷婷综合在线视频 | 国产欧美亚 | 国产精品偷伦视频观看免费 | 人妖ts国产手机在线 | 在线观看网站国产精品 | 深夜影院 | 亚洲精品动漫免费二区 | 两性色午夜视频在线观看 | 精品国产午夜福利精品推荐 | 亚洲aⅴ无一区二区三区 | 最爽的乱淫视频国语对 | 日本免费在线观看视频 | 欧美日韩国产精品自在自线 | 中文字幕日韩欧美精品 | 国产午夜福利精品一 | 国产精品浪潮v一区二区 | 中文字幕人成人乱码亚洲电影 | a男人的天堂| 无人一码二码三码4码免费 91网首页 | 日本亲与子 | 日韩综合网 | 日本黄页网站免费观看 | 蜜桃mv在线播放免费观看视频 | 国产一级特黄高清在线大片 | 青青青国产免a | 高清免费a级在线观看国产 最新福利电影在线看 | 日本一二三区视频在线 | 日本一区二区三区在线播 | 国产精品自在欧美一区 | 精品手机在线 | 亚洲综合成人aⅴ在线观看 韩国三级香港三 | 97色伦图片97综合影院 | 国产最新精品盗摄视频 | 亚洲午夜福利在线视频 | 国产欧美日本韩国另类 | 大陆老熟女洗澡性视频tube | 在线观看视频导 | 私人电影官网 | 国产精品自产拍 | 亚洲国产福利一区二区三区 | 欧美日韩精品一区二区免费看 | 国产主播在线观看不卡 | 国产精品高清在线欧美 | 精品精品国产欧美在线观看 | 国产成本人片免费v | 国产日韩欧美精品大秀 | 猛进猛出| 欧美黑粗特黄午夜大片 | 日本乱理伦片在线观看中文字幕 | 歐美性猛交xxxx亂大交3 | 国产精品国语对白一区二区 | 老汉色影院首页 | 芙宁娜裸身被羞羞漫画 | 97精品视频在线观看 | 国产玉足sm足控脚交视频 | 国产原创露脸视频在线观看 | 亚洲一级淫片免费在线观看 | 三年片在线观看免费观看大全 | 亚洲欧美手机在线观看 | 亚洲人成电影手机在线网站 | 日本黄页网址在线 | 电家庭影院午夜 | 日韩欧美中文字幕 | 国产免费一区二区三区视频 | 国产大片亚州一 | 色哟哟免费精品网站入口 | 国产精品成人亚发布 | 精品国产自 | 日韩大片高清播放器 | 日韩精品亚洲人成在线观看 | 日韩欧美国产一区二区三 | 国产在线观看永久免费 | 小姨子在旁边差点被看到 | 日韩高清 | 亚洲男人的天堂在线观看 | 免费日韩电影网 | 国内女人喷潮完整视频 | 色依依亚洲一区在线观看 | 国产网站免费在线观看 | 国产综合一区二区在线观看 | 国产精品视频网 | 成人午夜在线观看日韩 | 99亚洲直播在 | 高清在线亚洲精品国产二区 | 熟女精品www久 | 中文字幕一区在线观看视频 | 成年人免费在线看的惊悚动作片 | 中文字幕在线一 | 成人精品视频一区二区三区 | 亚洲2025天天堂在线观看 | 国产精品福利短视在线播放频 | www亚| 欧美日韩一区二区成人午夜电影 | 国产一区二区三区水蜜桃 | 国产精品一区不卡在线观看 | 手机看片福利一区二区三区 | 国产青草视频在线观看 | 亚洲欧洲日本精品永久在线观看 | 91午夜视 | 玩弄老太婆的屁股眼 | 国产制服丝袜你 | 精品国产综合区 | 日韩精品亚洲成本人专区电影 | 免费高清电影在线观看 | 日本免费一区二区五区六区 | 国产乱码精品一区 | aⅴ人片在线观看 | 亚洲国产综合视频免费在线 | 鲁丝片一区二区三区免费 | 国产精品4p露脸在线播放 | 国产老肥熟一区二区三区 | 欧美综合乱码一区二区三区 | 日韩精品一区二区免费在线观看 | 国产一区二区精品在线 | 欧洲亚洲日韩中文字幕首页 | 国产精品亚洲午夜一区二区三区 | 国产精品私密保养 | 小小水蜜桃高清电视剧观看 | 国产精品自在线午夜福利高 | 青青青爽国产 | 国产男女爽爽爽免 | 中文字幕人成人乱码亚洲影 | 99精品在线视频 | 国产亚洲播放在线 | 国产一区视频在线免费观看 | 最新好剧电影在线观影平台 | 亚洲精品美女在线观看 | 亚洲精品二区国产综合野狼 | 97碰碰碰成年免费视频s | 亚洲v日韩v欧美高清在线观看 | 日韩在线视频一区 | 午夜小电影 | 在线观看片免费 | xxxx视频| 日韩欧美一区二区大胸视频 | 97午夜理论片在线影院 | 国产精品v| 一级中文在线播放 | 777国产偷窥盗摄精品原味 |