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

幾種常用(閉源、開源)關(guān)系型數(shù)據(jù)庫的架構(gòu)和實(shí)現(xiàn)原理解讀

數(shù)據(jù)庫
常用的關(guān)系型數(shù)據(jù)庫有閉源系列和開源系列,閉源系列有國外數(shù)據(jù)庫(如Oracle、DB2等)和國產(chǎn)數(shù)據(jù)庫(如GaussDB T、達(dá)夢(mèng)等);開源系列有MySQL、PostgreSQL等。本文擬介紹幾種常用關(guān)系型數(shù)據(jù)庫的架構(gòu)和實(shí)現(xiàn)原理,以方便廣大用戶更進(jìn)一步了解和選擇。

 一、 Oracle

(一) Oracle 架構(gòu)

Oracle Server包括數(shù)據(jù)庫(Database)和實(shí)例(Instance)兩大部分,兩者相互獨(dú)立。數(shù)據(jù)庫由數(shù)據(jù)文件 、控制文件和日志文件組成,實(shí)例由內(nèi)存池和后臺(tái)進(jìn)程組成,示意圖如下:

 

一臺(tái)Oracle Server可創(chuàng)建多個(gè)Database,不同的Database之間相互獨(dú)立。每個(gè)Database有屬于自己的全套相關(guān)文件,如:密碼文件,參數(shù)文件,數(shù)據(jù)文件,控制文件和日志文件

Database由一系列物理文件(如二維表文件)組成。用戶不能直接讀取Database中的內(nèi)容,必須通過Oracle instance才能讀取,一個(gè)Instance只能連接一個(gè)Database,但是一個(gè)Database可以被多個(gè)Instance連接。

各功能組件說明如下:

1、用戶連接進(jìn)程

用戶連接進(jìn)程是連接用戶和Oracle Instance的橋梁。包括:用戶進(jìn)程、服務(wù)進(jìn)程和PGA

  • 用戶進(jìn)程User Process

當(dāng)一個(gè)Database User請(qǐng)求連接到Oracle Server時(shí),Oracle Server創(chuàng)建的User Process。

  • Server Process服務(wù)進(jìn)程

用于處理Database User和Oracle Server之間的連接。

  • 程序全局區(qū)PGA

PGA:由Server Process分配,用于當(dāng)前User Session的內(nèi)存區(qū),不同的用戶擁有不同的PGA。PGA包含了Server Process數(shù)據(jù)和控制信息的內(nèi)存區(qū)域。包括棧空間、 Session Info、 私有SQL區(qū)。

2、SGA(System Global Area)

SGA與Oracle性能息息相關(guān),在Instance啟動(dòng)時(shí)被分配,關(guān)閉時(shí)被釋放。主要包含如下幾種數(shù)據(jù)結(jié)構(gòu):

  • 數(shù)據(jù)庫緩沖區(qū)(Database buffer cache)

oracle 執(zhí)行SQL語句的區(qū)域。當(dāng)進(jìn)行數(shù)據(jù)更新或數(shù)據(jù)查詢時(shí),用戶執(zhí)行的SQL語句不會(huì)直接對(duì)磁盤上的數(shù)據(jù)文件進(jìn)行更改操作,而是首先將數(shù)據(jù)文件復(fù)制到數(shù)據(jù)庫緩沖區(qū)緩存,再更改或查詢緩存中的副本。此外,被頻繁訪問的數(shù)據(jù)塊會(huì)存在于數(shù)據(jù)庫緩沖區(qū)緩存中。

  • 日志緩沖區(qū)(Redo log Buffer)

用于短期存儲(chǔ)redo log。

  • 共享池(Shared Pool)

用于緩存所有頻繁執(zhí)行的代碼和頻繁訪問的對(duì)象定義。共享池內(nèi)有下列三種數(shù)據(jù)結(jié)構(gòu):

庫緩沖(library cache):存儲(chǔ)最近執(zhí)行的代碼

數(shù)據(jù)字典緩存(data dictionary cache):存儲(chǔ)最近使用的對(duì)象定義

PL/SQL緩沖區(qū)(PL/SQL buffer):用于存儲(chǔ)過程、函數(shù)、打包的過程、打包的函數(shù)、對(duì)象類型定義和觸發(fā)器。

  • 大型池(Large Buffer)

用于共享的服務(wù)器進(jìn)程。

  • JAVA池(Java Buffer):

只有當(dāng)應(yīng)用程序需要在數(shù)據(jù)庫中運(yùn)行java存儲(chǔ)程序時(shí),才需要java池。

3、后臺(tái)進(jìn)程

后臺(tái)進(jìn)程主要用于數(shù)據(jù)庫管理 ,是Oracle Instance和Oracle Database的聯(lián)系紐帶,分為核心進(jìn)程和非核心進(jìn)程。

1) 核心進(jìn)程:

  • 數(shù)據(jù)庫寫入進(jìn)程(DBWn)

Server process連接Oracle后,通過數(shù)據(jù)庫寫進(jìn)程(DBWn)將數(shù)據(jù)緩沖區(qū)中的“臟緩沖區(qū)” 的數(shù)據(jù)塊寫入到數(shù)據(jù)文件;

  • 檢查點(diǎn)進(jìn)程(CKPT)

Checkpoint (CKPT)檢查點(diǎn)進(jìn)程主要用于更新數(shù)據(jù)文件頭,更新控制文件和觸發(fā)DBWn數(shù)據(jù)庫寫進(jìn)程。

  • 進(jìn)程監(jiān)視進(jìn)程(PMON)

當(dāng)后臺(tái)進(jìn)程執(zhí)行失敗后負(fù)責(zé)清理數(shù)據(jù)庫緩存和閑置資源,是Oracle的自動(dòng)維護(hù)機(jī)制。

  • 系統(tǒng)監(jiān)視進(jìn)程(SMON)

用途如下:

當(dāng)數(shù)據(jù)庫實(shí)例崩潰時(shí),用于數(shù)據(jù)庫實(shí)例的自動(dòng)恢復(fù)。

清除作廢的排序臨時(shí)段,回收整理碎片,合并空閑空間,釋放臨時(shí)段,維護(hù)閃回的時(shí)間點(diǎn)。

  • 重做日志文件和日志寫入進(jìn)程

用于記錄數(shù)據(jù)庫的改變和記錄數(shù)據(jù)庫被改變之前的原始狀態(tài),當(dāng)滿足以下條件時(shí),激活LGWR:

提交指令

日志緩沖區(qū)超過1/3

每三秒

每次DBWn執(zhí)行之前

2) 非核心進(jìn)程

  • 歸檔進(jìn)程(ARCn)

是可選的后臺(tái)進(jìn)程,當(dāng)數(shù)據(jù)庫處于ArchiveLog模式時(shí),自動(dòng)歸檔redo log,并保存數(shù)據(jù)庫的所有修改記錄。

SGA(System Global Area)和后臺(tái)進(jìn)程組成Instance。

4、存儲(chǔ)結(jié)構(gòu)

存儲(chǔ)結(jié)構(gòu)可從物理結(jié)構(gòu)和邏輯結(jié)構(gòu)兩方面理解。

1) 物理結(jié)構(gòu)

Database物理結(jié)構(gòu):是Database在操作系統(tǒng)中的文件集合,即:磁盤上的物理文件,主要由數(shù)據(jù)文件、控制文件、重做日志文件、歸檔日志文件、參數(shù)文件、口令文件組成。

數(shù)據(jù)文件、重做日志文件、控制文件、跟蹤文件、警告文件屬于數(shù)據(jù)庫文件

  • Data Files

數(shù)據(jù)文件是數(shù)據(jù)的存儲(chǔ)倉庫,數(shù)據(jù)被使用時(shí)才被調(diào)入內(nèi)存中的。

  • Redo Log Files

重做日志文件包含對(duì)數(shù)據(jù)庫所做的更改操作記錄,在Oracle發(fā)生故障時(shí)能夠恢復(fù)數(shù)據(jù)。

  • Control Files

控制文件包含維護(hù)和驗(yàn)證數(shù)據(jù)庫完整性的必要的信息。例如,控制文件用于識(shí)別數(shù)據(jù)文件和重做日志文件,一個(gè)數(shù)據(jù)庫至少需要一個(gè)控制文件。

  • 跟蹤文件 (Trace Files)

在instance 中運(yùn)行的每一個(gè)后臺(tái)進(jìn)程都有一個(gè)跟蹤文件(trace file)與之相連。Trace file記載后臺(tái)進(jìn)程所遇到的重大事件的信息。

  • 警告日志( Alert Log)

是一種特殊的跟蹤文件,每個(gè)數(shù)據(jù)庫都有一個(gè)跟蹤文件,同步記載數(shù)據(jù)庫的消息和錯(cuò)誤。

參數(shù)文件、口令文件、歸檔文件屬于非數(shù)據(jù)庫文件。

  • Parameter File

實(shí)例參數(shù)文件,當(dāng)啟動(dòng)oracle實(shí)例時(shí),SGA結(jié)構(gòu)會(huì)根據(jù)此參數(shù)文件的設(shè)置內(nèi)存,后臺(tái)進(jìn)程會(huì)據(jù)此啟動(dòng)。

  • Password File

用戶通過提交username/password來建立會(huì)話,Oracle根據(jù)存儲(chǔ)在數(shù)據(jù)字典的用戶定義對(duì)用戶名和口令進(jìn)行驗(yàn)證。

  • 歸檔文件

是重做日志文件的脫機(jī)副本,這些副本可能對(duì)于從介質(zhì)失敗中進(jìn)行恢復(fù)很必要。

2) 邏輯結(jié)構(gòu)

  • 表空間

用于存儲(chǔ)數(shù)據(jù)庫對(duì)象的邏輯空間,是信息存儲(chǔ)的最大邏輯單位,是一系列數(shù)據(jù)文件的集合。一個(gè)數(shù)據(jù)庫可以由多個(gè)表空間組成,每個(gè)表空間包括多個(gè)段。

  • 段:

是對(duì)象在數(shù)據(jù)庫中占用的空間。段是區(qū)的集合

  • 區(qū):

是為數(shù)據(jù)一次性預(yù)留的一個(gè)較大的存儲(chǔ)空間,區(qū)是塊的集合

  • 塊:

ORACLE最基本的存儲(chǔ)單位,在建立數(shù)據(jù)庫的時(shí)候指定,并被映射到磁盤塊。

3) 邏輯空間到物理空間的映射

 

(二) Oracle RDBMS的運(yùn)行過程

1. User訪問Oracle Server之前提交一個(gè)請(qǐng)求(包含了db_name、password、instance_name、username等信息);

2. Oracle Server接收到請(qǐng)求并通過Password File的驗(yàn)證后,分配SGA內(nèi)存池,啟動(dòng)后臺(tái)進(jìn)程同時(shí)創(chuàng)建并啟動(dòng)實(shí)例;

3. 啟動(dòng)實(shí)例之后,User Process與Server Process建立Connect;

4. Server process和Oracle Instance建立Sesscion,隨后接收用戶請(qǐng)求,執(zhí)行相關(guān)操作;

(三) 寫SQL語句的執(zhí)行過程

1. 用戶執(zhí)行SQL語句,Server process收到后,將SQL語句送到Instance,再將SQL語句載入數(shù)據(jù)庫緩沖區(qū)。

2. Server Process通知Oracle Database將與SQL語句相關(guān)的數(shù)據(jù)塊副本加載到緩沖區(qū)中。

3. 在數(shù)據(jù)庫緩存區(qū)執(zhí)行SQL語句,修改數(shù)據(jù)文件副本,形成“臟緩沖區(qū)”

4. CKPT檢查到”臟緩沖區(qū)”,調(diào)用DBWn數(shù)據(jù)庫寫進(jìn)程,

5. 在DBWn運(yùn)行之前,先運(yùn)行了LGWR,將數(shù)據(jù)文件的原始狀態(tài)和數(shù)據(jù)庫的改變記錄到Redo Log Files

6. 運(yùn)行DBWn,將“臟緩沖區(qū)的內(nèi)容寫入到數(shù)據(jù)文件”

7. 同時(shí)CKPT修改控制文件和數(shù)據(jù)文件頭

8. SMON回收不必要的空閑資源

9. 返回結(jié)果給用戶

(四) Oracle的高可用性架構(gòu)

1. Oracle RAC(Real Application Clusters)

RAC 是 Oracle 數(shù)據(jù)庫的一個(gè)群集解決方案,包括計(jì)算層和存儲(chǔ)層。如下圖所示:

 

1) 存儲(chǔ)層——共享存儲(chǔ)

Oracle RAC的核心是共享磁盤子系統(tǒng),集群中所有節(jié)點(diǎn)必須能夠訪問所有數(shù)據(jù)文件、重做日志文件、控制文件和參數(shù)文件,因此,這些文件必須存放在共享存儲(chǔ)中。常用的共享存儲(chǔ)方式有OCFS、OCFS2、RAW、NFS、ASM 等。說明如下:

OCFS(Oracle Cluster File System) 和 OCFS2 都是文件系統(tǒng),和 NFS 一樣,提供集群環(huán)境共享存儲(chǔ)的文件系統(tǒng)。

RAW 裸設(shè)備也是一種存儲(chǔ)方式。把共享存儲(chǔ)映射到 RAW Device,Oracle在存儲(chǔ)數(shù)據(jù)時(shí),選擇 RAW device存儲(chǔ)即可。但相對(duì)于文件系統(tǒng)來說, RAW不直觀,不便于管理,而且有數(shù)量的限制,現(xiàn)已被OCFS取代。

ASM 是一種數(shù)據(jù)庫存儲(chǔ)的方案,并不是 cluster 的方案,使用 ASM 時(shí),還需使用OCFS/OCFS2 或RAW。

2) 計(jì)算層

計(jì)算層至少需要兩臺(tái)以上的服務(wù)器,在每臺(tái)服務(wù)器上安裝集群軟件和Oracle的 RAC 組件,從邏輯結(jié)構(gòu)上看,每個(gè)節(jié)點(diǎn)都有一個(gè)獨(dú)立的實(shí)例,這些實(shí)例訪問同一個(gè)數(shù)據(jù)庫。節(jié)點(diǎn)之間通過集群軟件的通信層(Communication Layer)進(jìn)行通信,利用高速緩存合并技術(shù),實(shí)現(xiàn)集群中各節(jié)點(diǎn)緩存的高速同步,使得集群中的每個(gè)實(shí)例,都保留了一份相同的數(shù)據(jù)庫 cache。從而最大限度地低降低磁盤I/O。因此,RAC有如下特點(diǎn):

每一個(gè)節(jié)點(diǎn)的實(shí)例都有自己的 SGA;

每一個(gè)節(jié)點(diǎn)的實(shí)例都有自己的后臺(tái)進(jìn)程

每一個(gè)節(jié)點(diǎn)的實(shí)力都有自己的 redo logs

每一個(gè)節(jié)點(diǎn)的實(shí)例都有自己的 undo 表空間

所有節(jié)點(diǎn)都共享一份 datafiles 和 controlfiles

2、Data Guard

在Data Gurad 環(huán)境中,至少有兩個(gè)數(shù)據(jù)庫,一個(gè)主庫(Primary Database)處于Open 狀態(tài),另一個(gè)備庫(Standby Database)處于standby狀態(tài)。

備庫又分物理庫和邏輯庫。物理庫和主庫完全一樣,通過REDO應(yīng)用來保持與主庫的數(shù)據(jù)一致性,支持只讀服務(wù);邏輯庫通過SQL應(yīng)用,在備庫端執(zhí)行和主庫同樣的SQL語句,以此來保持與主庫的數(shù)據(jù)一致,因此文件的物理結(jié)構(gòu)(甚至數(shù)據(jù)的邏輯結(jié)構(gòu))都可以與主庫不一致。邏輯庫支持讀寫服務(wù)。

Data Guard適合多機(jī)房方案,實(shí)際部署時(shí),主庫部署在主機(jī)房,備庫部署在其他機(jī)房。

二、 MySQL

(一) MySQL架構(gòu)

 

1、連接器(Connectors)

MySQL向外提供的接口,如java,.net,php等語言可以通過該組件來操作SQL語句,實(shí)現(xiàn)與SQL的交互。

2、管理服務(wù)組件和工具組件(Management Service & Utilities)

提供對(duì)MySQL的集成管理,如備份(Backup),恢復(fù)(Recovery),安全管理(Security)等

3、連接池組件(Connection Pool)

負(fù)責(zé)監(jiān)聽對(duì)客戶端向MySQL Server端的各種請(qǐng)求,接收請(qǐng)求,轉(zhuǎn)發(fā)請(qǐng)求到目標(biāo)模塊。每個(gè)成功連接MySQL Server的客戶請(qǐng)求都會(huì)被創(chuàng)建或分配一個(gè)線程,該線程負(fù)責(zé)客戶端與MySQL Server端的通信,接收客戶端發(fā)送的命令,傳遞服務(wù)端的結(jié)果信息等。

4、SQL接口組件(SQL Interface)

接收用戶SQL命令,如DML,DDL和存儲(chǔ)過程等,并將最終結(jié)果返回給用戶。

5、查詢分析器組件(Parser)

首先分析SQL命令語法的合法性,并嘗試將SQL命令分解成數(shù)據(jù)結(jié)構(gòu),若分解失敗,則提示SQL語句不合理。

6、優(yōu)化器組件(Optimizer)

對(duì)SQL命令按照標(biāo)準(zhǔn)流程進(jìn)行優(yōu)化分析。

7、緩存主件(Caches & Buffers)

緩存和緩沖組件

8、MySQL存儲(chǔ)引擎

MySQL屬于關(guān)系型數(shù)據(jù)庫,而關(guān)系型數(shù)據(jù)庫的存儲(chǔ)是以表的形式進(jìn)行的,對(duì)于表的創(chuàng)建,數(shù)據(jù)的存儲(chǔ),檢索,更新等都是由MySQL存儲(chǔ)引擎完成的。

因MySQL的開源性,允許第三方基于MySQL骨架,開發(fā)適合自己業(yè)務(wù)需求的存儲(chǔ)引擎。因此,MySQL支持的存儲(chǔ)引擎種類較多,可以分為官方存儲(chǔ)引擎和第三方存儲(chǔ)引擎。

當(dāng)前,MySQL的存儲(chǔ)引擎有MyISAM、InnoDB、NDB、Archive、Federated、Memory、Merge、Parter、Community、Custom等。其中,比較常用的存儲(chǔ)引擎包括InnoDB、MyISAM和Momery。

9、物理文件(File System)

實(shí)際存儲(chǔ)MySQL數(shù)據(jù)庫文件和一些日志文件等的系統(tǒng),如Linux,Unix,Windows等。

(二) 一個(gè)查詢流程圖

 

(三) MySQL的高可用架構(gòu)

因MySQL的開源屬性,其高可用架構(gòu)非常靈活,目前常用的主要有以下幾種:

1、主從復(fù)制模式

這是MySQL自身提供的一種高可用解決方案,數(shù)據(jù)同步方法采用的是MySQL replication技術(shù)。為了達(dá)到更高的可用性,在實(shí)際的應(yīng)用環(huán)境中,需要配合高可用集群軟件keepalived來實(shí)現(xiàn)自動(dòng)failover,否則,需要手工切換。

 

2、MHA(Master High Availability)

MHA是相對(duì)成熟的高可用解決方案,該軟件由兩部分組成:MHA Manager(管理節(jié)點(diǎn))和MHA Node(數(shù)據(jù)節(jié)點(diǎn))。搭建MHA時(shí),要求一個(gè)集群必須最少有三臺(tái)數(shù)據(jù)庫服務(wù)器,一主二從(即一臺(tái)master,一臺(tái)備用master,另外一臺(tái)slave)。

MHA Manager可以單獨(dú)部署在一臺(tái)獨(dú)立的機(jī)器上管理多個(gè)master-slave集群,或部署在一臺(tái)slave節(jié)點(diǎn)上,MHA Node運(yùn)行在每臺(tái)MySQL服務(wù)器上。

運(yùn)行時(shí),MHA Manager會(huì)定時(shí)探測(cè)集群中的master節(jié)點(diǎn),當(dāng)master故障時(shí),會(huì)自動(dòng)將最新數(shù)據(jù)的slave提升為新的master,然后將其他所有slave重新指向新的master。整個(gè)故障轉(zhuǎn)移過程對(duì)應(yīng)用程序完全透明。整個(gè)切換過程如下:

從宕機(jī)崩潰的master保存二進(jìn)制日志事件(binlog events);

識(shí)別含有最新更新的slave;

應(yīng)用差異的中繼日志(relay log)到其他的slave;

應(yīng)用從master保存的二進(jìn)制日志事件(binlog events);

提升一個(gè)slave為新的master;

使其他的slave連接新的master進(jìn)行復(fù)制;

3、MGR(MySQL Group Replication)

MGR是MySQL官方推薦的另一種高可用架構(gòu),復(fù)制組間的數(shù)據(jù)同步基于Paxos協(xié)議。

當(dāng)客戶端發(fā)起更新事務(wù)時(shí),該事務(wù)先在本地執(zhí)行,執(zhí)行完成之后就要發(fā)起對(duì)事務(wù)的提交操作。在還沒有真正提交之前,需要將產(chǎn)生的復(fù)制寫集廣播出去,復(fù)制到其它成員。如果沖突檢測(cè)成功,組內(nèi)決定該事務(wù)可以提交,其它成員可以應(yīng)用,否則就回滾。

 

組復(fù)制可以在兩種模式下運(yùn)行:

  • 單主模式下,組復(fù)制具有自動(dòng)選主功能,每次只有一個(gè) Server成員接受更新,其它成員只提供讀服務(wù)。
  • 多主模式下,所有的Server 成員都可以同時(shí)接受更新,沒有主從之分,成員角色是完全對(duì)等的。

三、 PostgreSQL

(一) PostgreSQL 的體系架構(gòu)

PostgreSQL 使用C/S模式提供服務(wù)。客戶端和服務(wù)器可以在不同的主機(jī)上,通過TCP/IP進(jìn)行網(wǎng)絡(luò)連接,架構(gòu)如下:

 

1、主進(jìn)程Postgres(常駐進(jìn)程)

主進(jìn)程是PostgreSQL啟動(dòng)時(shí),第一個(gè)啟動(dòng)的進(jìn)程Postgres。啟動(dòng)時(shí),他會(huì)執(zhí)行恢復(fù)、初始化共享內(nèi)存,啟動(dòng)后臺(tái)進(jìn)程。當(dāng)有客戶端發(fā)起鏈接請(qǐng)求時(shí),postgres會(huì)生成子進(jìn)程,同時(shí)創(chuàng)建后端進(jìn)程。

是整個(gè)數(shù)據(jù)庫實(shí)例的總控進(jìn)程,負(fù)責(zé)啟動(dòng)和關(guān)閉該數(shù)據(jù)庫實(shí)例。

 

2、Postgres(子進(jìn)程),子進(jìn)程

Postgres接受前端請(qǐng)求,對(duì)數(shù)據(jù)庫進(jìn)行檢索,最后返回結(jié)果。如請(qǐng)求是對(duì)數(shù)據(jù)庫進(jìn)行更新,會(huì)先記錄日志(PostgreSQL稱為WAL日志),以便宕機(jī)重啟時(shí)的數(shù)據(jù)恢復(fù)。另外,日志會(huì)定期歸檔保存,以便需要時(shí)進(jìn)行數(shù)據(jù)恢復(fù)。

3、后臺(tái)進(jìn)程(Background Process)

  • Syslogger(系統(tǒng)日志)進(jìn)程

將錯(cuò)誤信息寫到log日志中。

  • BgWriter(后臺(tái))進(jìn)程

周期性的將臟內(nèi)存塊寫入文件。

  • Checkpointer

當(dāng)檢查點(diǎn)出現(xiàn)時(shí),將臟內(nèi)存塊寫到數(shù)據(jù)文件

  • WalWrite(預(yù)寫式日志)進(jìn)程

將WAL(Write Ahead Log預(yù)寫式日志)緩存寫入WAL文件。

  • PgArch(歸檔)進(jìn)程

在歸檔模式下時(shí),復(fù)制WAL文件到特定的路徑下。

WAL日志會(huì)被循環(huán)使用,PgArch在歸檔前會(huì)把WAL日志備份出來。通過PITY(Point in Time Recovery)技術(shù),可以對(duì)數(shù)據(jù)庫進(jìn)行一次全量備份后,該技術(shù)將備份時(shí)間點(diǎn)之后的WAL日志通過歸檔進(jìn)行備份,使用數(shù)據(jù)庫的全量備份再加上后面產(chǎn)生的WAL日志,即可把數(shù)據(jù)庫向前推到全量備份后的任意一個(gè)時(shí)間點(diǎn)。

  • AutoVacuum(自動(dòng)清理)進(jìn)程

當(dāng)自動(dòng)vacuum被啟用時(shí),用來派生autovacuum工作進(jìn)程。autovacuum進(jìn)程的作用是在需要時(shí)自動(dòng)對(duì)膨脹表執(zhí)行vacuum操作。

在PostgreSQL數(shù)據(jù)庫中,對(duì)表進(jìn)行DELETE操作后,舊的數(shù)據(jù)并不會(huì)立即被刪除,并且,在更新數(shù)據(jù)時(shí),也并不會(huì)在舊的數(shù)據(jù)上做更新,而是新生成一行數(shù)據(jù)。舊的數(shù)據(jù)只是被標(biāo)識(shí)為刪除狀態(tài),只有在沒有并發(fā)的其他事務(wù)讀到這些就數(shù)據(jù)時(shí),它們才會(huì)被清楚。這個(gè)清除工作就有AutoVacuum進(jìn)程完成。

  • PgStat(統(tǒng)計(jì)數(shù)據(jù)收集)進(jìn)程

用來收集數(shù)據(jù)庫統(tǒng)計(jì)信息。

4、共享內(nèi)存和本地內(nèi)存

示意圖如下:

 

  • 共享內(nèi)存

PostgreSQL啟動(dòng)后,會(huì)生成一塊共享內(nèi)存,用于做數(shù)據(jù)塊的緩沖區(qū),以便提高讀寫性能。WAL日志緩沖區(qū)和Clog緩沖區(qū)也存在共享內(nèi)存中,除此之外還有全局信息比如進(jìn)程、鎖、全局統(tǒng)計(jì)等信息也保存在共享內(nèi)存中。

數(shù)據(jù)緩沖區(qū)通過BgWrite進(jìn)程,定期將數(shù)據(jù)寫入數(shù)據(jù)文件。WAL緩沖區(qū)通過WALWrite進(jìn)程寫入WAL文件,并通過PgArch定期進(jìn)行歸檔,寫入歸檔日志

  • 本地內(nèi)存

非全局存儲(chǔ)的數(shù)據(jù)都存在本地內(nèi)存中,主要包括:

臨時(shí)緩沖區(qū):用于臨時(shí)表。默認(rèn)值為8MB

work_mem: 用于排序、位圖索引、哈希鏈接和合并鏈接操作。默認(rèn)值為4MB。。

manintance_work_mem: 用于vacuum和創(chuàng)建索引操作。默認(rèn)值為64MB。

(二) 數(shù)據(jù)結(jié)構(gòu)

1. 數(shù)據(jù)庫相關(guān)概念:

PostgreSQL由一系列數(shù)據(jù)庫組成。一套PostgreSQL程序稱之為一個(gè)數(shù)據(jù)庫群集。

當(dāng)initdb()命令執(zhí)行后,template0 , template1 , 和postgres數(shù)據(jù)庫被創(chuàng)建。

template0和template1數(shù)據(jù)庫是創(chuàng)建用戶數(shù)據(jù)庫時(shí)使用的模版數(shù)據(jù)庫,他們包含系統(tǒng)元數(shù)據(jù)表。

initdb()剛完成后,template0和template1數(shù)據(jù)庫中的表是一樣的。但是template1數(shù)據(jù)庫可以根據(jù)用戶需要?jiǎng)?chuàng)建對(duì)象。

用戶數(shù)據(jù)庫是通過克隆template1數(shù)據(jù)庫來創(chuàng)建的;

2. 表空間相關(guān)概念:

initdb()后,創(chuàng)建pg_default和pg_global表空間。

建表時(shí)如果沒有指定特定的表空間,表默認(rèn)被存在pg_default表空間中。

用于管理整個(gè)數(shù)據(jù)庫集群的表默認(rèn)被存儲(chǔ)在pg_global表空間中。

pg_default表空間的物理位置為$PGDATAbase目錄。

pg_global表空間的物理位置為$PGDATAglobal目錄。

一個(gè)表空間可以被多個(gè)數(shù)據(jù)庫同時(shí)使用。此時(shí),每一個(gè)數(shù)據(jù)庫都會(huì)在表空間路徑下創(chuàng)建為一個(gè)新的子路徑。

創(chuàng)建一個(gè)用戶表空間會(huì)在$PGDATApg_tblspc目錄下面創(chuàng)建一個(gè)軟連接,連接到表空間制定的目錄位置。

3. 表相關(guān)概念:

每個(gè)表有三個(gè)數(shù)據(jù)文件:

一個(gè)文件用于存儲(chǔ)數(shù)據(jù)(文件名是表的OID);

一個(gè)文件用于管理表的空閑空間(文件名是OID_fsm)。

一個(gè)文件用于管理表的塊是否可見(文件名是OID_vm)。

索引沒有_vm文件,只有OID和OID_fsm兩個(gè)文件

(三) 后端進(jìn)程的處理流程

接收前端發(fā)送過來的查詢(SQL文)

構(gòu)文解析。將SQL文(單純的文字)轉(zhuǎn)換成構(gòu)文樹parser tree。

構(gòu)文樹解析完以后,換為查詢樹。這時(shí)會(huì)訪問數(shù)據(jù)庫,檢查表是否存在,如果存在的話,則把表名轉(zhuǎn)換為OID。這個(gè)處理稱為分析處理(Analyze)。

因PostgreSQL還通過查詢語句的重寫實(shí)現(xiàn)視圖(view)和規(guī)則(rule),所以需要時(shí),此階段會(huì)對(duì)查詢語句進(jìn)行重寫。

解析查詢樹后,可生成計(jì)劃樹。

按照?qǐng)?zhí)行計(jì)劃里面的步驟可以完成查詢要達(dá)到的目的。

執(zhí)行結(jié)果返回給前端。

返回到步驟一重復(fù)執(zhí)行。

四、 國產(chǎn)關(guān)系型數(shù)據(jù)庫

國產(chǎn)關(guān)系型數(shù)據(jù)庫較多,此處僅以GaussDB T為例

(一) GaussDB T架構(gòu)

1. 內(nèi)存結(jié)構(gòu)

內(nèi)存結(jié)構(gòu)分為4部分,如下圖:

 

Listener:包括TCP LSNR和IPC LSNR,用于偵聽用戶的連接請(qǐng)求

Agent Pool:代理的連接池

SGA:

Log Buffer: 全局日志緩沖區(qū),緩存redo日志

Data Buffer:全局?jǐn)?shù)據(jù)頁緩沖區(qū),用于緩存表索引等數(shù)據(jù)

SQL Cache:全局執(zhí)行計(jì)劃緩沖區(qū)

Sort Area: 全局排序/物化緩沖區(qū)

Dictionary Cache: 全局?jǐn)?shù)據(jù)字典(元數(shù)據(jù))緩沖區(qū)

Large pool,大池,存放較大的SQL

Session Pool,全局Session池,用于存放Session

  • 后臺(tái)進(jìn)程

LOGW:日志寫線程,負(fù)責(zé)將log buffer中的日志寫到磁盤。

CKPT:負(fù)責(zé)將臟頁(Dirty Page)刷到磁盤,保證WAL,并更新Control File。

SMON:負(fù)責(zé)監(jiān)測(cè)系統(tǒng)的狀態(tài),比如檢測(cè)死鎖,修復(fù)異常的session。

JOBS:應(yīng)用定制的后臺(tái)任務(wù)調(diào)度。

LOGR:日志復(fù)制,用于HA和GR。

ARCH:用于日志文件歸檔。

2、存儲(chǔ)結(jié)構(gòu)

數(shù)據(jù)以文件方式存儲(chǔ),主要有三種文件:

DATA FILE,數(shù)據(jù)文件,用于存放各種數(shù)據(jù),單庫最多1024個(gè)數(shù)據(jù)文件,每個(gè)數(shù)據(jù)文件最大8T(undo除外,undo最大32G)

LOG FILE,日志文件,用于存放redo日志,可以重復(fù)使用,最少3組,每個(gè)redo 日志文件一般建議5-20G

CONTROL FILE,控制文件,用于數(shù)據(jù)庫名、數(shù)據(jù)文件位置等信息,在數(shù)據(jù)庫啟動(dòng)到mount階段時(shí)會(huì)檢查。

(二) GaussDB T關(guān)鍵技術(shù)

 

當(dāng)進(jìn)行事務(wù)提交時(shí),必須先將Redo log刷盤。

臟頁數(shù)據(jù)刷盤后,可用Redo日志可回收。

如果數(shù)據(jù)未刷盤前掉電,加電后需要重做Redo,保持?jǐn)?shù)據(jù)的一致性。

臟頁隊(duì)列:臟頁按時(shí)序組成鏈表,即臟頁隊(duì)列,Checkpoint按該隊(duì)列順序分組刷盤;

Checkpoint任務(wù)調(diào)度:Checkpoint后臺(tái)服務(wù)線程通過定時(shí)、臟頁量、RedoLog滿,三個(gè)策略滿足之一會(huì)觸發(fā)刷盤操作;

Redo 任務(wù)調(diào)度:Redo后臺(tái)服務(wù)線程通過定時(shí)、Redo buffer量、事務(wù)提交滿足之一時(shí)會(huì)觸發(fā)Redo Log Buffer刷盤操作;

鏡像頁機(jī)制:刷盤時(shí)間相對(duì)較長,為避免I/O阻塞,Checkpoint通過一個(gè)鏡像頁面緩存來完成刷盤。

采用MVCC機(jī)制提高事務(wù)并發(fā)能力。

(三) GaussDB T的高可用部署模式

1、單機(jī)和主備部署模式

 

2、分布式部署模式

 

(四) 典型的分布式部署架構(gòu)

 

各組件說明如下:

OM(Operation Manager):運(yùn)維管理模塊。提供集群日常運(yùn)維、配置管理的管理接口、工具。

CM(Cluster Manager):集群管理模塊。管理和監(jiān)控分布式系統(tǒng)中各個(gè)功能單元和物理資源的運(yùn)行情況,確保整個(gè)系統(tǒng)的穩(wěn)定運(yùn)行。

CN(Coordinator Node):協(xié)同調(diào)度節(jié)點(diǎn)。負(fù)責(zé)接收來自應(yīng)用的訪問請(qǐng)求,并向客戶端返回執(zhí)行結(jié)果;負(fù)責(zé)分解任務(wù),并調(diào)度任務(wù)分片在各DN上并行執(zhí)行。集群中,CN有多個(gè)且CN的角色是平等的。

DN(Datanode):數(shù)據(jù)節(jié)點(diǎn)。負(fù)責(zé)存儲(chǔ)業(yè)務(wù)數(shù)據(jù),執(zhí)行數(shù)據(jù)查詢?nèi)蝿?wù)以及向CN返回執(zhí)行結(jié)果。在集群中,DN有多個(gè)。每個(gè)DN支持設(shè)置多個(gè)存儲(chǔ)備機(jī)。

GTS(Global Time Server):全局時(shí)鐘服務(wù)器。用于強(qiáng)一致場(chǎng)景下,為各個(gè)節(jié)點(diǎn)提供邏輯時(shí)鐘。

五、 主流關(guān)系型數(shù)據(jù)庫特點(diǎn)分析

 

 

責(zé)任編輯:武曉燕 來源: twt社區(qū)
相關(guān)推薦

2022-09-24 09:05:16

關(guān)系型數(shù)據(jù)庫架構(gòu)

2022-06-13 08:30:01

數(shù)據(jù)庫管理系統(tǒng)

2022-07-27 08:32:01

數(shù)據(jù)庫MySQL

2017-03-17 14:44:04

關(guān)系型數(shù)據(jù)庫原理

2022-05-31 07:58:49

TiDB數(shù)據(jù)庫開源

2018-07-18 09:16:39

關(guān)系型非關(guān)系型數(shù)據(jù)庫

2022-10-24 08:08:27

閉包編譯器

2023-01-03 08:06:00

2021-09-06 10:24:12

鴻蒙HarmonyOS應(yīng)用

2023-08-01 14:35:00

關(guān)系數(shù)據(jù)庫排列

2016-08-23 14:25:19

MySQL約束數(shù)據(jù)庫

2017-09-30 10:41:22

數(shù)據(jù)庫PolarDB關(guān)系

2023-06-01 07:30:42

分析數(shù)據(jù)源關(guān)系型數(shù)據(jù)庫

2019-08-16 09:12:59

數(shù)據(jù)庫PostgreSQL Oracle

2010-12-10 10:17:21

關(guān)系型數(shù)據(jù)庫

2012-07-02 14:39:59

架構(gòu)敏捷

2018-03-26 12:58:52

數(shù)據(jù)庫OracleMySQL

2011-06-07 17:14:15

關(guān)系型數(shù)據(jù)庫壓縮技術(shù)

2018-04-23 16:46:59

開源

2017-02-08 11:00:50

數(shù)據(jù)庫索引類型
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

国产成人高清激情视频在线观看| 亚洲欧美日韩在线一区| 肉大捧一出免费观看网站在线播放| 国产婷婷在线视频| 先锋影音国产一区| 久久久av亚洲男天堂| 国产激情第一页| 成人午夜毛片| 午夜精品久久久久久久久久| 色99中文字幕| 丰满肉肉bbwwbbww| 老司机午夜精品99久久| 91a在线视频| 国产高潮流白浆| 国产成人久久| 亚洲精品99久久久久中文字幕| 污色网站在线观看| 亚洲风情在线资源| 有码一区二区三区| 亚洲一区二区在线看| 亚洲色图欧美视频| 国产成人亚洲精品狼色在线| 国产精品久久久久久久久男| 六月丁香在线视频| 国产在线不卡| 久久精品国产成人| 亚洲AV无码成人精品区明星换面| 玖玖玖视频精品| 在线观看网站黄不卡| 无码专区aaaaaa免费视频| 日本视频在线观看| 久久九九国产精品| 久久99精品国产99久久| www久久久久久| 精品一区二区三区在线视频| 国产精品69精品一区二区三区| 日韩美女黄色片| 国产精品大片免费观看| 日韩在线观看视频免费| 永久免费av无码网站性色av| 日韩精品免费一区二区三区竹菊| 亚洲成人av片| 国产精品91av| 136国产福利精品导航网址应用| 欧美一区二区三区在线看| 男操女免费网站| 日本欧美一区| 欧美性受xxxx| 视频在线观看免费高清| 国产成+人+综合+亚洲欧美| 欧美制服丝袜第一页| 国产成人av影视| 欧美va在线观看| 在线观看亚洲一区| 欧美美女一级片| **日韩最新| 日韩片之四级片| 丰满少妇xbxb毛片日本| www.成人网| 日韩经典中文字幕在线观看| 五级黄高潮片90分钟视频| 亚洲日产av中文字幕| 亚洲欧美在线第一页| 一区二区三区伦理片| 郴州新闻综合频道在线直播| 日韩中文字幕视频在线| 国产人与禽zoz0性伦| 亚洲色图网站| 九九精品在线视频| 日韩欧美亚洲一区二区三区| 久久精品男女| 国产在线999| av网站免费大全| www.亚洲精品| 日韩高清国产一区在线观看| 在线激情免费视频| 伊人一区二区三区| 亚洲 高清 成人 动漫| 国产成人精品123区免费视频| 欧美网站一区二区| 69久久精品无码一区二区| 高潮按摩久久久久久av免费| 亚洲情综合五月天| 91嫩草丨国产丨精品| 亚洲久久一区| 国产欧美精品一区二区三区-老狼 国产欧美精品一区二区三区介绍 国产欧美精品一区二区 | 天堂在线中文视频| 亚洲精品电影| 欧美一二三视频| 国产精品永久久久久久久久久| 丰满亚洲少妇av| 日本在线高清视频一区| caoporn97在线视频| 狠狠色狠色综合曰曰| 免费涩涩18网站入口| 超碰精品在线| 色播久久人人爽人人爽人人片视av| 久艹视频在线观看| 热久久一区二区| 动漫一区二区在线| av电影在线观看| 亚洲va欧美va人人爽| 亚洲高清在线免费观看| 波多野结衣在线一区二区 | 国产午夜手机精彩视频| 在线亚洲一区| 97超碰资源| av在线电影观看| 亚洲成人福利片| 亚洲天堂av一区二区| 国产精品密蕾丝视频下载| 欧美富婆性猛交| 亚洲综合免费视频| 91老司机福利 在线| 日本熟妇人妻xxxx| 亚洲在线资源| 中文字幕无线精品亚洲乱码一区 | 欧美在线综合视频| 国产精品探花一区二区在线观看| 综合av在线| 成人免费视频网址| 国产爆初菊在线观看免费视频网站| 亚洲aⅴ怡春院| 亚洲午夜精品在线观看| 久久中文字幕av一区二区不卡| 欧美在线一区二区视频| 少妇一区二区三区四区| 一区二区三区精品视频| 中文字幕亚洲影院| 香蕉国产精品| 国产在线a不卡| 日本在线www| 欧美三级韩国三级日本一级| 3d动漫精品啪啪一区二区下载| 在线 亚洲欧美在线综合一区| 91在线看网站| 超碰最新在线| 日韩一级片在线观看| 国产极品美女在线| 激情综合五月天| 一区二区三区视频| 四虎精品在线观看| 久久亚洲精品中文字幕冲田杏梨| 亚洲无码久久久久| 中日韩av电影| 日本黄大片一区二区三区| 日韩精品中文字幕第1页| 国产精品日韩精品| 日本在线人成| 在线播放欧美女士性生活| 国产三级aaa| 激情久久五月天| 懂色av粉嫩av蜜臀av| 久久伊人久久| 97国产一区二区精品久久呦| 污污网站在线免费观看| 都市激情亚洲色图| 色欲AV无码精品一区二区久久 | 亚洲专区国产精品| 直接在线观看的三级网址| 日韩欧美一级特黄在线播放| 国产亚洲欧美精品久久久久久| 成人美女视频在线看| 免费看日本毛片| 精品国产一区二区三区香蕉沈先生 | 亚洲国产日韩欧美在线动漫| 4438国产精品一区二区| 亚洲国产精品二十页| 国产无色aaa| 黄色免费成人| 国产在线一区二区三区四区| 黄色亚洲网站| 日韩视频免费大全中文字幕| 国产高清视频免费观看| 精品人伦一区二区三区蜜桃免费| 国产精品免费无码| 国产精品中文字幕一区二区三区| 免费一级特黄毛片| 国产一区二区三区不卡视频网站| 成人国产在线视频| www.超碰在线| 中文字幕日韩免费视频| 亚洲黄色在线播放| 色视频欧美一区二区三区| 搜索黄色一级片| www国产精品av| 日本精品一区在线| 亚洲欧美久久久| 99精品一级欧美片免费播放| 秋霞影视一区二区三区| 国产欧美va欧美va香蕉在线| 国产精品xx| 久久精品亚洲一区| 色视频在线观看| 日韩一区二区在线看| 在线免费观看av网址| 一级女性全黄久久生活片免费| 美女被到爽高潮视频| 高清国产午夜精品久久久久久| 国产一二三四在线视频| 亚洲免费播放| 日韩video| 精品日本12videosex| 7777精品伊久久久大香线蕉语言| 中文在线а√天堂| 九九热在线精品视频| yourporn在线观看中文站| 亚洲第一区第二区| 国产女主播福利| 色8久久人人97超碰香蕉987| 国产第一页在线播放| 国产精品国产自产拍高清av| 日韩av在线看免费观看| 国产91精品欧美| 91精产国品一二三产区别沈先生| 天堂一区二区在线| 日韩欧美一区三区| 欧美日本不卡| 自拍偷拍视频在线| 欧美日韩老妇| 欧美日韩在线一二三| 久久精品国产亚洲5555| 亚洲综合在线中文字幕| 日本午夜免费一区二区| 国产精品黄视频| 深夜成人福利| 欧洲精品毛片网站| 涩涩视频在线| 91精品国产高清自在线看超| 国模私拍视频在线播放| 精品中文字幕在线2019| 国产网友自拍视频导航网站在线观看 | 国产成人在线精品| 暖暖成人免费视频| 欧美综合第一页| 五月天av在线| 91大神在线播放精品| 黄在线观看免费网站ktv| 久久久久免费精品国产| 爱情岛论坛亚洲品质自拍视频网站| 久久国产精品久久久久| 色老头在线观看| 欧美激情精品久久久久久久变态| 美女精品导航| 国内精品久久久久久久久| av资源一区| 欧美亚洲免费电影| 日韩欧美看国产| 国产精品精品视频| 久久人人视频| 91久久久久久| 99国产精品免费网站| 国产chinese精品一区二区| 久久夜色精品国产噜噜av小说| 国产一区二区免费电影| 免费欧美一区| 亚洲精品国产精品国自产观看| 97精品视频| 成人在线观看毛片| 亚洲另类视频| 亚洲中文字幕久久精品无码喷水| 欧美aaaaaa午夜精品| 涩涩网站在线看| 成a人片亚洲日本久久| 好吊日免费视频| 国产精品国产三级国产有无不卡| 搜索黄色一级片| 五月天久久比比资源色| 狠狠狠狠狠狠狠| 欧美日本一区二区在线观看| www.超碰在线.com| 亚洲欧美日韩一区在线| 巨大荫蒂视频欧美另类大| 久久久久久久国产精品| 成人免费看黄| 成人激情电影一区二区| 岛国成人av| 视频一区免费观看| 欧美激情视频一区二区三区在线播放 | 欧美精品第一页| 亚洲AV无码一区二区三区少妇| 日韩精品在线观| 欧洲不卡视频| 97在线精品视频| 日韩五码电影| 精品免费国产| 亚洲成人tv| 男人天堂网视频| 国产老肥熟一区二区三区| 37p粉嫩大胆色噜噜噜| 一区在线中文字幕| 久久露脸国语精品国产91| 欧美日本国产视频| 肉丝一区二区| 欧美大片在线看| av久久网站| 国产伦精品一区二区三| 日韩在线视屏| 色欲av无码一区二区人妻| 国产在线播放一区三区四| 国产精品探花一区二区在线观看| 亚洲精品写真福利| 亚洲午夜无码久久久久| 亚洲精品美女久久| a级片国产精品自在拍在线播放| 国产精品福利久久久| 欧美巨大xxxx| 九一免费在线观看| 精品一区二区三区香蕉蜜桃 | 五月激情婷婷综合| 不卡毛片在线看| www.26天天久久天堂| 久久99精品国产一区二区三区| 欧美精品入口| 亚洲高清在线不卡| 国产欧美日韩综合精品一区二区| 日韩手机在线观看| 精品乱人伦小说| 哥也色在线视频| 国产在线视频欧美| 日韩精品免费一区二区三区| 免费日韩视频在线观看| www.亚洲在线| 久草视频精品在线| 欧美一级夜夜爽| 黄色网址视频在线观看| 国产欧美一区二区| 久久影院一区| 在线观看亚洲色图| 国产亚洲一二三区| 亚洲综合图片网| 亚洲欧美另类自拍| 精品国产免费人成网站| 免费一区二区三区| 国产精品久久久久毛片大屁完整版| 国产综合内射日韩久| 亚洲一区二区三区四区不卡| 亚洲国产一二三区| 国内精品一区二区三区| 老司机精品在线| 97国产在线播放| 99久久综合国产精品| 日韩欧美激情视频| 日韩成人中文电影| 免费福利视频一区二区三区| 欧美亚洲爱爱另类综合| 久久久久久久欧美精品| 成人激情五月天| 欧美日韩一区二区电影| 久操视频在线| 98国产高清一区| 亚洲精品乱码| 精品国产无码在线观看| 欧美在线影院一区二区| 蜜芽在线免费观看| av免费观看久久| 日韩一级欧洲| 亚洲精品一区二区三区影院忠贞| 欧美揉bbbbb揉bbbbb| wwwav在线| 国内精品视频在线播放| 丝袜美腿亚洲一区| 国产aaaaaaaaa| 日韩一级黄色大片| 欧产日产国产精品视频| 奇米视频888战线精品播放| 麻豆精品在线播放| 久久国产精品二区| 亚洲人成伊人成综合网久久久| 欧美日韩五区| 999一区二区三区| 久久婷婷成人综合色| 中文字幕在线一| 欧美日韩第一视频| 亚洲日产av中文字幕| 欧美午夜精品理论片| 欧美日韩久久久久| 秋霞午夜在线观看| 精品国产乱码久久久久久108| 天堂成人国产精品一区| 久久精品一区二区三区四区五区| 精品av久久707| abab456成人免费网址| 中文字幕人妻熟女人妻洋洋| 国产亚洲综合性久久久影院| aaaa一级片| 国产成人精品av| 欧美日韩少妇| 大胸美女被爆操| 亚洲精品suv精品一区二区| 亚洲国产91视频| 国产欧美在线一区| 一区二区三区四区在线免费观看| 国产综合视频一区二区三区免费| 亚洲一区二区三区成人在线视频精品| 一本色道久久综合一区| 麻豆视频在线免费看| 亚洲偷欧美偷国内偷| 加勒比色老久久爱综合网| 在线观看免费av网址|