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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

MySQL 深潜 - 一文详解 MySQL Data Dictionary

發(fā)布時間:2024/8/23 数据库 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MySQL 深潜 - 一文详解 MySQL Data Dictionary 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

簡介:?在 MySQL 8.0 之前,Server 層和存儲引擎(比如 InnoDB)會各自保留一份元數(shù)據(jù)(schema name, table definition 等),不僅在信息存儲上有著重復(fù)冗余,而且可能存在兩者之間存儲的元數(shù)據(jù)不同步的現(xiàn)象。不同存儲引擎之間(比如 InnoDB 和 MyISAM)有著不同的元數(shù)據(jù)存儲形式和位置(.FRM, .PAR, .OPT, .TRN and .TRG files),造成了元數(shù)據(jù)無法統(tǒng)一管理。此外,將元數(shù)據(jù)存放在不支持事務(wù)的表和文件中,使得 DDL 變更不會是原子的,crash recovery 也會成為一個問題。

作者 | 泊歌
來源 | 阿里技術(shù)公眾號

一 背景

在 MySQL 8.0 之前,Server 層和存儲引擎(比如 InnoDB)會各自保留一份元數(shù)據(jù)(schema name, table definition 等),不僅在信息存儲上有著重復(fù)冗余,而且可能存在兩者之間存儲的元數(shù)據(jù)不同步的現(xiàn)象。不同存儲引擎之間(比如 InnoDB 和 MyISAM)有著不同的元數(shù)據(jù)存儲形式和位置(.FRM, .PAR, .OPT, .TRN and .TRG files),造成了元數(shù)據(jù)無法統(tǒng)一管理。此外,將元數(shù)據(jù)存放在不支持事務(wù)的表和文件中,使得 DDL 變更不會是原子的,crash recovery 也會成為一個問題。

為了解決上述問題,MySQL 在 8.0 中引入了 data dictionary 來進行 Server 層和不同引擎間統(tǒng)一的元數(shù)據(jù)管理,這些元數(shù)據(jù)都存儲在 InnoDB 引擎的表中,自然的支持原子性,且 Server 層和引擎層共享一份元數(shù)據(jù),不再存在不同步的問題。

二 整體架構(gòu)

data dictionary 提供了統(tǒng)一的 client API 供 Server 層和引擎層使用,包含對元數(shù)據(jù)訪問的 acquire() / drop() / store() / update() 基本操作。底層實現(xiàn)了對 InnoDB 引擎存放的數(shù)據(jù)字典表的讀寫操作,包含開表(open table)、構(gòu)造主鍵、主鍵查找等過程。client 和底層存儲之間通過兩級緩存來加速對元數(shù)據(jù)對象的內(nèi)存訪問,兩級緩存都是基于 hash map 實現(xiàn)的,一層緩存是 local 的,由每個 client(每個線程對應(yīng)一個 client)獨享;二級緩存是 share 的,為所有線程共享的全局緩存。下面我將對 data dictionary 的數(shù)據(jù)結(jié)構(gòu)和實現(xiàn)架構(gòu)做重點介紹,也會分享一個支持原子的 DDL 在 data dictionary 層面的實現(xiàn)過程。

三 metadata 在內(nèi)存和引擎層面的表示

data dictionary (簡稱DD)中的數(shù)據(jù)結(jié)構(gòu)是完全按照多態(tài)、接口/實現(xiàn)的形式來組織的,接口通過純虛類來實現(xiàn)(比如表示一個表的 Table),其實現(xiàn)類(Table_impl)為接口類的名字加 _impl 后綴。下面以 Table_impl 為例介紹一個表的元數(shù)據(jù)對象在 DD cache 中的表示。

1 Table_impl

Table_impl 類中包含一個表相關(guān)的元數(shù)據(jù)屬性定義,比如下列最基本引擎類型、comment、分區(qū)類型、分區(qū)表達式等。

class Table_impl : public Abstract_table_impl, virtual public Table {// Fields.Object_id m_se_private_id;String_type m_engine;String_type m_comment;// - Partitioning related fields.enum_partition_type m_partition_type;String_type m_partition_expression;String_type m_partition_expression_utf8;enum_default_partitioning m_default_partitioning;// References to tightly-coupled objects.Index_collection m_indexes;Foreign_key_collection m_foreign_keys;Foreign_key_parent_collection m_foreign_key_parents;Partition_collection m_partitions;Partition_leaf_vector m_leaf_partitions;Trigger_collection m_triggers;Check_constraint_collection m_check_constraints; };

Table_impl 也是代碼實現(xiàn)中 client 最常訪問的內(nèi)存結(jié)構(gòu),開發(fā)者想要增加新的屬性,直接在這個類中添加和初始化即可,但是僅僅如此不會自動將該屬性持久化到存儲引擎中。除了上述簡單屬性之外,還包括與一個表相關(guān)的復(fù)雜屬性,比如列信息、索引信息、分區(qū)信息等,這些復(fù)雜屬性都是存在其他的 DD 表中,在內(nèi)存 cache 中也都會集成到 Table_impl 對象里。

從 Abstract_table_impl 繼承來的 Collection m_columns 就表示表的所有列集合,集合中的每一個對象 Column_impl 表示該列的元信息,包括數(shù)值類型、是否為 NULL、是否自增、默認值等。同時也包含指向 Abstract_table_impl 的指針,將該列與其對應(yīng)的表聯(lián)系起來。

class Column_impl : public Entity_object_impl, public Column {// Fields.enum_column_types m_type;bool m_is_nullable;bool m_is_zerofill;bool m_is_unsigned;bool m_is_auto_increment;bool m_is_virtual;bool m_default_value_null;String_type m_default_value;// References to tightly-coupled objects.Abstract_table_impl *m_table; };

此外 Table_impl 中也包含所有分區(qū)的元信息集合 Collection m_partitions,存放每個分區(qū)的 id、引擎、選項、范圍值、父子分區(qū)等。

class Partition_impl : public Entity_object_impl, public Partition {// Fields.Object_id m_parent_partition_id;uint m_number;Object_id m_se_private_id;String_type m_description_utf8;String_type m_engine;String_type m_comment;Properties_impl m_options;Properties_impl m_se_private_data;// References to tightly-coupled objects.Table_impl *m_table;const Partition *m_parent;Partition_values m_values;Partition_indexes m_indexes;Table::Partition_collection m_sub_partitions; };

因此獲取到一個表的 Table_impl,我們就可以獲取到與這個表相關(guān)聯(lián)的所有元信息。

2 Table_impl 是如何持久化存儲和訪問的

DD cache 中的元信息都是在 DD tables 中讀取和存儲的,每個表存放一類元信息的基本屬性字段,比如 tables、columns、indexes等,他們之間通過主外鍵關(guān)聯(lián)連接起來,組成 Table_impl 的全部元信息。DD tables 存放在 mysql 的表空間中,在 release 版本對用戶隱藏,只能通過 INFORMATION SCHEMA 的部分視圖查看;在 debug 版本可通過設(shè)置 SET debug='+d,skip_dd_table_access_check' 直接訪問查看。比如:

root@localhost:test 8.0.18-debug> SHOW CREATE TABLE mysql.tables\G *************************< strong> 1. row < /strong>*************************Table: tables Create Table: CREATE TABLE `tables` (`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,`schema_id` bigint(20) unsigned NOT NULL,`name` varchar(64) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,`type` enum('BASE TABLE','VIEW','SYSTEM VIEW') COLLATE utf8_bin NOT NULL,`engine` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,`mysql_version_id` int(10) unsigned NOT NULL,`row_format` enum('Fixed','Dynamic','Compressed','Redundant','Compact','Paged') COLLATE utf8_bin DEFAULT NULL,`collation_id` bigint(20) unsigned DEFAULT NULL,`comment` varchar(2048) COLLATE utf8_bin NOT NULL,`hidden` enum('Visible','System','SE','DDL') COLLATE utf8_bin NOT NULL,`options` mediumtext COLLATE utf8_bin,`se_private_data` mediumtext COLLATE utf8_bin,`se_private_id` bigint(20) unsigned DEFAULT NULL,`tablespace_id` bigint(20) unsigned DEFAULT NULL,`partition_type` enum('HASH','KEY_51','KEY_55','LINEAR_HASH','LINEAR_KEY_51','LINEAR_KEY_55','RANGE','LIST','RANGE_COLUMNS','LIST_COLUMNS','AUTO','AUTO_LINEAR') COLLATE utf8_bin DEFAULT NULL,`partition_expression` varchar(2048) COLLATE utf8_bin DEFAULT NULL,`partition_expression_utf8` varchar(2048) COLLATE utf8_bin DEFAULT NULL,`default_partitioning` enum('NO','YES','NUMBER') COLLATE utf8_bin DEFAULT NULL,`subpartition_type` enum('HASH','KEY_51','KEY_55','LINEAR_HASH','LINEAR_KEY_51','LINEAR_KEY_55') COLLATE utf8_bin DEFAULT NULL,`subpartition_expression` varchar(2048) COLLATE utf8_bin DEFAULT NULL,`subpartition_expression_utf8` varchar(2048) COLLATE utf8_bin DEFAULT NULL,`default_subpartitioning` enum('NO','YES','NUMBER') COLLATE utf8_bin DEFAULT NULL,`created` timestamp NOT NULL,`last_altered` timestamp NOT NULL,`view_definition` longblob,`view_definition_utf8` longtext COLLATE utf8_bin,`view_check_option` enum('NONE','LOCAL','CASCADED') COLLATE utf8_bin DEFAULT NULL,`view_is_updatable` enum('NO','YES') COLLATE utf8_bin DEFAULT NULL,`view_algorithm` enum('UNDEFINED','TEMPTABLE','MERGE') COLLATE utf8_bin DEFAULT NULL,`view_security_type` enum('DEFAULT','INVOKER','DEFINER') COLLATE utf8_bin DEFAULT NULL,`view_definer` varchar(288) COLLATE utf8_bin DEFAULT NULL,`view_client_collation_id` bigint(20) unsigned DEFAULT NULL,`view_connection_collation_id` bigint(20) unsigned DEFAULT NULL,`view_column_names` longtext COLLATE utf8_bin,`last_checked_for_upgrade_version_id` int(10) unsigned NOT NULL,PRIMARY KEY (`id`),UNIQUE KEY `schema_id` (`schema_id`,`name`),UNIQUE KEY `engine` (`engine`,`se_private_id`),KEY `engine_2` (`engine`),KEY `collation_id` (`collation_id`),KEY `tablespace_id` (`tablespace_id`),KEY `type` (`type`),KEY `view_client_collation_id` (`view_client_collation_id`),KEY `view_connection_collation_id` (`view_connection_collation_id`),CONSTRAINT `tables_ibfk_1` FOREIGN KEY (`schema_id`) REFERENCES `schemata` (`id`),CONSTRAINT `tables_ibfk_2` FOREIGN KEY (`collation_id`) REFERENCES `collations` (`id`),CONSTRAINT `tables_ibfk_3` FOREIGN KEY (`tablespace_id`) REFERENCES `tablespaces` (`id`),CONSTRAINT `tables_ibfk_4` FOREIGN KEY (`view_client_collation_id`) REFERENCES `collations` (`id`),CONSTRAINT `tables_ibfk_5` FOREIGN KEY (`view_connection_collation_id`) REFERENCES `collations` (`id`) ) /*!50100 TABLESPACE `mysql` */ ENGINE=InnoDB AUTO_INCREMENT=549 DEFAULT CHARSET=utf8 COLLATE=utf8_bin STATS_PERSISTENT=0 ROW_FORMAT=DYNAMIC 1 row in set (0.00 sec)

通過以上 mysql.tables 的表定義可以獲得存儲引擎中實際存儲的元信息字段。DD tables 包括 tables、schemata、columns、column_type_elements、indexes、index_column_usage、foreign_keys、foreign_key_column_usage、table_partitions、table_partition_values、index_partitions、triggers、check_constraints、view_table_usage、view_routine_usage 等。

Storage_adapter 是訪問持久存儲引擎的處理類,包括 get() / drop() / store() 等接口。當(dāng)初次獲取一個表的元信息時,會調(diào)用 Storage_adapter::get() 接口,處理過程如下:

Storage_adapter::get()// 根據(jù)訪問對象類型,將依賴的 DD tables 加入到 open table list 中|--Open_dictionary_tables_ctx::register_tables< T>() |--Table_impl::register_tables()|--Open_dictionary_tables_ctx::open_tables() // 調(diào)用 Server 層接口打開所有表|--Raw_table::find_record() // 直接調(diào)用 handler 接口根據(jù)傳入的 key(比如表名)查找記錄|--handler::ha_index_read_idx_map() // index read// 從讀取到的 record 中解析出對應(yīng)屬性,調(diào)用 field[field_no]->val_xx() 函數(shù)|--Table_impl::restore_attributes()// 通過調(diào)用 restore_children() 函數(shù)從與該對象關(guān)聯(lián)的其他 DD 表中根據(jù)主外鍵讀取完整的元數(shù)據(jù)定義|--Table_impl::restore_children() |--返回完整的 DD cache 對象

上述在獲取列和屬性的對應(yīng)關(guān)系時,根據(jù)的是 Tables 對象的枚舉類型下標(biāo),按順序包含了該類型 DD 表中的所有列,與上述表定義是一一對應(yīng)的。因此如果我們需要新增 DD 表中存儲的列時,也需要往下面枚舉類型定義中加入對應(yīng)的列,并且在 Table_impl::restore_attributes() / Table_impl::store_attributes() 函數(shù)中添加對新增列的讀取和存儲操作。

class Tables : public Entity_object_table_impl {enum enum_fields {FIELD_ID,FIELD_SCHEMA_ID,FIELD_NAME,FIELD_TYPE,FIELD_ENGINE,FIELD_MYSQL_VERSION_ID,FIELD_ROW_FORMAT,FIELD_COLLATION_ID,FIELD_COMMENT,FIELD_HIDDEN,FIELD_OPTIONS,FIELD_SE_PRIVATE_DATA,FIELD_SE_PRIVATE_ID,FIELD_TABLESPACE_ID,FIELD_PARTITION_TYPE,FIELD_PARTITION_EXPRESSION,FIELD_PARTITION_EXPRESSION_UTF8,FIELD_DEFAULT_PARTITIONING,FIELD_SUBPARTITION_TYPE,FIELD_SUBPARTITION_EXPRESSION,FIELD_SUBPARTITION_EXPRESSION_UTF8,FIELD_DEFAULT_SUBPARTITIONING,FIELD_CREATED,FIELD_LAST_ALTERED,FIELD_VIEW_DEFINITION,FIELD_VIEW_DEFINITION_UTF8,FIELD_VIEW_CHECK_OPTION,FIELD_VIEW_IS_UPDATABLE,FIELD_VIEW_ALGORITHM,FIELD_VIEW_SECURITY_TYPE,FIELD_VIEW_DEFINER,FIELD_VIEW_CLIENT_COLLATION_ID,FIELD_VIEW_CONNECTION_COLLATION_ID,FIELD_VIEW_COLUMN_NAMES,FIELD_LAST_CHECKED_FOR_UPGRADE_VERSION_ID,NUMBER_OF_FIELDS // Always keep this entry at the end of the enum}; };

四 多級緩存

為了避免每次對元數(shù)據(jù)對象的訪問都需要去持久存儲中讀取多個表的數(shù)據(jù),使生成的元數(shù)據(jù)內(nèi)存對象能夠復(fù)用,data dictionary 實現(xiàn)了兩級緩存的架構(gòu),第一級是 client local 獨享的,核心數(shù)據(jù)結(jié)構(gòu)為 Local_multi_map,用于加速在當(dāng)前線程中對于相同對象的重復(fù)訪問,同時在當(dāng)前線程涉及對 DD 對象的修改(DDL)時管理 committed、uncommitted、dropped 幾種狀態(tài)的對象。第二級就是比較常見的多線程共享的緩存,核心數(shù)據(jù)結(jié)構(gòu)為 Shared_multi_map,包含著所有線程都可以訪問到其中的對象,所以會做并發(fā)控制的處理。

兩級緩存的底層實現(xiàn)很統(tǒng)一,都是基于 hash map 的,目前的實現(xiàn)是 std::map。Local_multi_map 和 Shared_multi_map都是派生于 Multi_map_base。

之所以叫 Multi_map_base,是因為其中包含了多個 hash map,適合用戶根據(jù)不同類型的 key 來獲取緩存對象,比如 id、name、DD cache 本身等。Element_map 就是對 std::map 的一個封裝,key 為前述幾種類型之一,value 為 DD cache 對象指針的一個封裝 Cache_element,封裝了對象本身和引用計數(shù)。

Multi_map_base 對象實現(xiàn)了豐富的 m_map() 模板函數(shù),可以很方便的根據(jù) key 的類型不同選擇到對應(yīng)的 hash map。

Shared_multi_map 與 Local_multi_map 的不同在于,Shared_multi_map 還引入了一組 latch 與 condition variable 用于并發(fā)訪問中的線程同步與 cache miss 的處理。同時對 Cache_element 對象做了內(nèi)存管理和復(fù)用的相關(guān)能力。

1 局部緩存

一級緩存位于每個 Dictionary_client (每個 client 與線程 THD 一一對應(yīng))內(nèi)部,由不同狀態(tài)(committed、uncommitted、dropped)的 Object_registry 組成。每個 Object_registry 由不同元數(shù)據(jù)類型的 Local_multi_map 組成,用于管理不同類型的對象(比如表、schema、字符集、統(tǒng)計數(shù)據(jù)、Event 等)緩存。

其中 committed 狀態(tài)的 registry 就是我們訪問數(shù)據(jù)庫中已經(jīng)存在的對象時,將其 DD cache object 存放在局部緩存中的位置。uncommitted 和 dropped 狀態(tài)的存在,主要用于當(dāng)前連接執(zhí)行的是一條 DDL 語句,在執(zhí)行過程中會將要 drop 的舊表對應(yīng)的 DD object 存放在 dropped 的 registry 中,將還未提交的新表定義對應(yīng)的 DD object 存放在 uncommitted 的 registry 中,用于執(zhí)行狀態(tài)的區(qū)分。

2 共享緩存

共享緩存是 Server 全局唯一的,使用單例 Shared_dictionary_cache 來實現(xiàn)。與上述局部緩存中 Object_registry 相似,Shared_dictionary_cache 也需要包含針對各種類型對象的緩存。與 Multi_map_base 實現(xiàn)根據(jù) key 類型自動選取對應(yīng) hash map 的模版函數(shù)相似,Object_registry 和 Shared_dictionary_cache 也都實現(xiàn)了根據(jù)訪問對象的類型選擇對應(yīng)緩存的 m_map() 函數(shù),能夠很大程度上簡化函數(shù)調(diào)用。

與局部緩存可以無鎖訪問 hash map 不同,共享緩存在獲取 / 釋放 DD cache object 時都需要加鎖來完成引用計數(shù)的調(diào)整和防止訪問過程中被 destroy 掉。

3 緩存獲取過程

用戶通過 client 調(diào)用元數(shù)據(jù)對象獲取函數(shù),傳入元數(shù)據(jù)的 name 字符串,然后構(gòu)建出對應(yīng)的 name key,通過 key 去緩存中獲取元數(shù)據(jù)對象。獲取的整體過程就是一級局部緩存 -> 二級共享緩存 -> 存儲引擎。

// Get a dictionary object. template < typename K, typename T> bool Dictionary_client::acquire(const K &key, const T **object,bool *local_committed,bool *local_uncommitted) {// Lookup in registry of uncommitted objectsT *uncommitted_object = nullptr;bool dropped = false;acquire_uncommitted(key, &uncommitted_object, &dropped);...// Lookup in the registry of committed objects.Cache_element< T> *element = NULL;m_registry_committed.get(key, &element);...// Get the object from the shared cache.if (Shared_dictionary_cache::instance()->get(m_thd, key, &element)) {DBUG_ASSERT(m_thd->is_system_thread() || m_thd->killed ||m_thd->is_error());return true;} }

在一級局部緩存中獲取時,會優(yōu)先去 uncommitted 和 dropped 的 registry 獲取,因為這兩者是最新的修改,同時判斷獲取對象是否已經(jīng)被 dropped。之后再會去 committed 的 registry 獲取,如果獲取到就直接返回,反之則去二級共享緩存中嘗試獲取。

Cache miss

共享緩存的獲取過程在 Shared_multi_map::get() 中實現(xiàn)。就是加鎖后直接的 hash map 查找,如果存在則給引用計數(shù)遞增后返回;如果不存在,就會進入到 cache miss 的處理過程,調(diào)用上面介紹的存儲引擎的接口 Storage_adapter::get() 從 DD tables 中讀取,創(chuàng)建出來后依次加入共享緩存和局部緩存 committed registry 中。

由于開表訪問 DD tables,構(gòu)建 DD cache object 的過程相對耗時,不會一直給 Shared_multi_map 加鎖,因此需要對并發(fā)訪問的 client 做并發(fā)控制。DD 的實現(xiàn)方法是第一個訪問的 client 會將 cache miss 的 key 加入到 Shared_multi_map的 m_missed 集合中,這個集合包含著現(xiàn)在所有正在讀取元數(shù)據(jù)的對象 key 值。之后訪問的 client 看到目標(biāo) key 值在 m_missed 集合中就會進入等待。

當(dāng)?shù)谝粋€ client 獲取到完整的 DD cache object,加入到共享緩存之后,移除 m_missed 集合中對應(yīng)的 key,并通過廣播的方式通知之前等待的線程重新在共享緩存中獲取。

五 Auto_releaser

Auto_releaser 是一個 RAII 類,基本上在使用 client 訪問 DD cache 前都會做一個封裝,保證在整個 Auto_releaser 對象存在的作用域內(nèi),所獲取到的 DD cache 對象都會在局部緩存中存在不釋放。Auto_releaser 包含需要 release 的對象 registry,通過 auto_release() 函數(shù)收集著當(dāng)前 client 從共享緩存中獲取到的 DD cache 對象,在超出其作用域進行析構(gòu)時自動 release 對象,從局部緩存 committed 的 registry 中移除對象,并且在共享緩存中的引用計數(shù)遞減。

在嵌套函數(shù)調(diào)用過程中,可能在每一層都會有自己的 Auto_releaser,他們之間通過一個簡單的鏈表指針連接起來。在函數(shù)返回時將本層需要 release 的對象 release 掉,需要返回給上層使用的 DD cache 對象交給上層的 Auto_releaser 來負責(zé)。通過 transfer_release() 可以在不同層次的 Auto_releaser 對象間轉(zhuǎn)移需要 release 的對象,可以靈活的指定不再需要 DD cache 對象的層次。

六 應(yīng)用舉例:inplace DDL 過程中對 DD 的操作

在 MySQL inplace DDL 執(zhí)行過程中,會獲取當(dāng)前表定義的 DD cache 對象,然后根據(jù)實際的 DDL 操作內(nèi)容構(gòu)造出新對應(yīng)的 DD 對象。然后依次調(diào)用 client 的接口完成對當(dāng)前表定義的刪除和新表定義的存儲。

{ if (thd->dd_client()->drop(table_def)) goto cleanup2;table_def = nullptr;DEBUG_SYNC_C("alter_table_after_dd_client_drop");// Reset check constraint's mode.reset_check_constraints_alter_mode(altered_table_def);if ((db_type->flags & HTON_SUPPORTS_ATOMIC_DDL)) {/*For engines supporting atomic DDL we have delayed storing newtable definition in the data-dictionary so far in order to avoidconflicts between old and new definitions on foreign key names.Since the old table definition is gone we can safely store newdefinition now.*/if (thd->dd_client()->store(altered_table_def)) goto cleanup2;} }.../*If the SE failed to commit the transaction, we must rollback themodified dictionary objects to make sure the DD cache, the DDtables and the state in the SE stay in sync. */ if (res)thd->dd_client()->rollback_modified_objects(); elsethd->dd_client()->commit_modified_objects();

在 drop() 過程中,會將當(dāng)前表定義的 DD cache 對象對應(yīng)的數(shù)據(jù)從存儲引擎中刪除,然后從共享緩存中移除(這要求當(dāng)前對象的引用計數(shù)僅為1,即只有當(dāng)前線程使用),之后加入到 dropped 局部緩存中。

在 store() 過程中,會將新的表定義寫入存儲引擎,并且將對應(yīng)的 DD cache 對象加入 uncommitted 緩存中。

在事務(wù)提交或者回滾后,client 將局部緩存中的 dropped 和 uncommitted registry 清除。由于 InnoDB 引擎支持事務(wù),持久存儲層面的數(shù)據(jù)會通過存儲引擎的接口提交或回滾,不需要 client 額外操作。

在這個過程中,由于 MDL(metadata lock) 的存在,不會有其他的線程嘗試訪問正在變更對象的 DD object,所以可以安全的對 Shared_dictionary_cache 進行操作。當(dāng) DDL 操作結(jié)束(提交或回滾),釋放 EXCLUSIVE 鎖之后,新的線程就可以重新從存儲引擎上加載新的表定義。

七 總結(jié)

MySQL data dictionary 解決了背景所述舊架構(gòu)中的諸多問題,使元數(shù)據(jù)的訪問更加安全,存儲和管理成本更低。架構(gòu)實現(xiàn)非常的精巧,通過大量的模版類實現(xiàn)使得代碼能夠最大程度上被復(fù)用。多層緩存的實現(xiàn)也能顯著提升訪問效率。通過 client 簡潔的接口,讓 Server 層和存儲層能在任何地方方便的訪問元數(shù)據(jù)。

原文鏈接

本文為阿里云原創(chuàng)內(nèi)容,未經(jīng)允許不得轉(zhuǎn)載。?

總結(jié)

以上是生活随笔為你收集整理的MySQL 深潜 - 一文详解 MySQL Data Dictionary的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

天天色棕合合合合合合 | 伊人成人激情 | 中文字幕在线观看一区 | 特级a毛片 | 国产精品久久久久av免费 | 一区二区三区免费播放 | 亚洲特级毛片 | 九九热免费在线观看 | 精品成人在线 | 人人爱夜夜操 | 国产一区精品在线观看 | 欧美色综合天天久久综合精品 | 色婷婷婷 | 国产专区视频在线 | 99精品视频精品精品视频 | 西西44人体做爰大胆视频 | 日本久久不卡视频 | 成年人在线电影 | 99精品欧美一区二区三区 | 国产精品第一视频 | 成人免费观看在线视频 | 97夜夜澡人人爽人人免费 | 久久亚洲欧美日韩精品专区 | 97国产小视频 | 91精品国产福利 | 香蕉视频在线免费 | 亚洲欧美精品一区 | 亚洲闷骚少妇在线观看网站 | 亚洲每日更新 | 久久久色| 成人午夜精品福利免费 | 亚洲乱码中文字幕综合 | 天天爱天天草 | 午夜视频久久久 | 色综合中文字幕 | 国产精品av电影 | 精品久久久久久亚洲综合网站 | 九九热.com | 久久理论电影网 | 亚洲精品玖玖玖av在线看 | 综合婷婷丁香 | 欧美精品久久久久久久久老牛影院 | 国产视频一区二区在线播放 | 中文字幕视频免费观看 | 国产福利不卡视频 | 欧美色图p | 亚洲精品中文字幕在线观看 | 狠狠躁天天躁 | 亚洲成av人影片在线观看 | 国产成人精品一区二区三区福利 | 精品a在线| 久久这里只有精品视频首页 | 在线国产视频 | av高清在线观看 | 日韩精品免费一区二区三区 | 国产成人三级一区二区在线观看一 | 日韩视频免费在线观看 | 久久精品这里热有精品 | 毛片视频网址 | 91成人在线视频观看 | 成人一级影视 | 中文字幕在线网址 | 婷婷久久婷婷 | 免费日韩 精品中文字幕视频在线 | 久久精品播放 | 最近日本mv字幕免费观看 | 亚洲日日日 | 91麻豆精品国产自产 | 97在线视频观看 | 欧美特一级片 | 亚洲在线视频免费观看 | 97国产精品视频 | 成人午夜网址 | av在线免费播放网站 | 色播五月婷婷 | 久久精品这里热有精品 | 中文字幕频道 | 99久久婷婷国产综合精品 | 天天躁日日躁狠狠躁 | 天堂av免费| 天天插夜夜操 | 日日操天天射 | 国产一二三精品 | 9992tv成人免费看片 | 精品国产电影 | 97国产一区| 色偷偷88888欧美精品久久 | 久久久久久综合网天天 | 婷婷伊人综合亚洲综合网 | 欧美精品一区在线发布 | 久久精品国产亚洲a | 一级黄色在线视频 | 久久久久久蜜av免费网站 | 精品国产乱码一区二 | 午夜精品一区二区三区在线观看 | 爱色婷婷 | 国产伦精品一区二区三区四区视频 | 六月丁香六月婷婷 | 国产精品永久免费 | 国产精品中文 | 狠狠色丁香久久综合网 | 国产97av| 国产精品欧美日韩在线观看 | 色综合久久中文字幕综合网 | 97超级碰碰碰视频在线观看 | 国产成人一二片 | 91刺激视频 | 国产专区免费 | 国产成人三级一区二区在线观看一 | 午夜视频在线观看网站 | 中文字幕不卡在线88 | 美女视频黄频大全免费 | 日韩欧美在线一区 | 99久久精品无码一区二区毛片 | 黄av在线| 五月激情站 | 97电影在线看视频 | 美女露久久 | 99视频国产精品免费观看 | 欧美成人va | 日本久久久久久久久久久 | 欧美做受高潮1 | 天天爽天天射 | 久久夜色精品亚洲噜噜国4 午夜视频在线观看欧美 | 国产高清免费在线观看 | 九九在线视频免费观看 | 国产精品久久久久久久久毛片 | 国产精品99免费看 | 免费看片成人 | 中文在线a∨在线 | 亚洲精品视频网站在线观看 | 日韩中文久久 | 国产免费观看高清完整版 | 丁香六月在线观看 | 国产精品区二区三区日本 | 99精品国产免费久久久久久下载 | 鲁一鲁影院 | 久久人人爽人人人人片 | 国产精品久久久久久妇 | 久久夜色精品国产欧美一区麻豆 | 91麻豆精品国产自产在线游戏 | 97视频中文字幕 | 久久在线视频精品 | 天天操导航 | 在线午夜电影神马影院 | 日韩高清一区在线 | 麻豆成人在线观看 | www操操操| 五月婷婷中文网 | 欧洲在线免费视频 | 99在线视频网站 | 午夜精品视频一区二区三区在线看 | 天天操天天爱天天干 | 在线观看岛国 | 国产一区二区在线观看免费 | 欧美一二三视频 | 97色视频在线 | 日韩在线欧美在线 | 国产精品一区二区在线 | 日韩电影一区二区三区在线观看 | 国产精品99久久久精品 | 美女视频黄色免费 | 成人97人人超碰人人99 | 99久热在线精品 | 亚洲涩涩一区 | 欧美综合色在线图区 | 蜜臀av.com| 婷婷网在线 | 在线看一区二区 | 天天干 天天摸 天天操 | 日韩大片在线观看 | 天天摸夜夜操 | 欧美日韩免费观看一区=区三区 | 在线欧美a | 欧洲色吧 | 成人在线一区二区三区 | 亚洲精品456在线播放 | 久久久久久国产一区二区三区 | 国产日韩在线播放 | 2019中文字幕网站 | 丰满少妇高潮在线观看 | 亚洲精品免费播放 | 美女黄频在线观看 | 丁香婷婷激情五月 | 亚洲天堂网在线视频观看 | 国产精品二区三区 | 精品国产美女在线 | 久久久999免费视频 日韩网站在线 | 欧美激情操 | 国产又粗又猛又爽又黄的视频先 | 91福利视频免费观看 | 成人av片免费观看app下载 | 亚洲最大免费成人网 | 99高清视频有精品视频 | 国产精品久免费的黄网站 | 中文字幕在线观看三区 | 欧美激情综合五月色丁香 | 色插综合 | 黄在线免费看 | 国产精品一区一区三区 | 国产一区不卡在线 | 亚洲人在线 | 在线观看网站你懂的 | 国产精品一区二区三区久久久 | 日韩av高清在线观看 | 中文字幕高清在线 | 欧美日韩色婷婷 | 在线观看中文字幕dvd播放 | 99中文字幕| 国产精品久久99综合免费观看尤物 | av免费在线看网站 | 在线观看视频福利 | 精品国产_亚洲人成在线 | 久久久wwww| 国产精品亚| 欧美视频18| 亚洲成人av在线播放 | 日日夜夜免费精品 | 国产对白av | 国内精品视频一区二区三区八戒 | 看av免费网站 | 激情婷婷亚洲 | 天天操夜夜叫 | 欧美成人在线免费 | 美女在线免费视频 | 97**国产露脸精品国产 | 激情网婷婷 | 五月婷婷开心中文字幕 | 免费视频你懂得 | 成人午夜黄色影院 | 久久国产成人午夜av影院宅 | 亚洲韩国一区二区三区 | 久久99精品一区二区三区三区 | 怡红院av| 久久久国内精品 | 97超碰人人爱 | 成人午夜剧场在线观看 | 亚洲国产手机在线 | 久久免费试看 | 黄色毛片一级片 | 免费看成人 | 国产精品专区一 | 国产精品毛片久久蜜 | 欧美精品国产综合久久 | 91亚洲精| 麻豆91在线 | 97在线观看 | 久久天天拍 | www.97色.com| 天天爽天天爽夜夜爽 | 欧美激情精品久久久久久变态 | 四虎在线免费观看视频 | 麻豆视频一区二区 | 91最新网址在线观看 | 99国内精品久久久久久久 | 天天操天天爽天天干 | 国产精品video| 亚洲精品国精品久久99热 | 天天插狠狠插 | 亚洲免费视频观看 | 亚洲一区二区三区在线看 | 色综合久久综合中文综合网 | 有码中文字幕在线观看 | 亚洲永久精品视频 | 日韩精品一区二区三区外面 | 国产99久久精品一区二区300 | 成人免费网站在线观看 | 国产 色 | 免费视频xnxx com | 亚洲第一中文字幕 | 国产精品久久在线 | 久久久久久久国产精品 | 黄色大片av | 欧美最猛性xxxxx亚洲精品 | 天天操天天吃 | 国产福利资源 | 日本mv大片欧洲mv大片 | 一本色道久久精品 | 国产精品一区二区精品视频免费看 | 国产日本在线观看 | av丝袜美腿 | 美女网站色 | 国产色在线观看 | 亚洲一区在线看 | 亚洲精品乱码久久久久久蜜桃不爽 | 麻豆视频在线免费看 | 91网页版免费观看 | 一区二区视 | 免费能看的黄色片 | 天天色综合天天 | 一区二区伦理 | 九九热av | 久久公开视频 | 黄色一级大片在线免费看产 | 国产精品久久99 | 欧美性猛片, | 国产高清在线免费视频 | 香蕉在线播放 | 国产美女久久 | 狠狠狠色丁香综合久久天下网 | 亚洲综合在线视频 | 成年人免费观看在线视频 | 国产麻豆精品一区二区 | 亚洲国产精品成人va在线观看 | 91香蕉国产 | 欧美成人在线免费观看 | 亚洲永久精品国产 | 蜜臀av性久久久久蜜臀aⅴ流畅 | 天天综合亚洲 | 欧美午夜性 | 丁香视频在线观看 | 日韩精品首页 | 欧美一性一交一乱 | 九九热1| 日韩有码中文字幕在线 | 中文在线a在线 | 国产123区在线观看 国产精品麻豆91 | 国产中文字幕一区二区 | 日韩电影在线观看中文字幕 | 黄色一级动作片 | 美女在线观看网站 | 在线免费黄 | 国产精品久久一区二区无卡 | 一区二区三区在线免费播放 | 国产精彩视频一区 | 狠狠久久综合 | 久久成熟 | av中文字幕在线看 | 一区二区精品国产 | 一区二区三区久久精品 | 激情综合婷婷 | 久久国产网 | 婷婷色在线播放 | 免费a视频在线 | 日本三级吹潮在线 | 国产麻豆视频免费观看 | 日韩a在线 | 色姑娘综合 | 久久人人爽人人爽人人 | 欧美久久影院 | 天天爱天天干天天爽 | 亚洲日韩欧美一区二区在线 | 天天综合网 天天综合色 | 91视频网址入口 | 永久免费的啪啪网站免费观看浪潮 | 手机成人在线电影 | 美女亚洲精品 | 久久久免费高清视频 | 精品一区二区电影 | 午夜久久久久 | 久久激情电影 | 久久综合免费视频影院 | 国内精品久久久久影院优 | av福利超碰网站 | 久久久综合 | 黄色的视频 | 日韩精品一区二区三区免费观看 | 在线免费亚洲 | 五月婷婷激情六月 | 在线国产日韩 | 国产一级电影 | 久久在线看 | 亚洲精品男人天堂 | 亚洲综合精品视频 | 超碰av在线播放 | 国内久久精品视频 | 涩涩爱夜夜爱 | 国产成人综 | 亚洲国产成人在线观看 | av免费片 | 免费在线观看一区二区三区 | 欧美一区成人 | 伊人日日干| 欧美另类tv | 精品久久久久_ | 四月婷婷在线观看 | 国产精品黄色 | 国产最新福利 | 精品国产伦一区二区三区观看说明 | 亚洲欧洲成人精品av97 | 国产亚洲免费观看 | 18av在线视频 | 四川妇女搡bbbb搡bbbb搡 | 国产黄色免费 | 国产精品系列在线观看 | 午夜在线免费观看视频 | 欧美日韩免费一区二区 | 日黄网站 | 婷婷色网站 | 韩日av一区二区 | 日韩a欧美| 免费观看福利视频 | 日本中文不卡 | 美女网站一区 | 国产在线资源 | 开心丁香婷婷深爱五月 | 久久精品一区二区三区中文字幕 | .国产精品成人自产拍在线观看6 | 18性欧美xxxⅹ性满足 | 96在线 | 天天拍天天爽 | 久久视频免费看 | 久久婷婷精品 | 日本中文不卡 | 在线观看mv的中文字幕网站 | 亚洲视频一级 | 久久免费成人精品视频 | 激情综合中文娱乐网 | 国产精品视频专区 | 免费毛片一区二区三区久久久 | 国产一区福利在线 | 亚洲综合在线五月 | 欧美精品久久久久久久久免 | 高清一区二区三区av | 中文字幕日韩国产 | 成人观看 | 四虎www | 日韩在线网 | 色小说在线 | 欧美激情视频一区二区三区免费 | av国产在线观看 | 中文字幕在线观看免费 | 久久视频一区 | 国产高清av免费在线观看 | 色婷婷88av视频一二三区 | 2021国产在线 | 久久99精品久久久久久久久久久久 | 蜜臀久久99精品久久久无需会员 | 亚洲国产精品激情在线观看 | 亚洲精品白浆高清久久久久久 | 欧美精品日韩 | 久久精品免费观看 | 91精品国产一区 | 一本一本久久a久久精品综合妖精 | 丁香六月国产 | 国产精品久久久一区二区 | 黄色成人av网址 | 91av播放| 综合影视| 久久超碰99 | 亚洲精品国内 | 亚洲一级片免费观看 | 亚洲每日更新 | 亚洲精品一区中文字幕乱码 | 国产在线综合视频 | www.黄色网.com | 欧洲性视频 | 亚洲高清在线 | 蜜臀一区二区三区精品免费视频 | 99精品电影 | 中文字幕免费高清 | 91插插插网站 | 国产视频一区二区在线 | 国产高清不卡一区二区三区 | 激情视频久久 | 中文字幕在线视频第一页 | 国产成人久久77777精品 | www.av在线播放 | 国产精品美女久久久久aⅴ 干干夜夜 | 天天色天天色天天色 | 91av视频免费在线观看 | 日韩精品中文字幕在线不卡尤物 | a级国产乱理伦片在线观看 亚洲3级 | 中文字幕视频网站 | av经典在线| 久久久久久久18 | 欧美日韩高清在线 | 国产午夜一区二区 | 在线播放日韩 | 激情深爱五月 | 久久久久久久久综合 | 日韩在线视频看看 | 欧美日韩亚洲国产一区 | 777奇米四色 | 国产精品久久久久久久久久久免费 | 国产精品免费人成网站 | 国产精品久久久久久99 | 激情五月五月婷婷 | 亚洲欧洲精品一区二区 | 中文网丁香综合网 | 久久精品视频一 | 精品久久久网 | 国产香蕉97碰碰碰视频在线观看 | 午夜av色| 日韩,中文字幕 | 免费网站色 | 久热免费 | 国产91电影在线观看 | 久久综合天天 | 伊人导航 | 精品在线免费观看 | 天天射天天射 | 国产亚洲精品成人av久久影院 | 婷婷色在线观看 | 高清有码中文字幕 | 中文字幕中文中文字幕 | 色av资源网 | 久久玖| 国产精品国产三级在线专区 | 视色网站 | 国产一区二区在线播放视频 | 亚洲视频大全 | 国产999精品久久久久久麻豆 | 色94色欧美 | 久草在线免费色站 | 黄色aa久久 | 最新婷婷色| 丁香影院在线 | 日本狠狠色| 99热手机在线观看 | 综合成人在线 | 手机成人免费视频 | 高清av中文在线字幕观看1 | 成人资源在线观看 | 少妇资源站 | 久久er99热精品一区二区三区 | 韩国一区二区在线观看 | 97视频免费观看 | 日韩久久精品一区二区三区下载 | 免费黄色av电影 | 精品亚洲成a人在线观看 | 日本黄色a级大片 | 在线你懂的视频 | 97视频在线观看播放 | 国产91学生 | 国产五月色婷婷六月丁香视频 | 成人国产电影在线观看 | 婷婷久久一区二区三区 | 国产精品视频免费 | 国产精品二区在线观看 | 91完整版观看 | 久久精品99国产精品 | 久久精品99北条麻妃 | 婷婷国产精品 | 成人亚洲网 | 国产五月天婷婷 | 精品国产乱码一区二区三区在线 | 日韩免费电影网站 | 日韩欧美视频在线观看免费 | 久久国内精品 | 视频成人永久免费视频 | 激情综合网天天干 | 91亚洲欧美激情 | 91正在播放 | 国产精品va | 天堂在线视频中文网 | 久久久久久久国产精品视频 | 粉嫩aⅴ一区二区三区 | 久久视频在线看 | 婷婷激情在线 | 久久av观看 | 国产精品美女免费视频 | 亚洲精品久久久蜜桃直播 | 伊人干综合 | 中文字幕网站 | 808电影| av免费电影在线观看 | 国产精品色视频 | 中文字幕一区2区3区 | 亚洲区精品视频 | 久久精品国亚洲 | 久久久18 | 男女精品久久 | www.黄色片网站 | 超碰个人在线 | 国色天香永久免费 | 国产视频在| 在线中文日韩 | 精品视频一区在线观看 | 国产视频精品免费 | 91福利视频一区 | 国产成人61精品免费看片 | 久久综合亚洲鲁鲁五月久久 | 91视频免费观看 | 国产视频在 | 欧美福利久久 | 日韩av不卡在线 | 在线免费高清一区二区三区 | 在线免费观看黄网站 | 天堂va欧美va亚洲va老司机 | 正在播放一区二区 | 久久久久国产a免费观看rela | av性在线| 国产 日韩 欧美 中文 在线播放 | 国产99在线 | 久久精选| 久久香蕉影视 | 亚州成人av在线 | 色网站在线观看 | 精品一区 在线 | 日日干日日| 久久国产精品系列 | 狠狠操狠狠干天天操 | 在线欧美小视频 | 久草在线资源免费 | 就操操久久 | 免费在线观看成年人视频 | 91av视频在线观看 | 日韩精品一区二区三区水蜜桃 | 久久久综合九色合综国产精品 | 国产精品久久久久免费a∨ 欧美一级性生活片 | 国产高清日韩欧美 | 亚洲天天看 | 国产99在线免费 | 免费开视频 | 国产午夜免费视频 | 成人理论在线观看 | 精品一二三四在线 | 久久久久综合网 | 国产人成看黄久久久久久久久 | 九色视频网 | 国产a网站| 亚洲成人国产精品 | 亚洲第五色综合网 | 国产一区二区在线播放 | 精品一区在线 | 亚洲一区二区三区精品在线观看 | 91av九色| 久久精品1区 | 亚洲区另类春色综合小说校园片 | 国产精品久久久久久久久久久久冷 | av一区在线| 国产福利91精品一区 | 成人免费观看完整版电影 | 天天综合婷婷 | 日本三级不卡 | 欧美视频网址 | 日韩动态视频 | 久久夜色精品亚洲噜噜国4 午夜视频在线观看欧美 | 日韩com| 九九交易行官网 | 蜜桃视频在线视频 | 一区二区三区日韩视频在线观看 | 欧美日韩中文国产 | 国产91精品看黄网站 | 日本三级久久 | 亚洲情影院 | 午夜在线观看一区 | 中文在线最新版天堂 | 国产在线一区二区三区播放 | 在线观看日韩 | 99久久超碰中文字幕伊人 | 亚洲美女在线一区 | 一区二区三区免费播放 | 黄色片网站大全 | 中文字幕你懂的 | 国产精品免费久久久久久久久久中文 | 久久久久久久久久久久国产精品 | 欧美二区视频 | 日韩欧美在线视频一区二区三区 | 天天躁天天操 | 女女av在线 | 国产亚洲精品久久久久久 | 最新av在线播放 | 精品视频免费久久久看 | 国产福利av| 久久综合狠狠综合久久狠狠色综合 | 亚洲国产视频网站 | 热热热热热色 | 天天爽网站 | 99久久精品无免国产免费 | 久久久精品福利视频 | 亚洲精品成人网 | 最近中文国产在线视频 | 一级国产视频 | 婷婷六月中文字幕 | www.久久色| 少妇搡bbbb搡bbb搡69 | 亚洲精品播放 | 五月婷婷黄色 | 欧美成人亚洲成人 | 久久av网址 | 成人免费视频网 | 欧美a级在线播放 | 91精品网站在线观看 | 一区二区三区四区五区在线 | 看片网站黄| 国产成人免费av电影 | 深夜福利视频在线观看 | 欧美日韩高清一区二区三区 | 亚洲免费精品一区二区 | 国产一区二区在线免费观看 | 国产在线观看国语版免费 | 日韩在线视频在线观看 | 天堂中文在线播放 | 久久久久久久久毛片精品 | 插综合网 | 久久色在线观看 | 免费看搞黄视频网站 | 久久久久久激情 | 国产精品视频app | 黄色三级视频片 | 国产原创av在线 | 成人一级免费电影 | 国内视频1区 | 激情综合网在线观看 | 丁香婷婷成人 | 中文字幕亚洲情99在线 | 久久久久久美女 | 免费瑟瑟网站 | 久久激情五月激情 | 91精品对白一区国产伦 | 亚洲精品永久免费视频 | 欧美色图亚洲图片 | 99这里只有久久精品视频 | 欧美性生活免费看 | 国产麻豆精品久久 | 中文字幕之中文字幕 | 日日夜夜天天操 | 国产中文字幕一区 | 1区2区3区在线观看 三级动图 | 美女黄濒| 超碰人人av | 久草视频在线免费播放 | 在线观看免费91 | 99精品免费久久久久久日本 | 亚洲精品免费播放 | 欧美一区二区三区在线视频观看 | 亚洲国产操 | 欧美一区影院 | 天天干,天天插 | 久久国产剧场电影 | 99精品欧美一区二区蜜桃免费 | 久草在线手机视频 | 久久精品国产一区二区三 | 久久久久激情视频 | 久久久久久久久影视 | 久久五月婷婷丁香 | 亚洲在线看| 日韩视频在线观看视频 | 美女视频网 | 波多野结衣视频在线 | 免费日韩视 | 五月婷婷久久综合 | 亚洲国产精品女人久久久 | 欧美在线1| 最新国产中文字幕 | 成人午夜在线观看 | 激情欧美丁香 | 久久99国产精品久久99 | 一区二区欧美日韩 | 在线国产专区 | 婷婷av网站 | 狠狠成人 | 亚洲1区在线| 免费看国产黄色 | 欧美日韩亚洲第一 | 国产色视频123区 | 91精品国产一区 | 久久精品系列 | 久久情爱| 久久一级片 | 欧美专区日韩专区 | 国产精品18久久久久久首页狼 | 国产精品美女免费 | 欧美综合久久久 | 97在线观看免费高清 | 国产精品久久电影观看 | 中文字幕在线色 | 一区二区三区中文字幕在线 | 亚洲国产成人在线播放 | 亚洲精品资源 | 婷婷在线五月 | 中文字幕无吗 | 黄色免费网站大全 | 免费日韩 精品中文字幕视频在线 | 97精品国产97久久久久久春色 | 丁香激情视频 | 92国产精品久久久久首页 | 欧美精品久久久久久久久免 | 国产高清 不卡 | 久草久热 | 亚洲精品美女视频 | www.黄色片网站 | 亚洲一区二区视频在线 | 黄色aa久久 | 国产高清av在线播放 | 欧美精品在线一区 | 国产精品欧美一区二区 | 日韩啪啪小视频 | 夜添久久精品亚洲国产精品 | 国产精品久久久影视 | 国产h在线播放 | 亚洲精品网页 | 97在线免费观看 | 久久爱992xxoo | 999久久久精品视频 日韩高清www | 久久久这里有精品 | 免费看特级毛片 | 日韩中文字幕免费看 | 国内精品久久久久久久影视麻豆 | 天堂网一区二区三区 | 精品国产大片 | 在线黄色av电影 | 狠色在线 | 亚洲成人二区 | 欧美精品一级视频 | 成人久久18免费网站 | 在线91精品 | 麻豆91在线观看 | 福利片免费看 | 天天干天天操天天拍 | 九九九九九九精品 | 亚洲精品乱码久久久久久久久久 | 精品日韩在线 | 天天天天爱天天躁 | 成人免费在线电影 | 精品九九九九 | japanesexxx乱女另类 | 99理论片 | 色是在线视频 | 欧美欧美 | 夜夜骑天天操 | 人人爱人人爽 | 国偷自产中文字幕亚洲手机在线 | 伊人久久婷婷 | 久艹在线观看视频 | 波多野结衣视频在线 | 亚洲精品国 | 免费黄色激情视频 | 三上悠亚在线免费 | 字幕网在线观看 | 欧美一区二区三区免费观看 | 亚洲精品婷婷 | 国产精品岛国久久久久久久久红粉 | 久久综合久久综合久久综合 | 日韩高清国产精品 | 成人在线免费视频 | 久久 精品一区 | 这里只有精彩视频 | 亚洲精品字幕 | 91丨九色丨国产女 | 黄色高清视频在线观看 | 久久久午夜精品福利内容 | www.夜夜操.com | 日韩一区二区三区高清免费看看 | 国产午夜精品久久久久久久久久 | 不卡在线一区 | 一本—道久久a久久精品蜜桃 | 久草在线视频看看 | 亚洲精品一区二区18漫画 | 国产亚洲成人精品 | 亚洲国产美女久久久久 | 亚洲国产成人在线观看 | 精品国产一区二区三区久久久蜜臀 | 又色又爽又黄高潮的免费视频 | 久草网免费 | 黄色的片子| 99热999| 亚洲高清国产视频 | 亚洲视频免费在线观看 | 欧美a视频在线观看 | 久99久久| 热久久国产精品 | 特级黄色片免费看 | 亚洲精品66 | 久久九精品 | 亚洲精品国偷拍自产在线观看蜜桃 | 91高清视频 | 在线国产专区 | a成人v在线 | 亚洲1级片 | 人人草在线视频 | 久久精品一区二区三区国产主播 | 97精品久久人人爽人人爽 | 国产精品美女免费视频 | 日韩免费高清在线观看 | 国产精品成人一区二区三区吃奶 | 国语精品免费视频 | 国产丝袜网站 | 久久久高清 | 九九精品视频在线 | 99精品在线看 | 亚洲欧美视频网站 | av中文国产| 亚洲日本va午夜在线影院 | 久久综合五月天 | 国产xvideos免费视频播放 | 97成人精品区在线播放 | 91porny九色91啦中文 | 久久精品国产免费看久久精品 | 99亚洲天堂 | 九九热在线观看视频 | 色狠狠狠 | 免费中文字幕 | 九色在线视频 | 五月婷婷av | 国产视频精品久久 | 国产va饥渴难耐女保洁员在线观看 | 国产在线不卡精品 | 国产一区福利在线 | 国产在线视频不卡 | 欧美最新大片在线看 | 日韩av在线免费播放 | 三级黄色免费 | 亚洲无人区小视频 | 成人在线观看资源 | 婷婷国产视频 | 日韩电影在线观看一区二区三区 | 久久国产区 | 97人人模人人爽人人喊中文字 | 久久久久久高潮国产精品视 | 欧美成人xxxxx| 色婷婷丁香 | 亚洲一区网站 | 久操视频在线播放 | 日韩网站视频 | 免费视频一二三 | 日韩超碰在线 | 久久久久黄 | 久久的色| 日韩av在线免费看 | 国产精品久久久久久模特 | 1024久久 | 国内丰满少妇猛烈精品播 | www.久艹 | 狠狠操91 | 天天操天天操天天操天天 | 热re99久久精品国产99热 | 国产淫片免费看 | 手机看片国产日韩 | a视频免费在线观看 | 四虎影视久久久 | 天天干天天上 | 久久亚洲综合国产精品99麻豆的功能介绍 | 日韩一级电影在线观看 | av高清网站在线观看 | 韩国视频一区二区三区 | 中文字幕成人在线 | 亚洲精品在线免费 | 国产视频精品久久 | 97激情影院 | 99热都是精品 | 亚洲成人精品av | 日韩视频区 | av在线看片 | 日韩在线观看网址 | 狠狠天天| 久久成人综合视频 | 九九热视频在线 | 一区二区不卡 | 激情五月婷婷激情 | 亚洲欧美日韩在线一区二区 | 久久人操| 成人天堂网 | 国产精品久久久久久久婷婷 | 九色免费视频 | 天天操人人要 | 美女视频永久黄网站免费观看国产 | 日韩欧美大片免费观看 | 成年人黄色免费网站 | 欧美一区免费在线观看 | 美女视频黄的免费的 | 精品免费久久久久 | 欧美日韩伦理一区 | 成人国产精品免费观看 | 国产亚洲精品bv在线观看 | 91精品欧美一区二区三区 | 91精品一区二区在线观看 | 久久综合免费 | 日韩精品国产一区 | 8x成人在线 | 国产精品二区三区 | av在线免费在线 | 国产99久久久精品 | 99视频免费看 | 四虎免费av | 亚洲日本韩国一区二区 | 国产精品激情 | 成 人 黄 色 视频 免费观看 | 国产精品乱码一区二区视频 | 日韩国产精品久久 | 黄色综合 | 久久艹影院| 亚洲一区二区麻豆 | 欧美 日韩 视频 | 天天射天天干天天爽 | 超级碰99 | 日韩精品一区二区三区视频播放 | 欧美日韩视频在线观看一区二区 | 97超碰站 | 91高清视频| 五月综合网 | 99热99热 | 日韩av手机在线看 | 免费看一及片 | 国产区免费 | 亚洲国产97在线精品一区 | 91高清视频免费 | 免费a级毛片在线看 | 亚洲a色| 国产乱对白刺激视频在线观看女王 | 国产精品一区二区久久久 | 9999国产精品 | 亚洲一区二区麻豆 | 亚洲免费一级电影 | 在线视频观看亚洲 | 国产精品69久久久久 |