標籤:blog http io ar os 使用 sp strong on
串連管理與安全性:
1、MySQL會為每一個用戶端串連分配一個線程,這個串連的查詢只會在這個單獨的線程執行。伺服器會負責緩衝線程,因此不需要為每一個建立立的串連建立或則銷毀線程。
2、當用戶端串連到MySQL伺服器時,伺服器將對其進行身份認證。認證基於使用者名稱、主機資訊和密碼,也可以基於SSL的方式進行串連。一旦用戶端串連成功,伺服器會繼續驗證該用戶端是否具有執行某個特定查詢的許可權。
最佳化與執行:
1、MySQL會解析、查詢,並建立內部資料結構,然後對其進行各種最佳化,包括重寫查詢、決定表的查詢順序,以及選擇合適的索引等。使用者可以通過特殊的關鍵字提示(hint)最佳化器,影響它的決策過程。也可以請求最佳化器解釋最佳化過程的各個因素,使使用者可以指定伺服器時如何進行最佳化決策的,從而去重構查詢,最佳化查詢。
2、對於select語句,在解析查詢之前,伺服器會先檢查查詢快取(query cache),如果能夠在其中找到對應的查詢,伺服器不必再執行查詢解析、最佳化和執行整個過程,而是直接返回查詢快取中的結果。
1、只要有多個查詢需要在同一時刻修改資料,都會產生並發控制的問題。
2、MySQL可以在兩個層面實現並發控制:伺服器層和儲存引擎層。
MySQL鎖管理機制
MySQL鎖的執行流程
鎖粒度
開銷小,加鎖快,不會出現死結,鎖定粒度大,發生鎖衝突的機率最高,並發度最低。
開銷稍大,加鎖慢。會出現死結。鎖定粒度最小,發生鎖衝突的機率最低,並發度也最高。
開銷和加鎖時間介於表鎖和行鎖之間,會出現死結,鎖定粒度介於表鎖和行鎖之間,並發度一般。
表級鎖的鎖模式
- 表共用讀鎖(Table Read Lock)和表獨佔鎖(Table Write Lock,排它鎖)
- MyISAM在執行查詢語句(select)前,會自動給設計的所有表加讀鎖,在執行更新操作(update、delete、insert等)前,會自動給設計的表加鎖。對myisam表進行操作,會有以下情況:
1、對myisam表的讀操作(加讀鎖),不會阻塞其他進程對同一表的讀請求,但會阻塞對同一表的寫請求。只有當讀鎖釋放後,才會執行其他進程的寫操作。
2、對myisam表的寫操作(加寫鎖),會阻塞其他進程對同一表的讀和寫操作,只有當寫鎖釋放後,才會執行其他進程的讀寫操作。
- 簡而言之,讀鎖會阻塞寫,但是不會阻塞讀,寫鎖則會把讀和寫都阻塞。
事務的ACID特性
一個事務必須被視為一個不可分割的最小工作單元,整個事務中所有操作要麼全部提交成功,要麼全部復原。
資料庫總是從一個一致性狀態轉換到另一個一致性狀態。
通常來說,一個事務所做的修改在最終提交前,對其他事務是不可見的。
一旦事務提交,則其所做的修改會永久儲存到資料庫中。即使資料庫崩潰,修改的資料也不會丟失。
3.23 2001
4.0 2003
4.1 2005
5.0 2006
5.1 2008
5.5 2010
5.6 2013
MySQL5.6部分新特性
- 支援多線程複製。事實上市針對每個database開啟相應的獨立線程。即每個庫有一個單獨的SQL Thread,如果線上業務中,只有一個database或者絕大多數壓力集中在個別database的話,多線程並發複製特性就沒有意義了。
- 啟用GTID,無須再知道binlog和POS點,需要知道master的IP、連接埠、帳號和密碼即可,因為同步複製是自動的,MySQL通過內部機制GTID自動找點同步。
- InnoDB全文檢索索引
- InnoDB統計資訊收集更加精準,執行計畫更加精準。
- InnoDB Undo資料從系統資料表空間獨立出來為單獨的資料表空間,SSD
- InnoDB Redo記錄檔大小調整為512G,以前最大為4G
- 時間類型欄位Time、DataTime、Timestamp支援的粒度有秒擴充到
- MySQL按照使用者群分為社區版和企業版
- MySQL按照更新發布為:
GA(General Availability):官方推薦使用版本
RC (Release Candidate):候選版本,該版本最接近正式版
Alpha和Bean:測試版,Alpha為內側版,Bean為公測版
MySQL筆記系列:MySQL架構