第二章· MySQL體系結構管理

第二章· MySQL體系結構管理mysql

 

一.客戶端與服務器模型redis

sql

  • 1.mysql是一個典型的C/S服務結構緩存

    • 1.1 mysql自帶的客戶端程序(/application/mysql/bin)安全

      • mysql服務器

      • mysqladmin多線程

      • mysqldumpapp

 

  • 1.2 mysqld一個二進制程序,後臺的守護進程socket

    • 單進程tcp

    • 多線程

 

  • 2.應用程鏈接MySQL方式

    • TCP/IP的鏈接方式

    • 套接字鏈接方式

 

 

思考:mysql -uroot -poldboy123是使用了哪一個鏈接方式???

 

二.MySQL服務器構成

 

什麼是實例

 

  • 1.MySQL的後臺進程+線程+預分配的內存結構。

  • 2.MySQL在啓動的過程當中會啓動後臺守護進程,並生成工做線程,預分配內存結構供MySQL處理數據使用。

 

圖1.1-word的打開方式

圖1.2-mysqld的打開方式

MySQLD服務器程序構成

 

mysqld是一個守護進程可是自己不能自主啓動:

[root@db01 ~]# mysql -uroot -poldboy123 [root@db01 ~]# select user,host,password from mysql.user;

 

鏈接層

  • 一、提供鏈接協議(socket、tcp/ip)

  • 二、驗證用戶的合法性(用戶名、密碼、白名單)

  • 三、提供一個專用鏈接線程(接收SQL、返回結果),將SQL語句交給SQL層繼續處理

 

 

SQL層

 

  • 一、接收到SQL語句,語法判斷。

  • 二、判斷語義(判斷語句類型:DML、DDL、DCL、DQL)

  • 三、解析SQL語句,生成多種執行計劃

  • 四、優化器,選擇他認爲成本最低的執行計劃。

  • 五、執行器根據優化器的選擇,按照優化器建議執行SQL語句,獲得去哪兒找SQL語句須要訪問的數據

    • 5.1 具體:在哪一個數據文件上的哪一個數據頁中?

    • 5.2 將以上結果充送給下層繼續處理

  • 六、接收存儲引擎層的數據,結構化成表的形式,經過鏈接層提供的專用線程,將表數據返回給用戶。

  • 七、提供查詢緩存

    • 7.1 query_cache, 使用memcache 或者redis 替代

  • 八、日誌記錄(binlog)

 

存儲引擎層

 

  • 一、接收上層的執行結果

  • 二、取出磁盤文件和相應數據

  • 三、返回給SQL層,結構化以後生成表格,由專用線程返回給客戶端

三.MySQL的結構

 

MySQL的邏輯結構(熟悉)

 

MySQL的邏輯對象:作爲管理人員或者開發人員操做的對象

 

  • 一、庫

  • 二、表:元數據+真實數據行

  • 三、元數據:列+其它屬性(行數+佔用空間大小+權限)

  • 四、列:列名字+數據類型+其餘約束(非空、惟1、主鍵、非負數、自增加、默認值)

最直觀的數據:二維表,必須用庫來存放

MySQL邏輯結構與Linux系統對比

MySQL Linux
目錄
show databases; ls-l /
use mysql cd /mysql
文件
show tables; ls
二維表=元數據+真實數據行 文件=文件名+文件屬性

 

MySQL的物理結構(瞭解)

1)MySQL的最底層的物理結構是數據文件,也就是說,存儲引擎層,打交道的文件,是數據文件。

2)存儲引擎分爲不少種類(Linux中的FS)

3)不一樣存儲引擎的區別:存儲方式、安全性、性能

 

myisam:

 

innodb:

 

段、區、頁(塊)

  • 一、段:理論上一個表就是一個段,由多個區構成,(分區表是一個分區一個段)

  • 二、區:連續的多個頁構成

  • 三、頁:最小的數據存儲單元,默認是16k

相關文章
相關標籤/搜索