一、mysql的基礎架構:
第一層:主要是連線處理,授權,安全等。
第二層:mysql的核心服務功能都在這裡,包括查詢解析,分析,優化,快取,內建函式,儲存過程,觸發器,檢視等。
第三層:儲存引擎,負責mysql的資料儲存和提取。
執行過程:
1、 每個客戶端鏈結伺服器產生乙個執行緒,這個查詢只會在這個單獨的執行緒中執行。
當客戶端(應用或者php) 連線到mysql伺服器時,伺服器對其進行使用者名稱、密碼、主機名等認證。
2、 認證成功後,mysql解析sql語句,建立解析書,然後對其進行各種優化,包括快取查詢,選擇合適的索引等。
3、 解析,優化完成後 從儲存引擎中訪問資料。
mysql對應基礎架構的順序執行的。
二、併發控制
多個讀或寫的操作在同乙個時刻執行,就是併發執行。
併發執行會產生兩個操作同時操作一條資料,比如兩個使用者在讀一條資料,乙個使用者在修改這個資料,就會發生資料的不確定性,因此要進行併發控制,需要鎖的機制。
1、 讀寫鎖:
讀鎖也叫共享鎖,互相不阻塞的,多個客戶在同一時刻讀同一條資料,是互不干擾的。
寫鎖也叫排它鎖,乙個寫鎖會阻塞其他的寫鎖和讀鎖,防止其他使用者在同一時刻,讀取和改寫同乙個資料。
2、 鎖的顆粒度:
簡單來講是鎖的精準度,只對修改的資料行進行精準的鎖定,鎖定的資料量越小,系統的併發越高。
但是加鎖,解鎖,檢查鎖,也會增加系統開銷,如果不是進行資料的儲存,而是進行鎖的操作,系統的效能可能會因此受到影響。
大多數商業資料庫,都是在表上加上行級鎖,在大併發的情況下,提高系統配置,來提高併發的效能。
3、 鎖策略:
一般的鎖策略分為表鎖和行鎖,也有的是葉鎖,在這裡只討論最常用的表和行鎖。
表鎖:表鎖是mysql中最基本的鎖策略,並且是開銷最小的,它會鎖住整張表,乙個使用者在對錶進行寫操作(插入,修改,刪除)前,先所得寫鎖,這會阻塞其他使用者的讀寫操作,因為它是鎖住整個表,寫鎖比讀鎖有更高的優先順序,乙個寫鎖會被插入到讀鎖佇列前面。
行級鎖:
行級鎖可以大程度的支援併發處理(但是也帶來了最大的鎖開銷),行級鎖是鎖住某一行資料,比如乙個使用者在修改一條資料,只是把這一行資料鎖定,其他的使用者不能讀寫,但是對其他的資料是可以讀寫的。
表鎖:開銷小,併發低。mysima引擎是典型的表鎖。
行鎖:開銷大,併發高。 innodb引擎是典型的行鎖。
三、事務
最經典的例子就是銀行卡轉賬,兩個操作,乙個是在減操作,乙個是加操作,
必須保證在乙個事務中完成,如果有乙個未完成,要取消全部的操作。
高效能MySQL 讀書筆記
第4章 schema與資料型別優化 第5章 建立高效能的索引 三星索引 最左匹配原則 高效能索引策略 多列索引 mysql採用的是分層架構 上層是server層,下層是儲存引擎層。sql標準中定義了四種隔離級別 隔離級別 定義髒讀 不可重複讀 幻讀加鎖讀 讀未提交 read uncommitted,...
高效能Mysql 讀書筆記
mysql與眾不同的特性是它的儲存引擎架構,這種架構將查詢處理即其他的任務系統和資料的儲存 提取相分離.第二層架構中,大多數的mysql的核心服務功能都在這一層,包括查詢解析,分析優化,快取以及所處的內建函式,所有的跨儲存引擎的功能都在這一層實現 儲存過程,觸發器,檢視等.第三層包含mysql的儲存...
高效能mysql讀書筆記1
譯者序言 本書的定位 系統的從各個方面講述乙個高效能mysq應用應該怎麼做,區別於市面上那些關於mysql開發書籍只是停留在學習mysql基本語句,本書提供了作者一些mysql調優的基準測試從而幫助理解mysql內部的工作機制,本書強調mysql的可用性 準確性以及效能。本書根據mysql5.0穩定...