1. mysql邏輯架構
第二層是mysql的核心,包括查詢解析、分析、優化、快取以及內建函式。mysql會優化解析查詢,並建立內部資料結構(解析樹),然後對其進行各種優化,包括重寫查詢、決定表的讀取順序,以及選擇合適的索引等。
2. 併發控制
2.1 讀寫鎖
共享鎖、排它鎖,也叫讀鎖,寫鎖。
讀鎖是共享的,或者說是互不阻塞的。多個客戶在同一時刻可以同時讀取同乙個資源,而 互不干擾。寫鎖是排他的,寫鎖會阻塞其他的讀鎖和寫鎖。
2.2 鎖粒度
表鎖:mysql最基本的鎖策略,並且是開銷最小的策略。鎖定整張表。
行鎖:可以最大程度支援併發處理, (帶來最大的鎖開銷)。
3. 事物
acid:原子性、一致性、隔離性、永續性。
隔離級別:1、read uncommited(讀未提交),事物中修改即使沒有提交對其它事物也是可見的,會導致髒讀。
2. read commited(讀提交) ,乙個事物開始時,只能看見已經提交的事物所做的修改。即乙個事物所做的修改對其他事物是不可見的。可能導致不可重複度。
3. repeatable read(可重複讀) ,解決了髒讀的問題。保證了同一事物中讀取同一的記錄結果是一致的。沒有解決幻讀,幻讀指的是當某個事物在讀取某個範圍內的記錄時,另外乙個事物又在該範圍內插入了新的記錄,之前的事物讀取該範圍的記錄就會產生幻行。
4. serializable(可序列化)最高隔離級別。強制事物序列執行,避免了前面說的幻讀問題。
4. 死鎖
死鎖是指兩個或多個事物在同一資源上互相占用,並請求鎖定對方占用的資源,從而導致惡性迴圈的現象。當多個事物試圖以不同的順序鎖定資源時,就可能引數死鎖。多個事物同時鎖定乙個資源時,也會引數死鎖。
innodb目前處理死鎖的方法是,將持有最少行級排他鎖的事物進行回滾。
5. 事物日誌
事物日誌可以幫助提高事物的效率。使用事物日誌,儲存引擎在修改表的資料時只需要修改其記憶體拷貝,再把該修改行行為記錄到持久在硬碟上的事物日誌中,不需要每次豆漿修改的資料持久到磁碟。
6. mysql中的事務
兩種事務的儲存引擎:innodb和ndb cluster.
自動提交(autocommit)
mysql預設採用自動提交模式。
設定事物的隔離級別:set transaction isolation level read commit命令設定
隱式和顯式鎖定
innodb採用兩階段鎖定協議。在事務執行過程中,隨時可以執行鎖定,鎖只有在執行commit或者rollback的時候才會釋放,並且所有的鎖都是同一時刻被釋放。(隱式鎖)
innodb也支援顯示鎖定
select ... lock in share mode
select ...
for update
多版本併發控制
mvcc是行級鎖的變種,開銷較少。inndb的mvcc,是通過在每行記錄後面儲存兩個隱藏的列來實現的。乙個列是儲存行的建立時間,乙個儲存行的過期時間,每乙個事物開始系統版本號都會自動增加。儲存這兩個版本號,大多數事物就不用加鎖了。
7. mysql儲存引擎
1.專庫專用,資料垂直拆分
垂直拆分的意思是把不同業務的資料拆分到不同的資料庫中。影響:需要配置多個資料來源,帶來的是每個資料庫連線池的隔離。需要考慮分布式事物的問題。好處是減輕資料庫的壓力。
2. 水平拆分
把同乙個表中的資料拆到兩個資料庫中,引數原因:某個業務的資料表的資料量或者更新量達到單個資料庫的瓶頸。資料水平拆分和讀寫分離的區別是:讀寫分離解決的是讀壓力大的問題,對資料量大和更新量的情況並不考慮。
帶來的影響:訪問使用者資訊時需要解決sql路由的問題,需要解決在哪個資料庫中獲取相應的資訊。主鍵機制,自增不能使用。
高效能伺服器架構
1.請求佇列 連線池 2.主要的業務邏輯挪到應用伺服器處理,資料庫只做輔助的業務處理 3.快取 4.快取更新 同步 快取失效 time out 重新去資料庫中查詢,實時性較差 5.一旦資料庫中資料更新,立即通知前端快取更新,實時性較好 6.快取換頁 記憶體不夠,將不活躍資料換出記憶體 fifo 先進...
論架構目標之高效能
架構目標之一 高效能 首先看一下影響效能因素有哪些?dns解析 負載均衡技術 cdn加速 動靜分離技術 前後端分離技術 前端框架技術 後端框架技術 後端業務微服務化 後端業務分層 後端集群化 後端分布式技術 快取技術 資料庫主從 副本技術 資料庫讀寫分離技術 然後看一下效能指標,如何衡量高效能。qp...
高效能 架構例項 學習筆記
web應用的效能優化思路 找到瓶頸 百萬級訪問量 的技術準備工作 youtube 架構學習體會 idea 優酷網的架構學習筆記 百萬級php 架構工具箱 回顧myspace架構的坎坷之路 wikipedia技術架構學習筆記 flickr 架構分析 idea 一步步構建大型 架構 facebook儲存...