一.客戶端與服務端模型 1.mysql是一個典型的c/s服務結構 1.mysql自帶的客戶端程式(/application/mysql/bin) mysql mysqladmin mysqldump 2.市面上大部分的開發語言都需要一個客戶端連接程式連接mysql的服務端 2.mysql是一個守護進 ...
一.客戶端與服務端模型
1.mysql是一個典型的c/s服務結構
1.mysql自帶的客戶端程式(/application/mysql/bin)
mysql mysqladmin mysqldump
2.市面上大部分的開發語言都需要一個客戶端連接程式連接mysql的服務端
2.mysql是一個守護進程,是一個二進位的程式
mysql.server是一個啟動腳本,mysqld_safe是一個啟動命令,mysqld則是一個守護進程
3.連接客戶端方式
1.TCP/IP
mysql -uroot -p123 -h127.0.0.1
2.socket(套接式連接)
mysql -uroot -p123 -S /tmp/mysql.sock mysql -uroot -p123 mysql -uroot -p123 -hlocalhost
3.查看連接方式
1.並不是所有-h都是tcp/ip連接,所有遠程連接都是tcp/ip連接
2.MySQL的預設連接時socket連接
3.socket連接速度十分快速,由於不需要建立tcp三次握手
4.實例
mysql的後臺進程+線程+預分配的記憶體結構
5.mysql伺服器的構成
1.連接層
1)驗證用戶的合法性(ip,埠,用戶名,密碼,防火牆)
2)提供兩種連接方式(tcp/ip,socket)
3)提供與sql層互相交互的專用線程
4)查看文件是否擁有許可權,執行某條sql語句
2.sql層
1)接受連接層傳來的sql語句
2)檢查語法能否執行
3)檢查語義(DDL,DML,DQL,DCL)
4)解析器,解析sql語句,生成多種執行計劃
5)優化器,根據多種執行計劃,選擇最優的一種
6)執行器,執行最優的執行計劃
提供跟存儲引擎層交互的線程
接受返回的數據返回給連接層
7)將數據存入緩存
8)記錄binlog日誌
3.存儲引擎層
1)接受sql層傳下來的sql語句
2)去磁碟空間尋找所要查找的數據
3)提供一個與sql層交互的線程,將數據結構化成表的形式傳給sql層
6.mysql的邏輯結構
1.庫: show databases;
2.表: 元數據+真實數據行 show tables;
3.元數據: 列+其他屬性(行數row+占用空間大小+許可權)
4.列: 列名+數據類型+其他約束(非空,唯一鍵,主鍵,預設值,自增長,非負數等等)
7.mysql的物理結構
1.mysql最底層的物理結構是數據文件
2.存儲引擎,存儲引擎分很多種,mysql常用到的是InnoDB,MyISAM
3.段區塊:
1( 段:一個表一個段,多個區構成
2( 區:多個頁構成
3( 頁:最小數據存儲單元。預設16k
4( 分區表:一個分區是一個段