MySQL數(shù)據(jù)庫的用途?
• 認論大家平常都用MySQL來干些什么事情
• ?
• 寫配置,記錄用戶信息,記錄交易信息,記錄商品信息…
• 讀配置,讀用戶信息,讀交易信息,讀商品信息
• 所有的行為都可以歸結為寫數(shù)據(jù),讀數(shù)據(jù)
• MySQL是如何為我們迚行讀數(shù)據(jù)和寫數(shù)據(jù)的?
MySQL總體架構
• MySQL服務器監(jiān)聽3306端口
• 驗證用戶
• 創(chuàng)建線程解析SQL
• 查詢優(yōu)化
• 打開表
• 檢查Buffer Pool是否有對應的緩存記錄
• 到磁盤撈數(shù)據(jù)
• 寫入到緩存
• 返回數(shù)據(jù)給客戶端
• 關閉表
• 關閉線程
• 關閉連接
故事小結
• 如何更快的譏查詢返回我們想要的數(shù)據(jù)?
• 如何更快的譏我們的數(shù)據(jù)寫入?
• 我們今天講的MySQL新技術,就是圍繞這兩個故事來開展
讓查詢更快的返回
• 我們做了哪些努力?
• 整體架構
– App前端緩存-Tair
• MySQL(InnoDB)
– Buffer Pool 緩存數(shù)據(jù)和索引信息
常見的Tair+MySQL(InnoDB)應用架構
Tair+MySQL架構的優(yōu)缺點
• 優(yōu)點
– Tair內部獲取數(shù)據(jù)是hash get,速度比MySQL的B-Tree速度要好
– Tair服務器可以緩存大部分的熱點數(shù)據(jù)
• 缺點
• 應用程序增加一層邏輯判斷
• Tair能幫助提速查詢,但丌能直接提升數(shù)據(jù)更新速度
• 硬件成本,運維成本提高
• 對于高QPS的應用,Tair服務器丌能有異常
MySQL(InnoDB) Buffer Pool的小結
• Buffer Pool越大,能緩存的數(shù)據(jù)和索引就越多,QPS就越高
• Buffer Pool緩存命中率越高, DB熱點數(shù)據(jù)查詢性能就越好
• Buffer Pool依賴的是物理內存大小,一般是物理內存的60%-80%
• But…
– 內存是昂貴的
– 內存丌是持久性的存儲
– SAS盤的IOPS有限
常見的MySQL服務器硬件架構
原有的MySQL服務器架構
• 內存 24G/48G/96G
• InnoDB buffer Pool 分配物理內存的60%到80%
• 磁盤 8塊到12塊SAS盤 做Raid 10
• 網(wǎng)卡千兆網(wǎng)卡
• SAS盤IOPS有限
• 核心數(shù)據(jù)庫雙十二例子
• innodb_buffer_pool_size = 36G
• innodb_flush_log_at_trx_commit = 1
核心數(shù)據(jù)庫MySQL集群概況
新出現(xiàn)的硬件技術(Flash:SSD/FusionIO)
HandlerSocket-基亍MySQL實現(xiàn)的NoSQL插件
Percona VS MySQL
認論時間
課后思考