第二章· MySQL體系結構管理

一.客戶端與服務器模型

mysql

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

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

mysql
mysqladmin
mysqldump

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

單進程
多線程redis

2.應用程鏈接MySQL方式

TCP/IP的鏈接方式
sql

套接字鏈接方式
緩存

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

二.MySQL服務器構成

1 什麼是實例

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

圖1.1-word的打開方式
服務器

圖1.2-mysqld的打開方式多線程

2MySQLD服務器程序構成

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

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

3 鏈接層

  • 一、提供鏈接協議(socket、tcp/ip)
  • 二、驗證用戶的合法性(用戶名、密碼、白名單)
  • 三、提供一個專用鏈接線程(接收SQL、返回結果),將SQL語句交給SQL層繼續處理

4 SQL層

  • 一、接收到SQL語句,語法判斷。
  • 二、判斷語義(判斷語句類型:DML、DDL、DCL、DQL)
  • 三、解析SQL語句,生成多種執行計劃
  • 四、優化器,選擇他認爲成本最低的執行計劃。
  • 五、執行器根據優化器的選擇,按照優化器建議執行SQL語句,獲得去哪兒找SQL語句須要訪問的數據
    5.1 具體:在哪一個數據文件上的哪一個數據頁中?
    5.2 將以上結果充送給下層繼續處理
  • 六、接收存儲引擎層的數據,結構化成表的形式,經過鏈接層提供的專用線程,將表數據返回給用戶。
  • 七、提供查詢緩存
    7.1 query_cache, 使用memcache 或者redis 替代
  • 八、日誌記錄(binlog)

5 存儲引擎層

  • 一、接收上層的執行結果
  • 二、取出磁盤文件和相應數據
  • 三、返回給SQL層,結構化以後生成表格,由專用線程返回給客戶端

三.MySQL的結構

1 MySQL的邏輯結構(熟悉)

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

  • 一、庫
  • 二、表:元數據+真實數據行
  • 三、元數據:列+其它屬性(行數+佔用空間大小+權限)
  • 四、列:列名字+數據類型+其餘約束(非空、惟1、主鍵、非負數、自增加、默認值)
    最直觀的數據:二維表,必須用庫來存放

MySQL邏輯結構與Linux系統對比tcp

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

2 MySQL的物理結構(瞭解)

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

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

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

myisam:

innodb:

3 段、區、頁(塊)

  • 一、段:理論上一個表就是一個段,由多個區構成,(分區表是一個分區一個段)
  • 二、區:連續的多個頁構成
  • 三、頁:最小的數據存儲單元,默認是16k
相關文章
相關標籤/搜索