mysql 架構 2017 mysql架構和歷史

2021-10-17 21:23:28 字數 813 閱讀 4961

1.mysql的邏輯結構

a.第一層,基於網路的客戶端/伺服器的工具或者服務都有類似的結構,比如連線處理,授權認證,安全等

b。第二層:包括查詢解析,分析,優化,快取以及所有內建函式,儲存過程,觸發器,檢視等

c。儲存引擎,負責mysql中資料的儲存和提取,

1.1 連線管理與安全性

每個連線擁有乙個執行緒,伺服器會負責快取執行緒,因此不需要為每乙個新建的連線建立或者銷毀執行緒。

當連線時,會進行認證,基於使用者名稱,原始主機資訊和密碼,一旦連線成功,會繼續認證該客戶端是否具有執行某個特定查詢的許可權

1.2 優化和執行

mysql會解析查詢,並建立內部資料結構,然後對其進行優化,包括重寫查詢,決定表的讀取順序,以及選擇合適的索引等。

2.併發控制

在兩個層面的併發控制 : 伺服器層和儲存引擎層

2.1 讀寫鎖

共享鎖和排他鎖 ,也叫 讀鎖 和 寫鎖 ,

2.2 鎖粒度

鎖策略就是鎖的開銷和資料的安全性之間尋求平衡,

表鎖:會鎖定整張表,

行級鎖:最大程度支援併發,

3.事務

一組原子性的sql查詢,

隔離級別: 未提交讀,提交讀,可重複讀,可序列化

事務日誌:幫助提高事務的效率,使用事務日誌,儲存引擎在修改表的資料時只需要修改其記憶體拷貝,

mysql中的事務: innodb,ndb cluster

4。多版本併發控制

5.mysql的儲存引擎

innodb引擎

資料儲存在表空間中,採用mvcc來支援高併發,實現了四個標準的隔離級別,預設級別是可重複讀,

3w併發mysql架構 高併發寫入mysql的設計

最近開發乙個專案。客戶端每隔10秒提交100行資料給服務端,服務端查重後寫入。客戶端約在幾萬左右,提交資料比較集中,不考慮讀資料的問題。現在的設計是 資料庫按客戶端進行分表。每個表的資料量不高。服務端獲得資料後,先插入redis佇列,然後在通過定時任務插入資料庫。問題是 1 服務端提供給客戶端的介面...

Mysq篇 了解Mysql(一)

in關鍵字和exists關鍵字select from a where a.idin select id from b 對外表a使用索引效率高,建議a為大表。select from a whereexists select from b where a.id b.id 對內表b使用索引效率高,建議b為...

mysql 密碼清楚 linux清除MYSQL密碼

1.先以root使用者登入系統 2.關閉mysql服務或程序 service d stop killall mysqld 3.特權啟動mysql usr local mysql bin mysqld safe skip grant tables or mysqld safe skip grant t...