標籤:設定檔 mysql 用戶端 密碼 網路
1、初始化模組。
mysql啟動的時候。初始化模組接管控制權。
初始化模組。讀取設定檔。命令列參數。
分配全域記憶體緩衝、初始化全域變數、結構資訊、載入存取控制表、執行一些其他的初始化任務。
一旦初始化工作完成後,初始化模組把控制權交給連線管理員。開始接受用戶端的串連。
讀取設定檔的路徑。
/usr/libexec/mysqld --verbose --help | less
/etc/mysql/my.cnf /etc/my.cnf ~/.my.cnf
2、串連管理模組。
初始化完成後。會把控制權給串連管理模組。
負責用戶端的串連
當一個用戶端的串連進來的時候,連線管理員執行一些網路通訊協定任務。
並把控制權交給線程管理器。
3、線程管理模組。
連線管理員把控制權交給線程管理模組後。
線程管理模組,提高線程。這個線程可能是線程池裡的。也可能是建立的。
一旦線程建立好之後,就把控制權交個使用者模組。
4、使用者模組。
一旦線程建立好之後,使用者模組有了控制權。就會驗證使用者的
主機,使用者,密碼等。
驗證成功後,就會把控制權交給命令分發器。
環境變數。
show global variables like ‘%connect%‘;
select @@max_connections;
伺服器的最大串連數。
select @@max_user_connections;
當個使用者的最大串連數。
實驗:
set global max_connections=1;
select @@max_connections;
多開幾個終端
會發現:ERROR 1040 (HY000): Too many connections
set global max_user_connections=1;
狀態變數:
show global status like ‘%connect%‘;
Aborted_connects被拒絕的串連次數。比如使用者,密碼錯誤
Connections 被串連的次數。不管失敗,成功都加1.
Max_used_connections 最大的並發量。不管失敗,成功都加1.
5、命令分發器。
命令發過來後,會把控制權交給命令分發器。
如果是查詢語句,就交給查詢快取模組
並把一些操作記錄下來。日誌記錄模組。
如果是一個query類型的請求。會將控制權交個query解析器。query解析器首先分析是不是一個select類型
的query。如果是,則調用查詢快取模組。。讓他檢查改query在查詢快取中是否儲存。
如果有,則直接將cache中的資料返回給連接線程模組。然後返回給用戶端。
如果不是一個可以被cahce的query類型。或者cache中沒有改query的資料,那麼query將被進行傳回給
query解析器。query解析器,把控制權給query分發器。
6、查詢快取模組
如果是查詢語句,就交給查詢快取模組
7、日誌記錄模組。
命令分發器。調用日誌記錄模組。記錄i日誌
8、命令解析器。解析命令是什麼命令。
如果是查詢的話。=》查詢最佳化工具。
修改表。====》表變更模組
維護、最佳化===》表維護模組
複製===》複製模組
狀態===》狀態模組。
9、存取控制模組。
上面執行完後。就交給了存取控制模組。
驗證使用者,有沒有相關許可權。
10、表管理模組。
表鎖
11、儲存引擎介面。
儲存引擎調用儲存引擎。
12、儲存引擎,幹活的。
本文出自 “老蔡” 部落格,請務必保留此出處http://877763363.blog.51cto.com/1200927/1671944
mysql體系架構。