mysqld 的程式結構
1.連線層
1)檢驗使用者的合法性
2)提供兩種連線方式
a)tcp/ip
[root@db02 ~]# mysql -uroot -p123 -h10.0.0.51
[root@db01 ~]# mysql -uroot -p123 -h127.0.0.1
b)socket
[root@db01 ~]# mysql -uroot -p123 -s /usr/local/mysql/tmp/mysql.sock
[root@db01 ~]# mysql -uroot -p123 -hlocalhost
[root@db01 ~]# mysql -uroot -p123
3)建立乙個與sql層互動的執行緒
2.sql層
1)接收連線層傳來的sql語句
2)檢查語法
3)檢查語義(檢查它屬於哪種sql語句:ddl,dml,dcl,dql)
4)解析器:解析sql語句,生成多種執行計畫
5)優化器:接收解析器傳來的多種執行計畫,選擇最優化的一條方式去執行
6)執行器:執行優化器傳來的最優方式的sql語句
a)建立乙個與儲存引擎層互動的執行緒
b)接收儲存引擎層,返回的結構化成表的資料
7)寫快取
8)記錄日誌
3.儲存引擎層
1)接收sql層傳來的sql語句
2)與磁碟互動,找到資料並結構化成表的形式,返回給sql層
3)建立乙個與sql層互動的執行緒
三.什麼是例項?
1.mysql的後台程序+執行緒+預分配的記憶體結構。
2.mysql在啟動的過程中會啟動後台守護程序,並生成工作執行緒,預分配記憶體結構供mysql處理資料使用。
mysql關聯查詢原理
當前mysql執行執行的策略很簡單 mysql對任何關聯都執行巢狀迴圈操作,即mysql先在乙個表中迴圈取出單條資料,然後再巢狀迴圈 到下乙個表中尋打匹配的行,依次下去,直到描述到所表表中匹配的行為止。然後根據各個表匹配的行,返回查詢中需要的各個列。mysql會嘗試在最後乙個關聯表中打到所有匹配的行...
mysql查詢和快取原理
mysql資料庫查詢步驟和快取原理 我們曉得,資料庫的查詢功能是我們經常用到的,那麼mysql資料庫是如何進行查詢的呢?本文我們就來引見一下mysql資料庫的查詢步調以及快取本理,接下來就讓我們來一路領會一下那一部門內容。當mysql收到客戶端傳送的查詢語句時,起首會查抄快取塊外能否快取外此語句的成...
MySQL索引原理及查詢優化
其實在工作中有去優化mysql語句,但之前優化僅僅是降到能夠接受花費時間之下,並有很多可以繼續提供的空間。很多時候在優化完成之後sql,也並不能向外展示。故這裡將自己平時優化的sql方法記錄下來,並找到乙個總結優化sql的地方。索引原理 mysql的建立索引其實就像是字典的目錄有一定的相似之處,通過...