mysql第一天 架構,mysql第一天架構
架構
mysql最大的特色就是把查詢處理與 實際的資料存放區和提取(儲存引擎)的操作分開了。其整體的架構如下:
- Connectors 看到JDBC就懂起了,是串連mysql的各種用戶端
- Connection Pool 用於建立使用者串連,緩衝連接線程,做串連池。 還有鑒權
修改my.ini重啟可以修改最大串連數:
max_connections=200
查看當前變數配置:
SHOW VARIABLES like 'max_c%';
下面的命令還能查看具體的當前串連的資訊:
SHOW processlist;
雖然mysql內建了串連池,但是更多的還是使用用戶端串連池的方式。
基本的原理就是一次建立串連之後緩衝,然後所有調用串連的地方都從池中取封裝之後的
在關閉池中取出的串連時不會真正的關閉串連,而是放回池中,這樣就減少了鑒權,三向交握等等操作,增加效能。
- SQL Interface
內建函數,DML, DDL,預存程序,視圖,觸發器,都在這邊。
- Parser
解析器, 主要有兩個功能。驗證sql語句是否正確, 把sql語句解析為資料結構,以後只使用這個結構。
解析器的功能基本上都是這樣的,比如Spring中也有xml的解析器也是先轉化為一個資料結構之後使用這個資料結構。
- Optimizer
最佳化器。 記得JVM也是有最佳化器的,會進行重排序呀,以及解釋文法糖啊等等操作。
解析器解析成樹,然後進行重寫查詢,決定表的讀取順序,以及選擇合適的索引的操作。在解析查詢之前會先檢查緩衝,如果命中就沒有解析最佳化和執行的過程。
這裡有一個更好的說明:http://blog.csdn.net/whyangwanfu/article/details/1943021
- Cache & Buffer
緩衝,執行查詢語句的時候會先查緩衝,如果命中則直接返回,如果沒命中才去查sql語句
- Managerment Service
非常強大的管理功能, 監控,備份,還原, 鏡像, 叢集。。。。
- Storage Engine
儲存引擎,
常用的儲存引擎
SHOW TABLE STATUS like 'biz_pay_task';
這樣可以查看錶的各種資訊,包括儲存引擎
InnoDB
- 適用於大多數成功少復原的大量短期事務
- 使用MVCC來支援高並發
- 實現了四個隔離等級,預設REPEATEABLE READ
- 通過間隙鎖策略防止幻讀的出現
MyISAM
- 檔案分離
- 恢複慢
- 支援GIS,全文索引,壓縮
- 表鎖,不支援事務
Memmory
這就是Redis呀
Infobright
面向列的儲存引擎,適用於資料倉儲
選擇引擎
可以從如下的幾個出發點:
- 是否需要事務 InnoDb
- 是否用到全文索引 InnoDB + Sphinx
- 備份及恢複 InnoDB
- 日誌型, 插入效能要求高, 用MyISAM,還能隨時拷貝備庫去做分析
著作權聲明:本文為博主原創文章,未經博主允許不得轉載。