日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

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

数据库

MySQL 体系结构详细介绍

發布時間:2025/3/21 数据库 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MySQL 体系结构详细介绍 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

2019獨角獸企業重金招聘Python工程師標準>>>

一、MySQL軟件架構

? ? MySQL體系結構圖(邏輯結構)

1、Connectors

指的是不同語言中與MySQL的連接交互層;

2、Management Serveices & Utilities

系統管理和控制工具,例如備份恢復、MySQL復制、集群等;

3、Connection Pool

連接池,管理緩沖用戶連接、用戶名、密碼、權限校驗、線程處理等需要緩存的信息;
MySQL服務器對每一個連接產生一個線程,而這個線程獨自為該連接服務。因此,MySQL服務器中的并行是指并行執行許多個查詢而非一次查詢內的并行。也由此原因致使MySQL對多核支持不夠好,MySQL服務器是一組線程的集合。

4、SQL Interface

SQL接口,接受用戶的SQL命令,并且返回用戶需要查詢的結果。比如DML就是調用SQL Interface;

5、Parser

解析器,SQL命令傳遞到解析器的時候會被解析器驗證和解析。解析器是由Lex和YACC實現的,是一個很長的腳本;
主要功能:?

  • 將SQL語句分解成數據結構,并將這個結構傳遞到后續步驟,以后SQL語句的傳遞和處理就是基于這個結構的;
  • 如果在分解構成中遇到錯誤,那么就說明這個SQL語句是不合理的 ;
  • Lex:Lexical Analyzer是一種生成掃描器的工具。掃描器是一種識別文本中的詞匯模式的程序;
  • Yacc:Yet Another Compiler Compiler是一種工具,將任何一種編程語言的所有語法翻譯成針對此種語言的 Yacc 語法解析器;

6、Optimizer

查詢優化器,SQL語句在查詢之前會使用查詢優化器對查詢進行優化。他使用的是“選取-投影-聯接”策略進行查詢;
優化 select uid,name from user where gender = 1; SQL語句執行的過程如下:

  • 這個select 查詢先根據where 語句進行記錄選取,而不是先將表全部記錄查詢出來以后再進行gender過濾;
  • 這個select查詢先根據uid和name進行屬性投影(字段選擇),而不是將屬性全部取出以后再進行過濾;
  • 將這兩個查詢條件聯接起來生成最終查詢結果;

7、Cache&Buffer

高速緩存區,查詢緩存,如果查詢緩存有命中的查詢結果,查詢語句就可以直接去查詢緩存中取數據。通過LRU算法將數據的冷端溢出,未來得及刷新到磁盤的數據頁,叫臟頁。這個緩存機制是由一系列小緩存組成的。比如表緩存,記錄緩存,key緩存,權限緩存等;?

8、Engine

存儲引擎,存儲引擎是MySQL與文件打交道的子系統。也是MySQL最具有特色的一個地方。MySQL的存儲引擎是插件式的,它根據MySQL AB公司提供的文件訪問層的一個抽象接口來定制一種文件訪問機制(這種訪問機制就叫存儲引擎)現在有很多種存儲引擎,各個存儲引擎的優勢各不一樣。MySQL也支持自定義制存儲引擎,甚至一個庫中不同的表使用不同的存儲引擎,這些都是允許的。

二、數據庫與數據庫實例

數據庫:物理操作系統文件或其他形式文件類型的集合;
數據庫實例:數據庫后臺進程或線程及一個共享內存區域組成,數據庫實例是用來操作數據庫文件的;
MySQL是一個單進程多線程架構的數據庫,與SQL Server類似。Oracle數據庫在Linux OS下是多進程,在Windows下也是單進程多線程。MySQL數據庫實例在系統上的表現就是一個進程。

三、MySQL常用存儲引擎

存儲引擎其實就是如何存儲數據,如何為存儲的數據建立索引以及如何更新、查詢數據等技術實現的方法。
MySQL中的數據用各種不同的技術存儲在文件(或內存)中,這些技術中的每一種技術都使用不同的存儲機制、索引技巧、鎖定水平,并且最終提供廣泛的不同功能和能力。在MySQL中將這些不同的技術及配套的相關功能稱為存儲引擎。

1、存儲引擎查詢

查看MySQL服務器支持的存儲引擎及默認的存儲引擎。存儲引擎是針對數據表的,不是針對數據庫的,通過如下命令查看具體表指定的存儲引擎。

mysql> show engines; +--------------------+---------+----------------------------------------------------------------+--------------+------+------------+ | Engine | Support | Comment | Transactions | XA | Savepoints | +--------------------+---------+----------------------------------------------------------------+--------------+------+------------+ | InnoDB | DEFAULT | Supports transactions, row-level locking, and foreign keys | YES | YES | YES | | MRG_MYISAM | YES | Collection of identical MyISAM tables | NO | NO | NO | | MEMORY | YES | Hash based, stored in memory, useful for temporary tables | NO | NO | NO | | BLACKHOLE | YES | /dev/null storage engine (anything you write to it disappears) | NO | NO | NO | | MyISAM | YES | MyISAM storage engine | NO | NO | NO | | CSV | YES | CSV storage engine | NO | NO | NO | | ARCHIVE | YES | Archive storage engine | NO | NO | NO | | PERFORMANCE_SCHEMA | YES | Performance Schema | NO | NO | NO | | FEDERATED | NO | Federated MySQL storage engine | NULL | NULL | NULL | +--------------------+---------+----------------------------------------------------------------+--------------+------+------------+ mysql> show variables like '%engine%'; +----------------------------------+--------+ | Variable_name | Value | +----------------------------------+--------+ | default_storage_engine | InnoDB | | default_tmp_storage_engine | InnoDB | | disabled_storage_engines | | | internal_tmp_disk_storage_engine | InnoDB | +----------------------------------+--------+ 4 rows in set (0.01 sec)

2、常用存儲引擎

Innodb是MySQL數據庫5.5版本后的默認存儲引擎,默認所說的MySQL即指Innodb存儲引擎的MySQL,所以關于Innodb的體系結構專門梳理介紹。

2.1、InnoDB
2.1.1、InnoDB體系結構圖

InnoDB是MySQL5.5以后的默認存儲引擎,支持事務ACID,回滾,系統崩潰恢復能力及多版本并發控制的事務安全,主要用于OLTP數據庫業務場景;支持自增長列(auto_increment);支持外鍵約束(foreign key);支持MVCC的行級鎖;使用Btree索引;
Innodb存儲引擎主要包括多個內存池以及后臺線程。
內存池:由Buffer Pool包括(undo page、Change buffer page、Adaptive Hash Index、Lock info、data dictionary),Doublewrite Buffer,Additional Memory pool、Redo Log Buffer 組成,主要維護進程/線程的內部數據、緩存磁盤數據,修改文件前先在內存中修改;
MySQL5.7官方文檔中關于Innodb存儲引擎的體系結構講解包括
Buffer Pool
Change Buffer
Adaptive Hash Index
Redo Log Buffer
System Tablespace
InnoDB Data Dictionary
Doublewrite Buffer
Undo Logs
File-Per-Table Tablespaces
General Tablespaces
Undo Tablespace
Temporary Tablespace
Redo Log
InnoDB有表空間的概念,包括共享表空間和獨立表空間(獨立表空間的模式中也要有系統表空間ibdataX,來用于存儲內部的數據字典、Undo日志等,通過innodb_file_per_table參數設置啟用獨立表空間),默認獨立表空間模式下會在數據目錄下創建tablename.ibd、tablename.frm文件。
InnoDB支持記錄Redo文件,記錄對所有頁面的修改(頁面物理結構的變更)操作,可以通過相關的參數進行自定義設置Redo文件存儲路徑;
InnoDB支持記錄Undo文件,記錄數據修改前的備份,存儲在共享表空間中。用戶保證事務的原子性(恢復)和實現MVCC多版本并發控制,輔助完成事務的持久化(Undo信息會持久化)。可通過相關參數進行自定義設置;
更改緩沖(change buffer),基于聚集索引的操作是順序的,不會造成數據庫隨機讀取,但修改非聚集索引時就會產生大量的隨機讀寫。當修改非聚集索引的數據時,修改操作并非實時更新索引的葉子頁,而是把若干對同一頁面的更新緩存起來做合并(merge)將一次性更新操作,轉化隨機IO為順序IO,這樣可以避免隨機IO帶來性能損耗,提高數據庫的寫性能。
寫兩次(double write),(重做日志記錄的是頁的物理操作,如果頁本身損壞,對其重做就沒有意義了,在應用重做日志前,需要一個頁的副本。先通過頁的副本還原該頁,再應用重做日志進行恢復)當mysql將臟數據flush到data file的時候,先使用memcopy將臟數據復制到內存中的double write buffer,之后通過double wirte buffer再分2次,每次寫入1M到共享表空間,然后馬上調用fsync函數,同步到磁盤上;將數據頁(page)加載到內存(innodb buffer)->更新數據產生臟頁(dirty page)->使用memcopy將臟數據復制到內存中的double write buffer(size=2M)->double wirte buffer再分2次,每次寫入1M到共享表空間(ibdata文件)->調用fsync函數,同步到磁盤;使用memcopy將臟數據復制到內存中的double write buffer(size=2M)->double wirte buffer再分2次,每次寫入1M到共享表空間(ibdata文件)就是double的過程。
自適應hash索引(adaptive hash index),Innodb會監控表上索引的查找情況,如果通過建立Hash索引能帶來性能的提升,則會自動建立hash索引,該過程只能由MySQL Server自行控制,無法人工干預且只適用于等值索引查詢;

后臺線程:包括(Mater Thread、IO Thread、Lock Monitor Thread、Error Monitor Thread、Purge Thread、Page Cleaner Thread)刷新內存池中的過程數據,管理維護InnoDB存儲引擎正常工作;
InnoDB主要的后臺線程

Master Thread是一個非常核心的后臺線程,主要負責將緩沖池中的數據異步刷新到磁盤,保證數據的一致性,包括:臟頁(dirty page)的刷新、合并插入緩沖(insert buffer merge)、回滾頁回收(undo purge)等。innodb_max_dirty_pages_pct臟頁刷盤的配置參數,新版默認75,google默認90。

2.1.2、InnoDB表

InnoDB表邏輯結構

  • 表空間:InnoDB存儲引擎邏輯結構的最高層
  • 段:組成表空間,數據段,索引段,回滾段等
  • 區:由64個連續的頁組成,每個區大小1MB
  • 頁:每個頁16KB且不能修改,數據頁,索引頁,系統頁等
  • 行:每頁最多允許存放7992行數據
  • 行記錄格式:常見兩種行記錄格式Compact和Redundant,MySQL5.1版本后,主要是Compact行記錄格式。對于Compact,不管是char型還是varchar型,null型都是不占用存儲空間的;對于Redundant,varchar的null不占用空間,char的null型是占用存儲空間的。
  • Varchar類型的長度是65535,但實際一般除開其他開銷大概65530左右,同時這個限制是一整行數據的長度。
  • create table tbl_varchar(a varchar(22000), b varchar(22000), cvarchar(22000)) charset=latin1 engine=innodb; 因為一行總長大于了65535

數據頁結構

  • File Header(文件頭):記錄頁的頭信息,固定長度38字節;
  • Page Header(頁頭):記錄頁的狀態信息,固定長度65字節;
  • Infimum+Supremum Records:兩個虛擬的行記錄,用于限定記錄的邊界;
  • User Records:用戶記錄,實際記錄的內容,InnoDB采用B+樹索引組織存儲表;
  • Free Space:空閑空間,鏈表數據結構,記錄刪除后會被加入空閑空間;
  • Page Director:頁目錄,存放記錄的相對位置,B+索引不能找到具體的一條記錄,只能找到該記錄所在的頁,數據庫把頁載入內存,再通過Page Director查找具體記錄行;
  • File Trailer:文件結尾信息,固定長度8字節;

2.2、MyISAM

MyISAM是MySQL5.5之前的默認存儲引擎,不支持事務,不支持行級鎖,只支持并發插入的表鎖,主要用于高負載的查詢。
MySQL的系統表大部分都是MyISAM存儲引擎的,支持對只讀表進行壓縮,單壓縮后不能對該表進行修改只能查詢;
MyISAM按照插入的順序在磁盤上存儲數據,并為每行生成自然順序行號(row number),從0開始。因為元組的大小固定,所以MyISAM可以很容易的從表的開始位置找到某一字節的位置。
MyISAM不支持聚簇索引,使用Btree索引,但實現細節與InnoDB不同,索引中每一個葉子節點僅僅包含索引字段關鍵字和行號(row number),且葉子節點按照索引字段關鍵字的順序存儲,實際上,在MyISAM中,primary key和其它索引沒有什么區別。Primary key僅僅只是一個叫做PRIMARY的唯一,非空的索引而已。
創建MyISAM表,MySQL5.7的MyISAM表已經支持text,blob類型了。
mysql> create table tbl_myisam(id int,name varchar(20),describle text,image blob) engine=myisam;
mysql> create table table_myisam_compressed engine=myisam as select * from information_schema.columns;
Query OK, 3132 rows affected (0.23 sec)
Records: 3132 ?Duplicates: 0 ?Warnings: 0
MyISAM表默認在數據目錄下創建tablename.MYD、tablename.MYI、tablename.frm文件

[root@mysqlnode02 test1212]# ll -h tbl_myisam.* -rw-r----- 1 mysql mysql 8.5K Dec 12 09:28 tbl_myisam.frm -rw-r----- 1 mysql mysql 0 Dec 12 09:28 tbl_myisam.MYD -rw-r----- 1 mysql mysql 1.0K Dec 12 09:28 tbl_myisam.MYI

查看數據表的狀態信息,MyISAM表存儲格式,三種存儲格式(Row_format):靜態(Fixed,char)、動態(Dynamic,varchar\blob\text)、壓縮(先創建表再通過myisampack工具壓縮處理)
mysql> show table status like 'tbl_myisam'\G
MyISAM表容易損壞,可以通過工具進行檢查和修復,如果有問題Msg_type里會有warning或error。沒有問題的話出現的結果Status是OK。可以使用repair命令修復損壞的MyISAM表,MySQL5.7修復后不生成*.old文件

mysql> check table tbl_myisam; +---------------------+-------+----------+----------+ | Table | Op | Msg_type | Msg_text | +---------------------+-------+----------+----------+ | test1212.tbl_myisam | check | status | OK | +---------------------+-------+----------+----------+ 1 row in set (0.00 sec)mysql> repair table tbl_myisam; +---------------------+--------+----------+----------+ | Table | Op | Msg_type | Msg_text | +---------------------+--------+----------+----------+ | test1212.tbl_myisam | repair | status | OK | +---------------------+--------+----------+----------+ 1 row in set (0.00 sec) -- 利用myisampack工具,通過.MYI文件壓縮數據文件.MYD [root@mysqlnode02 test1212]# myisampack ./myisam.MYI

2.3、Memory

Memory存儲引擎的表都是內存表。實際的數據存儲在內存中,磁盤中只有表結構定義文件tablename.frm,有利于快速處理,提高整個表的處理能力,重啟或關機數據會丟失,可提供極快的訪問。Mysql服務單獨給memory存儲引擎的表分配內存空間,而且表一直持有這些內存空間(即使刪除數據也不釋放內存),直到有drop、alter、create等重建對象才能釋放內存。內存的占用空間由max_heap_table_size參數控制,默認16M,Mysql服務重啟后,所有表會自動繼承全局的max_heap_table_size參數的值;
創建memory存儲引擎表,不支持BLOB/TEXT類型

mysql> create table tbl_memory(id int,name varchar(20),describle text,image blob) engine=memory; ERROR 1163 (42000): The used table type doesn't support BLOB/TEXT columns mysql> create table tbl_memory(id int,name varchar(20)) engine=memory; Query OK, 0 rows affected (0.01 sec) mysql> show variables like 'max_heap_table_size'; +---------------------+----------+ | Variable_name | Value | +---------------------+----------+ | max_heap_table_size | 16777216 | +---------------------+----------+ 1 row in set (0.01 sec)

默認使用hash索引,對應等值查詢效率很高,對應范圍查詢性能不高;支持Btree索引,如要使用Btree索引需要明確指定創建索引類型;

mysql> create index idx_id on tbl_memory(id); mysql> create index idx_name using btree on tbl_memory(name); mysql> show index from tbl_memory\G

Memory存儲引擎的表只有一個tablename.frm文件

[root@mysqlnode02 test1212]# ll -h tbl_memory.* -rw-r----- 1 mysql mysql 8.4K Dec 12 09:46 tbl_memory.frm

2.4、CSV

CSV存儲引擎是基于CSV格式文件存儲數據的。該存儲引擎的表將數據以CSV文本方式存儲,可以手動直接編輯數據文件,也可通過DML語句操作CSV表,適用于進行小數據量的中間數據交換場景。

-- 創建CSV存儲引擎表,要求創建時指定各列非空約束。 mysql> create table tbl_csv(id int,name varchar(30)) engine=csv; ERROR 1178 (42000): The storage engine for the table doesn't support nullable columns mysql> create table tbl_csv(id int not null,name varchar(30) not null) engine=csv; Query OK, 0 rows affected (0.00 sec) -- CSV存儲引擎的表包括.frm是表結構定義文件;.CSV是存放數據文件;.CSM是表狀態及表的數據量文件 [root@mysqlnode02 test1212]# ll -h tbl_csv.* -rw-r----- 1 mysql mysql 35 Dec 12 09:54 tbl_csv.CSM -rw-r----- 1 mysql mysql 0 Dec 12 09:54 tbl_csv.CSV -rw-r----- 1 mysql mysql 8.4K Dec 12 09:54 tbl_csv.frm -- 手動編輯.CSV數據文件,刷新數據表,DML操作數據表 [root@mysqlnode02 test1212]# vi tbl_csv.CSV [root@mysqlnode02 test1212]# cat tbl_csv.CSV 1,'AAAAA' 2,BBBBB mysql> flush table tbl_csv; Query OK, 0 rows affected (0.00 sec) mysql> select * from tbl_csv; +----+---------+ | id | name | +----+---------+ | 1 | 'AAAAA' | | 2 | BBBBB | +----+---------+ 2 rows in set (0.00 sec) mysql> delete from tbl_csv where id=2; mysql> insert into tbl_csv values (id,'BBBBB');

2.5、BLACKHOLE

支持事務,而且支持mvcc的行級鎖,主要用于日志記錄或同步歸檔,這個存儲引擎除非有特別目的,否則不適合使用。

2.6、FEDERATED

能夠將多個分離的MySQL服務器鏈接起來,從多個物理服務器創建一個邏輯數據庫。十分適合于分布式環境或數據集市環境。

2.7、ARCHIVE

歸檔(適用于存放大量數據的存儲引擎);支持select、insert等操作;不支持delete 、update、索引等操作;使用zlib無損數據壓縮算法,節省空間;適用于大量歷史數據(可查詢但不能刪除)的保存。
使用ARCHIVE存儲的空間大小是MyISAM存儲大小的1/7,大大減少了空間的占用。

mysql> create table tbl_archive engine=archive as select * from information_schema.columns; Query OK, 3153 rows affected (0.19 sec) Records: 3153 Duplicates: 0 Warnings: 0 -- .ARZ是數據壓縮文件;.frm是表結構定義文件 [root@mysqlnode02 test1212]# ll -h tbl_archive.* -rw-r----- 1 mysql mysql 30K Dec 12 10:20 tbl_archive.ARZ -rw-r----- 1 mysql mysql 14K Dec 12 10:20 tbl_archive.frm

四、物理結構(物理文件)

1、參數文件

告訴MySQL實例啟動時在哪找到數據庫文件,指定某些初始化參數,這些參數定義了某種內存結構的大小等設置。用文件存儲,可編輯,加載不到則不能成功啟動。參數有動態和靜態之分,靜態只讀,動態可以通過set命令設置。修改時有作用域的區分,通過session或global設置相應的有效域。

# 查看MySQL的參數文件讀取順序 [root@mysqlnode02 data]# mysql --help | grep 'my.cnf'order of preference, my.cnf, $MYSQL_TCP_PORT, /etc/my.cnf /etc/mysql/my.cnf /usr/etc/my.cnf ~/.my.cnf

2、錯誤日志文件

記錄MySQL的啟動、運行、關閉過程進行了記錄,MySQL使用過程中的錯誤信息,還記錄了一些警告信息以及正確信息,可通過show variables like ‘log_error’查看具體的文件路徑。

mysql> show variables like 'log_error'; +---------------+-----------------------------+ | Variable_name | Value | +---------------+-----------------------------+ | log_error | /mysqldb/errorlog/error.log | +---------------+-----------------------------+ 1 row in set (0.01 sec)

3、慢查詢日志文件

記錄SQL語句執行較慢的語句,可通過slow_query_log參數控制是否開啟,slow_query_log_file參數控制對應的日志文件路徑,可通過mysqldumpslow工具查看慢日志。long_query_time參數設置慢查詢閥值,等于0記錄全部SQL,log_output 參數設置日志記錄文件或表中(file/Table)log_queries_not_using_indexes參數設置未使用索引的查詢也算慢查詢。

4、全查日志文件

記錄MySQL的所有請求信息(操作命令),通過general_log,general_log_file兩個參數控制開啟與路徑設置。

5、二進制日志文件

不記錄查詢,只記錄對數據庫所有的修改操作,用于恢復和復制。log_bin參數設置是否開啟(開啟時需要設置server_id),max_binlog_size 設置二進制日志的大小,64MB比較合適,log_bin_basename參數設置二進制日志文件的路徑和名稱前綴,binlog_format參數設置日志格式(statement,row,mixed)三種格式,可通過mysqlbinlog工具查看二進制日志文件內容。

6、Socket文件

當用UNIX套接字方式進行連接時需要指定的文件。修改了socket文件的目錄時,通過MySQL客戶端工具連接MySQL時需要-S指定socket文件。socket參數設置文件的存儲目錄和文件名,可以在my.cnf的[client]下增加socket配置后不用每次都指定。
[client]
socket = /MySQLdb/sockandpid/MySQL.sock

7、pid文件

MySQL實例的進程文件,MySQL實例啟動的時候,會將自己的進程id寫入一個文件中,pid_file參數設置pid文件的路徑和名稱,rpm默認安裝后會放在默認目錄中,重新初始化時需要在my.cnf文件中具體配置(自定義設置的路徑不起作用/var/run/mysqld/mysqld.pid)。
[root@mysqlnode02 data]# cat /var/run/mysqld/mysqld.pid
1403

8、表結構文件

存放MySQL表結構定義的文件,每個表都有一個.frm后綴的文件,存放在datadir對應的數據庫目錄里。

9、數據文件

存儲數據的文件,每個存儲引擎的數據文件后綴有一定的差異,MyISAM的數據文件是.MYD,InnoDB的數據文件是.ibd或.ibdata*。

10、索引文件

存儲索引的文件,每個存儲引擎的索引文件后綴會有一定的差異,MyISAM的索引文件是.MYI,InnoDB的索引文件存儲在.ibd文件中。

11、Innodb特有的文件

11.1、表空間文件

默認的表空間文件是%datadir%/ibdata1為統一表空間文件,可以通過innodb_file_per_table參數設單獨表空間文件,存儲各表對應的數據、索引、插入緩存等信息,其余信息還是存放在默認的表空間.ibdata1中;

11.2、Redo日志文件

記錄innodb存儲引擎對應數據所在的頁的更改物理情況,用于保證實例或介質失敗后的數據完整性恢復,先與數據持久化,innodb_log_file_size參數設置redo文件的大小,innodb_log_files_in_group參數設置redo文件組的文件數量,innodb_log_group_home_dir參數設置redo文件的路徑,ib_logfile*。
二進制日志與重做日志區別

11.3、Undo日志文件

存在于共享表空間ibdata1里面,有一個回滾段地址,里面存放了頭信息,配置頭信息,段的頭信息,里面存儲了與redo相反的數據更新操作,如果rollback的話,就把undo段里面數據回寫到數據文件里面。undo log用來完成事務的回滾以及MVCC的功能

五、MySQL內存結構

MySQL內存分配規則是,用多少給多少,最高到配置的值,不是立即分配;MySQL中內存大致分為全局內存(Global buffer)、線程內存(Thread buffer)兩大部分。

1、Global Buffer

innodb_buffer_pool_size(IBP)
InnoDB高速緩存data page和index page,是對InnoDB引擎影響最大的參數,建議設置為內存的50%-80%;合并插入緩存也是其中的一部分;
通過show global status like 'innodb_buffer_pool_%'\G;查看IBP的狀態,單位是page(16kb),如果Innodb_buffer_pool_wait_free較大需要增加IBP;
通過show status like 'innodb_data_read%';查詢的值計算IBP的各種效率,Innodb_data_read總共讀入的字節數,Innodb_data_reads發起請求的次數,每次讀取可能需要讀取多個頁;
IBP利用率:(1-Innodb_buffer_pool_reads/Innodb_buffer_pool_read_requests)*100%,Innodb_buffer_pool_reads(從物理磁盤讀取的頁數)Innodb_buffer_pool_read_requests(從緩沖池中讀取的頁數);
IBP命中率:Innodb_buffer_pool_read_requests/(Innodb_buffer_pool_read_
requests+Innodb_buffer_pool_reads+Innodb_buffer_pool_read_ahead);
平均每次讀取的字節數:Innodb_data_read/Innodb_data_reads
innodb_log_buffer_size
InnoDB redo日志緩沖區,提高redo寫入效率,如果show global status like '%Innodb%'\G;查出Innodb_log_waits大于0則需要增加該區域大小;
query_cache_size
查詢高速緩沖,緩存結果,減少硬解析,建議關閉,通過專業的緩存redis等處理;

2、Thread Buffer

每個連接到MySQL服務器的線程都需要自己的緩沖,連接時大概會立即分配256k,甚至在現場空閑時他們使用默認的線程堆棧網絡緩存等。當需要進行復雜操作時會給分配相應的內存空間,操作完成后即釋放。
read_buffer_size:對表進行順序掃描的請求分配的讀入緩沖區;
read_rnd_buffer_size:對表進行任意行讀取時分配隨機讀緩存區;
sort_buffer_size:對查詢數據進行排序使用的緩存大小;
join_buffer_size:減少參與join的“被驅動表”的讀取次數以提高性能,當空間不足時會分批在join_buffer中進行;
binlog_cache_size:二進制日志緩存大小,提高二進制日志寫入效率,可以通過如下狀態信息查看Binlog_cache_disk_use,Binlog_cache_use;
thread_cache_size:默認是9需要根據業務進行比較的修改,如1024;

六、MySQL查詢執行過程

查詢緩存,判斷sql語句是否完全匹配,再判斷是否有權限,兩個判斷為假則到解析器解析語句,為真則提取數據結果返回給用戶;
解析器解析。解析器先詞法分析,語法分析,檢查錯誤比如引號有沒閉合等,然后生成解析樹;
預處理。預處理解決解析器無法決解的語義,如檢查表和列是否存在,別名是否有錯,生成新的解析樹;
優化器做大量的優化操作;
生成執行計劃;
查詢執行引擎,負責調度存儲引擎獲取相應數據;
返回結果

七、MVCC機制

MVCC是一種多版本并發控制機制,行級鎖對系統的開銷較大,通過保存數據在某個時間點的快照來實現MVCC可以替代行鎖,降低系統并發控制的開銷。
一致性的非鎖定讀:InnoDB存儲引擎通過行多版本控制的方式來讀取當前執行時間數據庫中行的數據。如果讀取的行正在執行Delete、update操作,這時讀取操作不會因此而會等待行上鎖的釋放,相反,InnoDB存儲引擎會去讀取行的一個快照數據。快照數據是指該行之前版本的數據,該實現是通過Undo段來實現。而Undo用來事務中回滾數據,因此快照本身是沒有額外開銷的。此外,快照數據是不需要上鎖的,因為沒有必要對歷史的數據進行修改。一個行可能有不止一個快照數據,所以稱這種技術為行多版本技術。由此帶來并發控制,稱之為多版本并發控制(Multi VersionConcurrency Control, MVCC)。

1、InnoDB的MVCC

MVCC (Multiversion Concurrency Control),即多版本并發控制技術,它使得大部分支持行鎖的事務引擎,不再單純的使用行鎖來進行數據庫的并發控制,取而代之的是把數據庫的行鎖與行的多個版本結合起來,只需要很小的開銷,就可以實現非鎖定讀,從而大大提高數據庫系統的并發性能,MVCC是通過保存數據在某個時間點的快照來實現的。
讀鎖,S鎖,若當前事務T對數據對象A加S鎖,則T可以讀取A,其他事務可以對A加S鎖,但T和其他事務都不能修改A;
寫鎖,X鎖,若當前事務T對數據對象A加X鎖,則T可以讀也可以修改A,其他事務不能對A加任何鎖(即不能讀取或修改A);
表鎖,操作對象是數據表,若當前事務T對表A加讀鎖,其他事務可讀不可寫;若加寫鎖,其他事務增刪改都不行;
行級鎖,操作對象是數據表中的一行數據,行級鎖是MySQL存儲引擎實現的,不是MySQL服務器實現的,行級鎖開銷大,但并發性好。
InnoDB的MVCC主要是為Repeatable-Read事務隔離級別做的,簡單的理解InnoDB是通過在每行記錄后面保存兩個隱藏的列來實現MVCC,這兩個列分別保存了這個行的創建時間和刪除時間(系統版本號,也可以理解為事務的ID),每開始一個事務,系統版本號會自動增加。通過這兩時間(系統版本號),在不同的事務隔離級別下操作相應的數據行。
Select:只會檢索創建時間版本早于當前系統版本號的數據行(系統版本號小于或等于當前事務對應的系統版本號)且行的刪除版本要么未定義,要么大于當前版本號;
Insert:InnoDB會為每個新增的行(創建時間)記錄當前系統版本號;
Delete:InnoDB會為每個刪除的行(刪除時間)記錄當前系統版本號;
Update:InnoDB會為新增的一行數據的(創建時間)記錄當前系統版本號,同時也會把被修改的數據行的(刪除時間)記錄當前系統版本號;
MVCC應有的特點,每行數據都存在一個版本,每次數據更新時都更新的該版本;修改是copy當前版本隨意修改,各事務之間無干擾;保存時比較版本號,如果成功(commit),則覆蓋原記錄,失敗則放棄copy(rollback)。
InnoDB的實現方式,事務以排他鎖的方式修改原數據;把修改前的數據放入Undo log通過回滾指針與主數據關聯;修改成功則(commit),失敗則利用undo log(rollback)。具體執行過程:begin->用排他鎖鎖定該行->記錄redo log->記錄undo log->修改當前行的值,寫事務編號,回滾指針指向undo log中的修改前的行->end。
mvcc中update步驟:
記錄事務中修改行數據的相應字段和值(包括舊版本事務id)在undo-log中記錄;
修改相應數據;
在redo-log中保存要修改的相應(新版本事務id)數據寫入;
假如update不能正常運行則根據undo-log redo-log 來恢復;
當然如果當前版本事務沒有commit的話則通過undo-log信息恢復原始數據狀態。
所以InnoDB的實現真算不上MVCC,因為并沒有實現核心的多版本并存,undo log中的內容只是串行化的結果,記錄了多個事務的過程,不屬于多版本共存。MVCC是通過版本號比對進行事務的提交或回滾,類似于通過樂觀鎖替代兩階段提交,兩階段提交是保證多行數據修改一致性的唯一手段,其本職是鎖定;樂觀鎖本質是消除鎖定,二者矛盾,所以理想的MVCC難以實現實際應用,InnoDB只是在Repeatable-Read事務隔離級別下實現的一種非阻塞讀而已。
InnoDB的MVCC是行鎖的一個補充,主要實現了“Repeatable-Read”模式下的非鎖定讀(讀非阻塞)。
在Read Committed和Repeatable Read下,InnoDB存儲引擎使用非鎖定一致性讀。然而,對于快照的定義卻不同。在Read Committed事務隔離級別下,對于快照數據,非鎖定一致性讀總是讀取被鎖定行的最新一份快照數據。在Repeatable事務隔離級別下,對于快照數據,非鎖定一致性讀總是讀取事務開始時的行數據版本。

2、mvcc優缺點

優點:在讀取數據時,innodb幾乎不用獲取任何鎖,在每個查詢通過版本檢查,只獲取需要的數據版本,提高系統并發度;
缺點:為了實現多版本,innodb必須對每行增加相應字段來存儲版本信息,同時需要維護每一行的版本信息,而且在檢索行的時候,需要進行版本的比較,因而減低了查詢效率;innodb還需要定期清理不再需要的行版本,及時回收空間,這也增加開銷;

八、MySQL的事務

1、事務隔離級別

MySQL的事務是存儲引擎層實現的,本部分主要討論事務存儲引擎InnoDB相關事務原理。SQL標準定義了4類隔離級別,包括了一些具體規則,用來限定事務內外的哪些改變是可見的,哪些是不可見的。低級別的隔離級一般支持更高的并發處理,并擁有更低的系統開銷。
Read Uncommitted(讀取未提交內容)
在該隔離級別,所有事務都可以看到其他未提交事務的執行結果。本隔離級別很少用于實際應用,因為它的性能也不比其他級別好多少。讀取未提交的數據,也被稱之為臟讀(Dirty Read)。
Read Committed(讀取提交內容)
這是大多數數據庫系統的默認隔離級別(但不是MySQL默認的)。它滿足了隔離的簡單定義:一個事務只能看見已經提交事務所做的改變。這種隔離級別 也支持所謂的不可重復讀(Nonrepeatable Read),因為同一事務的其他實例在該實例處理其間可能會有新的commit,所以同一select可能返回不同結果。
Repeatable Read(可重讀)
這是mysql的默認事務隔離級別,它確保同一事務的多個實例在并發讀取數據時,會看到同樣的數據行。不過理論上,這會導致另一個棘手的問題:幻讀 (Phantom Read)。簡單的說,幻讀指當用戶讀取某一范圍的數據行時,另一個事務又在該范圍內插入了新行,當用戶再讀取該范圍的數據行時,會發現有新的“幻影” 行。InnoDB和Falcon存儲引擎通過多版本并發控制(MVCC,Multiversion Concurrency Control)機制解決了該問題。
Serializable(可串行化)?
這是最高的隔離級別,它通過強制事務排序,使之不可能相互沖突,從而解決幻讀問題。簡言之,它是在每個讀的數據行上加上共享鎖。在這個級別,可能導致大量的超時現象和鎖競爭。serializable完全鎖定字段,若一個事務來查詢同一份數據就必須等待,直到前一個事務完成并解除鎖定為止 。是完整的隔離級別,會鎖定對應的數據表格,因而會有效率的問題。
這四種隔離級別采取不同的鎖類型來實現,若讀取的是同一個數據的話,就容易發生問題。例如:
臟讀(Drity Read):某個事務已更新一份數據,另一個事務在此時讀取了同一份數據,由于某些原因,前一個RollBack了操作,則后一個事務所讀取的數據就會是不正確的。
不可重復讀(Non-repeatable read):在一個事務的兩次查詢之中數據不一致,這可能是兩次查詢過程中間插入了一個事務更新了原有的數據。
幻讀(Phantom Read):在一個事務的兩次查詢中數據筆數不一致,例如有一個事務查詢了幾列(Row)數據,而另一個事務卻在此時插入了新的幾列數據,先前的事務在接下來的查詢中,就會發現有幾列數據是它先前所沒有的。
在MySQL中,實現了這四種隔離級別,分別有可能產生問題如下所示:

2、InnoDB事務

通過在log buffer中快速記錄SQL語句對數據頁的修改,并持久化至redo log文件,需要恢復時利用Redo log恢復相應數據;
通過拷貝修改前的數據至undo buffer,并持久化至undo log。rollback時利用undo log還原數據;
通過行級鎖,和MVCC機制提高數據庫并發能力的同時降低了系統資源開銷;
事務的四個特性:原子性、一致性、隔離性、持久性?
隔離性通過鎖實現,原子性、一致性、持久性通過數據庫的redo和undo來完成。?
重做日志記錄了事務的行為,通過redo實現,保證了事務的完整性,但事務有時還需要撤銷,這時就需要產生undo。undo和redo正好相反,對于數據庫進行修改時,數據庫不但會產生redo,而且還會產生一定的undo,即使執行的事務或語句由于某種原因失敗了,或者如果用一條rollback語句請求回滾,就可以用這些undo信息將數據回滾到修改之前的樣子。

3、InnoDB鎖信息查詢

在INFORMATION_SCHEMA架構下添加了INNODB_TRX、INNODB_LOCKS、InnoDB_LOCK_WAITS。通過這三張表,可以更簡單地監控當前的事務并分析可能存在的鎖的問題。
INNODB_TRX由8個字段組成:?
trx_id:InnoDB存儲引擎內部唯一的事務ID?
trx_state:當前事務的狀態。?
trx_started:事務的開始時間。?
trx_requested_lock_id:等待事務的鎖ID。如trx_state的狀態為LOCK WAIT,那么該值代表當前的等待之前事務占用鎖資源的ID.若trx_state不是LOCK WAIT,則該值為NULL。?
trx_wait_started:事務等待開始的時間。?
trx_weight:事務的權重,反映了一個事務修改和鎖住的行數。在InnoDB存儲引擎中,當發生死鎖需要回滾時,InnoDB存儲會選擇該值最小的進行回滾。?
trx_mysql_thread_id:Mysql中的線程ID,SHOW PROCESSLIST顯示的結果。?
trx_query:事務運行的sql語句。?
通過select * from infomation_schema.INNODB_TRX;可查看?
INNODB_LOCKS表,該表由如下字段組成:?
lock_id:鎖的ID。?
lock_trx_id:事務ID。?
lock_mode:鎖的模式。?
lock_type:鎖的類型,表鎖還是行鎖。?
lock_table:要加鎖的表。?
lock_index:鎖的索引。?
lock_space:InnoDB存儲引擎表空間的ID號。?
lock_page:被鎖住的頁的數量。若是表鎖,則該值為NULL。?
lock_rec:被鎖住的行的數量。若是表鎖,則該值為NULL。?
lock_data:被鎖住的行的主鍵值。當是表鎖時,該值為NULL。?
通過select * from information_schema.INNODB_LOCK;可查看?
INNODB_LOCK_WAIT由4個字段組成:?
requesting_trx_id:申請鎖資源的事務ID。?
requesting_lock_id:申請的鎖的ID。?
blocking_trx_id:阻塞的鎖的ID。?
通過select * from information_schema.INNODB_LOCK_WAITS;可查看。?

4、鎖的算法

Record Lock:單行記錄上的鎖?
Gap Lock:間隙鎖,鎖定一個范圍,但不包含記錄本身?
Next-Key Lock:Gap Lock + Record Lock,鎖定一個范圍,并且鎖定記錄本身。

5、鎖的問題

丟失更新:經典的數據庫問題,當兩個或多個事務選擇同一行,然后基于最初選定的值更新該行時,會發生丟失更新問題。每個事務都不知道其它事務的存在。最后的更新將重寫由其它事務所做的更新,這將導致數據丟失。   
例:?
? ? 事務A和事務B同時修改某行的值,?
? ? ?1.事務A將數值改為1并提交?
? ? ?2.事務B將數值改為2并提交。?
? ? ?這時數據的值為2,事務A所做的更新將會丟失。?
? ? ?解決辦法:事務并行變串行操作,對更新操作加排他鎖。?
臟讀:一個事務讀到另一個事務未提交的更新數據,即讀到臟數據。?
例:?
? ? 1.Mary的原工資為1000, 財務人員將Mary的工資改為了8000(但未提交事務) ? ? ? ?
? ? 2.Mary讀取自己的工資 ,發現自己的工資變為了8000,歡天喜地!?
? ? 3.而財務發現操作有誤,回滾了事務,Mary的工資又變為了1000, 像這樣,Mary記取的工資數8000是一個臟數據。?
? ? 解決辦法:臟讀只有在事務隔離級別是Read Uncommitted的情況下才會出現,innoDB默認隔離級別是Repeatable Read,所以生產環境下不會出現臟讀。

不可重復讀:在同一個事務中,多次讀取同一數據,返回的結果有所不同。換句話說就是,后續讀取可以讀到另一個事務已提交的更新數據。相反"可重復讀"在同一事務多次讀取數據時,能夠保證所讀數據一樣,也就是后續讀取不能讀到另一事務已提交的更新數據。臟讀和不可重復讀的主要區別在于,臟讀是讀到未提交的數據,不可重復讀是讀到已提交的數據。
例:?
? ? ? 1.在事務1中,Mary 讀取了自己的工資為1000,操作并沒有完成?
? ? ? 2.在事務2中,這時財務人員修改了Mary的工資為2000,并提交了事務.?
? ? ? 3.在事務1中,Mary 再次讀取自己的工資時,工資變為了2000?
? ? ? 解決辦法:讀到已提交的數據,一般數據庫是可接受的,因此事務隔離級別一般設為Read Committed。Mysql InnoDB通過Next-Key Lock算法避免不可重復讀,默認隔離級別為Repeatable Read。
幻讀,事務中兩次讀取同一個范圍的數據,讀到的記錄條數不一致。

?

轉載于:https://my.oschina.net/peakfang/blog/2240253

總結

以上是生活随笔為你收集整理的MySQL 体系结构详细介绍的全部內容,希望文章能夠幫你解決所遇到的問題。

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

深夜免费福利网站 | 一区二区 不卡 | 久久你懂得 | 久久精品视频3 | 久久99国产精品免费网站 | 日本3级在线观看 | 九九热在线精品 | 亚洲1级片 | 人人澡人人添人人爽一区二区 | 国产日韩视频在线播放 | 在线观看一区二区精品 | 国产麻豆剧果冻传媒视频播放量 | 一本大道久久精品懂色aⅴ 五月婷社区 | 日韩美精品视频 | 波多野结依在线观看 | 国产一级视频在线免费观看 | 亚洲视频在线看 | 久操久| 欧美动漫一区二区三区 | 日韩在线观看a | 天天久久夜夜 | 国产成人亚洲在线观看 | 亚洲免费成人av电影 | 五月天最新网址 | 成人黄色小说网 | 日韩中文字幕亚洲一区二区va在线 | a v在线观看 | 香蕉97视频观看在线观看 | 麻豆一区在线观看 | 欧美无极色 | 天天操夜夜干 | 国产视频不卡 | 99久久精品免费看国产 | 91色在线观看视频 | 操操碰| 奇米网在线观看 | 色在线免费观看 | 蜜桃av久久久亚洲精品 | 蜜臀精品久久久久久蜜臀 | 国产精品一区二区三区免费视频 | 日韩欧美精品在线观看 | 中文字幕亚洲精品日韩 | 中文字幕在线日 | 免费三级骚 | 日本公妇在线观看高清 | 在线91色 | 天天干天天碰 | 国产美女视频 | 精品国产乱码一区二区三区在线 | 国内精品久久久久久久久久久久 | 中文字幕免费高清 | 五月婷婷丁香在线观看 | 亚洲午夜久久久久 | 激情欧美在线观看 | 国产精品一区二区你懂的 | 911香蕉| 五月开心六月伊人色婷婷 | 四虎国产精品成人免费4hu | 亚洲国产精选 | 韩国在线一区 | 99视屏| 亚洲深夜影院 | 免费99精品国产自在在线 | 啪一啪在线 | 91麻豆精品国产91 | 正在播放国产一区二区 | 久草在线资源观看 | 国产高清免费在线观看 | 久久公开免费视频 | 天天色成人网 | 久久久久成人精品免费播放动漫 | 五月天综合色激情 | 国产视频第二页 | 久久久久这里只有精品 | 国产亚洲在| 国产在线 一区二区三区 | 亚洲欧美精品一区 | 欧美性免费 | 91在线一区 | 狠狠狠狠狠狠操 | 亚洲精品午夜久久久 | 2018亚洲男人天堂 | 狠狠干在线 | 天天撸夜夜操 | 国内精品亚洲 | 亚洲精品白浆高清久久久久久 | 免费在线黄色av | 成人作爱视频 | 国产99久久久精品 | 成人国产电影在线观看 | 国产伦理久久精品久久久久_ | 午夜av在线播放 | 国产玖玖在线 | 亚洲精品小视频在线观看 | 91桃色免费视频 | 91在线精品一区二区 | 国产精品久久久777 成人手机在线视频 | 午夜天使| 久久综合欧美精品亚洲一区 | 婷婷视频导航 | 亚洲综合小说电影qvod | 996久久国产精品线观看 | 91成人免费看 | 国产精品自拍在线 | 国产精品福利无圣光在线一区 | 精品在线视频观看 | 亚洲不卡av一区二区三区 | 亚洲欧洲精品一区 | 亚洲精品五月 | 久草在线视频中文 | www激情com | 免费视频二区 | av在线日韩| 91免费观看视频在线 | 日本精品视频网站 | 国产精品6 | 亚洲2019精品| 免费观看性生活大片3 | 六月激情婷婷 | 二区精品视频 | 中文字幕韩在线第一页 | av成人免费网站 | 亚洲欧洲国产精品 | 91香蕉久久 | 久久精品一区二区三 | 超碰精品在线 | 美女网站色免费 | 欧美日韩一区二区三区免费视频 | 91视频中文字幕 | 高清一区二区三区 | 五月情婷婷 | 亚洲视频在线观看网站 | 欧美性色19p | 97视频在线 | 国产精品 999 | 夜夜躁狠狠躁日日躁 | 久99精品 | 免费在线一区二区 | 日韩成人精品在线观看 | 亚洲视频在线播放 | 天天爱天天操天天射 | 日本黄色一级电影 | 国产免费久久 | 国产精品1区2区3区在线观看 | 天天曰视频 | 97天天综合网 | 99精品国产福利在线观看免费 | 麻豆91精品 | 日本中文字幕在线免费观看 | 97偷拍视频 | 亚洲小视频在线观看 | 热久精品 | 亚洲精品人人 | 亚洲一区欧美激情 | 国产在线精品福利 | 麻豆视频在线播放 | 91色国产在线 | 免费91麻豆精品国产自产在线观看 | 久久国内视频 | 99精品国产在热久久下载 | 成人久久久精品国产乱码一区二区 | 98久9在线 | 免费 | 国产免费叼嘿网站免费 | 亚洲欧洲精品在线 | 成人一级片免费看 | 久久久久久久久艹 | 69国产精品视频免费观看 | 色婷婷激情四射 | 狠狠的干 | 又黄又爽的视频在线观看网站 | 欧美日韩不卡一区二区三区 | 在线影院av | 亚洲精品五月 | 久久激情视频网 | 久久99视频精品 | 中文字幕一区二区三区在线播放 | 六月丁香婷| 久草久| 国产精品理论片在线播放 | av色图天堂网 | 国产精品免费久久 | 在线国产视频 | 9在线观看免费 | 日韩欧美精选 | 在线观看色网 | 韩国av电影在线观看 | 精品国偷自产国产一区 | 久久亚洲电影 | 91在线免费视频观看 | 五月婷婷在线观看 | 亚洲第一区在线观看 | 一区二区三区中文字幕在线 | 日韩欧美网站 | 久久久精品国产一区二区电影四季 | 亚洲国产高清在线观看视频 | 国产美女免费观看 | 国产无套视频 | 亚洲丝袜一区二区 | 高清日韩一区二区 | 又污又黄的网站 | 最新日韩视频在线观看 | 福利视频 | 日韩精品一区二区三区不卡 | 精品国产伦一区二区三区观看说明 | 久久久精品综合 | 黄色精品一区二区 | 午夜在线日韩 | 久久理伦片 | 黄色大片中国 | 色a4yy| av成人免费在线看 | 在线视频你懂 | 国内精品在线看 | 草久视频在线观看 | 美女免费网视频 | 久久伊人91 | 国产亚洲久一区二区 | 在线观看视频 | 国产日产精品久久久久快鸭 | 激情网综合 | 天天干天天摸天天操 | 欧美成人xxxxxxxx | 欧美性生活大片 | 久久久国产精品一区二区中文 | 91九色最新地址 | 午夜三级毛片 | 精品国产欧美 | 欧美不卡视频在线 | 亚洲精品免费视频 | 亚洲黄色在线 | www视频在线免费观看 | 二区三区在线视频 | 日韩高清一二三区 | 四虎免费在线观看 | 青青河边草手机免费 | 天天综合视频在线观看 | 黄色av网站在线观看免费 | 玖玖视频在线 | 欧美亚洲一区二区在线 | 国产日产精品一区二区三区四区 | 中文字幕一区二区三区在线视频 | 久草在线免费电影 | 免费观看国产视频 | 亚洲激情五月 | 国产在线p | 免费在线观看一区二区三区 | 久久爽久久爽久久av东京爽 | 久久久精品国产一区二区电影四季 | 色香蕉在线 | 久久精品视频99 | 成人一区二区三区在线观看 | 操高跟美女 | 亚洲精品国产精品国自产观看 | 久久久久久久久久久成人 | 日本中文字幕网站 | av超碰在线| 亚洲天堂网在线播放 | 韩国av免费 | 国产黄色成人av | 婷婷 中文字幕 | 91亚洲影院| 国产小视频网站 | 久久久在线免费观看 | 欧美国产一区在线 | 国产麻豆视频网站 | 久久精品综合网 | 亚洲欧美在线视频免费 | 蜜桃av人人夜夜澡人人爽 | 一区二区三区日韩在线 | 中文字幕三区 | 在线视频日韩欧美 | aⅴ视频在线 | 成人h动漫精品一区二 | 99久久婷婷国产精品综合 | 99综合电影在线视频 | 亚洲精品成人av在线 | 久久综合久色欧美综合狠狠 | 久久精品成人欧美大片古装 | 欧美精品久久久久性色 | 丁香六月综合网 | 亚洲综合少妇 | 激情视频区 | 色人久久 | 激情视频在线观看网址 | 国产日韩高清在线 | 免费成人在线电影 | 久久国产精品久久久 | 成年人在线观看免费视频 | 500部大龄熟乱视频使用方法 | 亚洲免费不卡 | 亚洲精品婷婷 | 亚洲午夜大片 | 韩国av免费观看 | 国产精品久久久久久欧美 | 久久久精华网 | 麻豆免费在线视频 | 在线观看日本高清mv视频 | 日本字幕网 | 97福利视频 | 欧美aa在线 | 日韩av网址在线 | 亚洲精品午夜久久久久久久 | 国产黄色片在线 | 国产一区二区高清不卡 | 玖玖玖影院| 99热国产在线中文 | 成人av免费在线看 | 日韩精品一区二区三区免费观看 | 日韩中文字幕视频在线观看 | 欧美精品一区二区蜜臀亚洲 | 国产不卡视频在线 | 免费观看9x视频网站在线观看 | 西西www4444大胆在线 | 亚洲精品国产综合99久久夜夜嗨 | 激情电影在线观看 | 黄色电影在线免费观看 | 99久热在线精品视频观看 | 毛片黄色一级 | 九九免费在线观看视频 | 国际精品久久 | 日韩中文在线观看 | 国产精品综合久久久久 | 婷婷丁香久久五月婷婷 | 在线免费看黄网站 | 91传媒91久久久 | 麻豆系列在线观看 | 伊人久久婷婷 | 久久免费激情视频 | 午夜狠狠操 | 精品久久久久久一区二区里番 | 狠狠干免费 | 网站在线观看你们懂的 | 天天做日日做天天爽视频免费 | 精品日韩视频 | 天天色视频 | 成人免费观看完整版电影 | 久热超碰| 日狠狠| 丁香免费视频 | 最近最新中文字幕视频 | 国产精品毛片一区视频播不卡 | 99免费| 黄色三级网站在线观看 | 91最新视频在线观看 | 国产精品va在线观看入 | 天天操狠狠操夜夜操 | 亚洲国产精品久久久久婷婷884 | 99re热精品视频| 探花视频网站 | 亚洲无吗视频在线 | 国产精品国产三级国产 | 免费情缘 | 黄色一级性片 | 日韩一二三在线 | 91九色丨porny丨丰满6 | 天天躁天天狠天天透 | 国产在线高清 | 在线观看aaa | 狠色在线| www.日日操.com| 最新国产在线 | 黄色av大片 | 国产精品久久久免费看 | 国产在线不卡 | 免费观看一级一片 | 欧美成a人片在线观看久 | 在线观看色视频 | 99视频在线免费 | 国产精品乱码高清在线看 | av一区二区在线观看中文字幕 | 国产不卡免费av | 夜夜夜夜夜夜操 | 亚洲黄色高清 | 久久久久久久久久伊人 | 国产精品第一页在线 | 国产无遮挡猛进猛出免费软件 | 天天射天天干天天操 | 久久精品国亚洲 | 91在线色 | 国产精品久久久久一区二区 | 国产综合小视频 | 国产精品久久久久久久久婷婷 | 国产一级在线播放 | 五月婷婷影院 | 久久久久久国产精品美女 | 欧美一级性视频 | 日日夜夜人人天天 | 国产免费影院 | 久久99热这里只有精品国产 | 国产一区福利在线 | 久久久久欠精品国产毛片国产毛生 | 日韩午夜高清 | 激情久久久久 | 成年人黄色在线观看 | 国产高清免费在线播放 | 五月婷婷另类国产 | 黄色小视频在线观看免费 | 免费色黄| 国产在线精品观看 | 四虎影视成人永久免费观看亚洲欧美 | 999色视频 | 天天插视频| av千婊在线免费观看 | 午夜神马福利 | 国产精品青青 | 丰满少妇对白在线偷拍 | 黄色免费大全 | 午夜精品久久久久久99热明星 | 91视频免费看 | 999久久久精品视频 日韩高清www | 99色免费视频 | 国产午夜精品免费一区二区三区视频 | 午夜视频欧美 | 国产精品毛片一区二区在线看 | 欧美一级片免费播放 | 欧洲视频一区 | 91免费视频网站在线观看 | 操操操干干干 | www.夜夜爽| 不卡的av电影在线观看 | 国产一区二区三区在线免费观看 | 波多野结衣在线观看一区 | 国产精品12 | 激情伊人 | 一区二区精品在线 | 区一区二在线 | 久久艹在线| 日日夜夜精品免费观看 | 最新精品视频在线 | 免费看黄色小说的网站 | 91视频一8mav | 在线观看国产一区二区 | 日韩欧美大片免费观看 | 久久久久久久久久久久久国产精品 | 日韩精品一区二区三区在线播放 | 久久深夜 | 丁香花在线观看视频在线 | 亚洲精品中文在线资源 | 日本爱爱片 | 操操综合网 | 国产传媒一区在线 | 综合久久久久久 | 欧美三级高清 | 精品一二 | 夜添久久精品亚洲国产精品 | 天天曰视频 | 超级av在线 | 亚州人成在线播放 | 精品在线免费视频 | 日韩a在线看 | 日日操天天爽 | 国产精品专区h在线观看 | 久久综合五月 | 国产福利91精品一区二区三区 | 美女网站视频免费都是黄 | 久久国产精品网站 | 国产亚洲欧洲 | 日韩欧美一区二区不卡 | 午夜精品福利一区二区三区蜜桃 | 国产资源在线视频 | 欧美精品久久人人躁人人爽 | 在线观看蜜桃视频 | 97在线观看 | 久久高清免费视频 | 国产一区二三区好的 | 亚洲精品一区二区久 | 国产精品一区二区久久久久 | 香蕉视频在线免费 | 日本精品va在线观看 | 久久久久久久久久久久久久免费看 | 激情网婷婷 | av电影免费观看 | 亚洲伦理中文字幕 | 国产精品乱码久久久久久1区2区 | 2020天天干夜夜爽 | 久福利| 亚洲资源网 | 亚洲精品国产成人 | 欧美大片第1页 | 国产一区二区在线影院 | 国产精品麻豆果冻传媒在线播放 | 九色在线| 欧美精品在线观看免费 | 久久艹艹| 成人啊 v | 在线观看你懂的网站 | 亚洲视频免费视频 | 日韩精品2区 | 99久久电影| 亚洲免费av一区二区 | 久草爱 | 黄色亚洲在线 | 久久成年人 | 在线播放日韩 | 久视频在线播放 | 人人爽夜夜爽 | 精品国产中文字幕 | 久久久久久久99精品免费观看 | 成全在线视频免费观看 | 色婷婷在线视频 | 欧美日本不卡视频 | 久久久久久久久亚洲精品 | 91精品国产91 | 免费看一及片 | 日本天天操 | 国外调教视频网站 | 国产五码一区 | 天天看天天干 | 日韩videos | 欧美日韩国产在线一区 | 在线播放亚洲激情 | 久久久精品影视 | 黄色av电影免费观看 | 国产午夜在线 | 欧美aaa视频| 日韩欧美有码在线 | 亚洲国内精品在线 | 日韩精品一区二区三区外面 | 91在线入口| 中文字幕在线播放日韩 | 欧美激情视频一二三区 | 久久高清免费 | 99视频这里有精品 | 久久成人免费视频 | 国产美女久久久 | 国产精品久久久久久久久久尿 | 麻豆传媒视频在线播放 | 中文字幕免费成人 | 永久免费视频国产 | 久久深夜福利免费观看 | 国产精品美女网站 | 日韩欧美视频免费在线观看 | 亚洲伊人婷婷 | 国产97在线播放 | 一级淫片a | 在线观看视频你懂得 | 一本一本久久a久久 | av东方在线 | 综合精品在线 | 亚洲深夜影院 | 狠狠狠色丁香综合久久天下网 | 国产欧美精品在线观看 | 一区二区三区免费在线观看视频 | 青草视频网 | 国产美女精品视频免费观看 | 成人影视免费 | 国产美女视频网站 | 国产视频欧美视频 | 综合中文字幕 | 奇米网在线观看 | 欧美日韩国产欧美 | 欧美另类巨大 | 91av在线免费 | 久久精品99久久久久久2456 | 日批视频在线播放 | 久久亚洲日本 | 成人精品在线 | 日韩免费看的电影 | 又黄又刺激 | 国产剧在线观看片 | 激情五月在线 | 香蕉视频啪啪 | 激情丁香月| 免费在线a | 国产成人久久av免费高清密臂 | 亚洲精品国偷拍自产在线观看蜜桃 | 五月天天av | 欧美日韩一区二区三区在线免费观看 | 91毛片视频 | 国产裸体视频网站 | 2017狠狠干 | 成年人国产视频 | 99热这里是精品 | av超碰在线观看 | 射射射av | 99精品99 | 成人一区二区三区在线观看 | 日韩视频专区 | 久久免费视频99 | 亚洲国产97在线精品一区 | 精品亚洲视频在线观看 | 91欧美国产 | 国产手机在线 | 国产精品a成v人在线播放 | 日韩中文字幕视频在线观看 | 黄色成人在线观看 | 亚洲永久国产精品 | 在线观看不卡视频 | 国产涩涩网站 | 国产精品免费高清 | 一级欧美黄 | 最新亚洲视频 | 欧美天天综合网 | 亚洲精品视频免费在线观看 | 日本精品久久久久中文字幕 | 91在线日韩| 亚洲精品免费在线观看视频 | 精品一区二区av | 99re视频在线观看 | 成人一级片免费看 | 午夜国产一区二区三区四区 | 亚洲成人网av | 国产成人一区二区三区久久精品 | 色亚洲网| 97成人资源站 | av电影在线播放 | 久久久影院一区二区三区 | 精品国偷自产在线 | 成人免费在线观看电影 | 亚洲成aⅴ人在线观看 | 99tvdz@gmail.com| 91丨九色丨勾搭 | 国产天天爽| 欧美成人理伦片 | 亚洲国产日韩在线 | 色www免费视频 | 国产精品人人做人人爽人人添 | a天堂免费| 九九九在线 | 九月婷婷色 | 欧美视频国产视频 | 婷婷久月 | 中文字幕亚洲精品在线观看 | 中文字幕在线观看av | 国产高清免费视频 | 天海冀一区二区三区 | 在线视频在线观看 | 精品视频资源站 | 九九热1| 久久国产系列 | 狠狠狠狠狠狠狠 | 69精品久久| 一区二区三区日韩在线 | 欧美二区视频 | 999成人| 国内久久久久久 | 久久久久国产免费免费 | 中文字幕精品一区久久久久 | 国产精品久久二区 | 丁香花在线观看视频在线 | 久久开心激情 | 97精品超碰一区二区三区 | 国产三级久久久 | 亚洲另类在线视频 | 一区二区精品在线视频 | 午夜狠狠操 | 日韩日韩日韩日韩 | 日韩午夜视频在线观看 | 日韩欧美电影在线 | 国产一级91 | 色综合www | 美女久久久久久久久久久 | 久久精品国产精品亚洲 | 国产1区2区3区精品美女 | 99性视频 | 不卡的一区二区三区 | 国产婷婷精品av在线 | 国内精品久久久久久久久 | 国产一区91| 在线免费三级 | 狠狠色丁香婷婷综合 | 久久蜜臀av | 中文字幕色综合网 | 国产一级片不卡 | 天天干天天干天天射 | 亚洲另类久久 | 欧美性色黄大片在线观看 | 国产成本人视频在线观看 | 亚洲免费av电影 | 在线观看视频你懂 | 一级黄色在线视频 | 成人av免费播放 | 人人爽爽人人 | 欧美另类z0zx| 国产在线2020 | 亚洲另类人人澡 | 91精选 | 91免费观看网站 | 国产色综合天天综合网 | 日韩在线观看一区二区三区 | 一级免费黄视频 | 探花视频在线观看+在线播放 | 亚洲三级精品 | 日日躁夜夜躁xxxxaaaa | 97色在线观看免费视频 | 超碰在线亚洲 | 日操操 | 手机在线黄色网址 | 久久草 | 97综合网| 欧美日韩二三区 | 超碰免费公开 | 在线91av| 亚洲精品在线观看中文字幕 | 最近中文字幕国语免费高清6 | 精品a在线 | 色综合欧洲 | 欧美一级专区免费大片 | 99在线观看视频网站 | 青青草国产免费 | 爱色婷婷| 欧美精品乱码久久久久久 | 91专区在线观看 | 黄色的片子 | 日韩理论在线 | 午夜婷婷综合 | 久草视频免费播放 | 欧美一区二视频在线免费观看 | 91精品婷婷国产综合久久蝌蚪 | 国产福利精品一区二区 | 2019精品手机国产品在线 | 国产尤物在线视频 | 岛国一区在线 | 狠狠色丁香婷婷综合久小说久 | 香蕉色综合 | 久久免费激情视频 | 免费色av| 久精品视频在线观看 | 日本中文字幕在线看 | 日韩在线不卡av | 一区二区三区免费在线观看 | 91麻豆精品国产91久久久无限制版 | 色九九在线 | 国产精品久久网站 | 久久精品一区二区三区国产主播 | 午夜精品久久久久久久99 | 国产精品系列在线观看 | 婷婷久久丁香 | a色网站| 久久不见久久见免费影院 | 日韩中文字幕免费在线播放 | 精品一区在线 | 日韩美精品视频 | 日韩黄色大片在线观看 | 亚洲国产精品成人av | 日韩中文字幕视频在线 | 久草在线在线精品观看 | 久久精品视频国产 | 色就色,综合激情 | 中文久草 | 色网站黄 | 久久免费观看少妇a级毛片 久久久久成人免费 | 国产一区成人 | 在线视频免费观看 | 日韩国产在线观看 | 在线免费av网站 | 国产999精品久久久久久麻豆 | 中文字幕 影院 | 国产三级在线播放 | 精精国产xxxx视频在线播放 | 手机在线欧美 | 日本三级人妇 | 久久久www成人免费精品张筱雨 | 欧美在线观看视频一区二区 | 亚洲精品视频免费观看 | a黄色影院 | 精品国产欧美一区二区三区不卡 | 久久精品中文字幕一区二区三区 | 国产精品字幕 | 国产精品一区二区久久精品 | 日韩精品一区二区在线 | 久久成人一区 | 超碰97国产精品人人cao | 伊人色**天天综合婷婷 | 91精品在线观看入口 | 高清视频一区二区三区 | 久久久久久久国产精品影院 | 亚洲国产精品资源 | 亚洲日本精品视频 | 99在线观看 | 97精品国产97久久久久久免费 | 国产精品原创av片国产免费 | 久久国产精品久久国产精品 | 久久成人一区 | 久久免费一级片 | 天堂av在线免费观看 | 97香蕉视频| 国产中文字幕亚洲 | 国产精品一区二区三区99 | 久久99精品视频 | 国产高清视频在线播放一区 | 久久激情视频免费观看 | 久久成人黄色 | 二区三区中文字幕 | www.人人草| av免费播放 | 久久精品一区二区三区中文字幕 | 欧美日本不卡 | 日韩 在线a | 美女很黄免费网站 | 色中射| 亚洲电影自拍 | 久久人人爽人人 | 超碰在线99| 97电影在线看视频 | 亚洲最新视频在线 | 深夜视频久久 | 欧美精品一区二区三区四区在线 | 国产九色视频在线观看 | 午夜精品福利一区二区三区蜜桃 | 亚洲男男gⅴgay双龙 | 免费h视频 | av在线免费网站 | 香蕉97视频观看在线观看 | 国产精品不卡一区 | 狠狠狠色丁香婷婷综合激情 | 99久久一区| 久久香蕉一区 | 久久天天躁夜夜躁狠狠85麻豆 | 天天色官网 | 91cn国产在线| 在线观看免费黄色 | 欧美日韩中文在线观看 | 久久激情视频 久久 | 99精品国产免费久久久久久下载 | 国产成人精品一区二区三区 | 操操碰 | 日韩国产精品久久 | 98精品国产自产在线观看 | 毛片网站在线观看 | 欧美精品久久99 | 91精品国产一区 | 日韩欧美在线免费观看 | 国产精品影音先锋 | 99在线精品视频观看 | 久久久999精品视频 国产美女免费观看 | 高清av免费看 | 91精品国产高清 | 欧美在线视频a | 日韩中文字幕国产 | 一二三区在线 | 午夜在线免费观看 | 久久伊人八月婷婷综合激情 | 日本不卡一区二区 | 欧美日韩免费观看一区=区三区 | 日韩中文字幕国产精品 | 国产精品久久久久久久久久久久午夜片 | 亚洲另类xxxx| 黄色美女免费网站 | 999亚洲国产996395 | 一二三四精品 | 久久精品a | 国内精品福利视频 | 五月激情视频 | 国产精品综合av一区二区国产馆 | 欧美一级大片在线观看 | 国产精品一区二区三区在线免费观看 | 久久免费视频网 | 青青河边草观看完整版高清 | 中文字幕一区二区三区四区久久 | 亚洲五月激情 | 麻花豆传媒mv在线观看 | 99精品视频免费观看视频 | 狠狠操.com | 国产97在线视频 | 8x成人免费视频 | 日韩在线观看一区二区 | 国产成人精品亚洲精品 | 黄色免费大全 | 国产精品大片在线观看 | 日日干天天干 | 久日精品 | 久久国产精品99精国产 | 国产人成看黄久久久久久久久 | 一区中文字幕 | 国产麻豆果冻传媒在线观看 | 在线日韩视频 | 日韩激情视频在线观看 | 免费在线观看黄色网 | 国产精品亚洲片夜色在线 | 精品人妖videos欧美人妖 | 国产无遮挡又黄又爽在线观看 | 日日综合 | 色婷婷成人 | 色网站免费在线观看 | 一区二区三区免费网站 | 92中文资源在线 | 久久99国产精品二区护士 | 四虎海外影库www4hu | 日韩av在线看 | 青青河边草免费 | 99热精品国产一区二区在线观看 | 久久久午夜剧场 | 国产精品扒开做爽爽的视频 | 久久国产热 | 日日爽夜夜操 | 91精品久久久久久综合乱菊 | 欧美精品一区二区三区一线天视频 | 91精品一区二区在线观看 | 天天干天天插伊人网 | 一区二区视频电影在线观看 | 人人盈棋牌 | 91av美女| 国产高清免费av | 日本一区二区三区免费观看 | 人人爽人人澡 | 成人h在线| 免费在线观看成人小视频 | 亚洲精品一区二区精华 | 日韩在线观看一区 | 蜜臀av性久久久久蜜臀av | 日韩一区二区三免费高清在线观看 | 久久99久久99精品免观看粉嫩 | 丰满少妇在线 | 久久图| 国产精品欧美久久 | 91九色综合 | 在线观看亚洲成人 | 99精品欧美一区二区三区 | 天天色天天操天天爽 | 最新91在线视频 | 国产一区二区三区四区在线 | 美女福利视频一区二区 | 久草电影网 | 久久国产a | 丁香婷婷综合五月 | 国产成人亚洲在线观看 | 国产精品porn | 国产1区2区3区精品美女 | 国产精品 中文字幕 亚洲 欧美 | 不卡的一区二区三区 | 欧美色综合久久 | 日本狠狠干| 午夜10000| 99精品热 | 亚洲男男gaygay无套 | 国产精品区一区 | 欧美日韩在线精品一区二区 | 中文一区在线观看 | 国产第一页在线观看 | 天天干婷婷 | 婷婷激情五月综合 | 午夜狠狠干 | 国产在线不卡视频 | 色五月激情五月 | 成人av在线电影 | 91精品国产一区二区三区 | 国产日韩欧美视频 | 在线 影视 一区 | 黄色小说视频在线 | 一级国产视频 | 天天综合导航 | 国产精品一区二区吃奶在线观看 | 国产成人一区二区三区影院在线 | 特级a老妇做爰全过程 | 日本午夜在线亚洲.国产 | 狠狠色丁香久久综合网 | 综合av在线 | 国产精品1区2区3区在线观看 | 精品国产乱码一区二区三区在线 | 91在线超碰 | 麻豆视频免费网站 | 亚洲精品免费在线 | 我爱av激情网 | 久久少妇 | 日韩欧美一区二区三区在线 | 97视频资源| 免费视频色 | 高清精品在线 | 日韩精品久久久久久久电影竹菊 | 国产精品9999久久久久仙踪林 | 婷婷在线免费观看 | 免费观看国产精品视频 | 亚洲男男gaygayxxxgv| 亚洲人人射 | 91九色视频在线播放 | 天堂av一区二区 | 99精品在线看 | 久久国产精品色婷婷 | 天天操导航 | 欧美日韩在线视频一区二区 | 国产一区私人高清影院 | 激情伊人五月天久久综合 | 久久99热精品这里久久精品 | 精品久久精品 | 久久久久久久久久久久99 | 国产无套一区二区三区久久 | 91免费看片黄 | 久久99精品国产一区二区三区 | 日韩欧美视频 | 欧美一区二区三区在线视频观看 | 日韩精品一区二区三区高清免费 | 国产精品国产三级国产不产一地 | 国产精品久久99精品毛片三a | 成人91在线观看 | 亚洲精品美女在线 | 国产 在线 高清 精品 | 激情综合久久 | 韩国一区二区三区视频 | 日本精品久久久久久 | 99视频在线观看视频 | 99re6热在线精品视频 | 免费99精品国产自在在线 | 久精品一区 | 免费高清在线观看成人 | 免费观看的av | 国产色视频网站2 | 麻豆视频一区二区 |