mysql整體分為三層:客戶端、mysql服務、檔案系統。
1.主從資料庫鏈結
1.預防sql注入
2.預防死鎖
3.併發問題
預防不一致讀導致的更新丟失
預防本地資料更新丟失
4.寫資料效率問題
1.where條件必須命中索引,預防不能命中索引的常見場景:
2.查詢結果處理
1.聯結器負責跟客戶端建立連線、獲取許可權、維持和管理連線。
2.長連線和短連線的選擇
1.分析器分析sql語法
1.優化器生成執行計畫,選擇索引
1.執行語句
1.了解儲存引擎
根據不同的資料儲存場景,選擇不同的儲存引擎。例如:需要事務的寫資料場景,使用innodb。不需要事務,讀頻繁的讀資料場景可以使用myisam。
資料表中設定engine=innodb,即可使用innodb儲存引擎。
2.innodb的效能優化技巧
配置redo log緩衝,優化其效能。可通過innodb_log_buffer_size配置。
1.了解緩衝池
2.緩衝池的相關疑問?
寫緩衝如何保證資料一致性?
1.了解redo log日誌
1.了解binlog日誌
1.單庫架構:乙個庫進行資料儲存。
2.分組架構:
3.分片架構:
分片架構可以線性提公升資料庫的寫效能,降低單庫資料容量。
4.分組+分片結構:
1.全量備份+增量備份
2.1小時延時從庫(災備資料庫)
3.雙份1小時延時從庫
1.什麼是死鎖?
2.mysql是怎麼出現死鎖的?
對兩條資料,在兩個事務執行不同順序的寫入操作。例如:事務1(a->b),事務2(b->a),會出現事務1等待b的資源,事務2等待a的資源。
不同索引鎖衝突,使用範圍條件做寫入條件,則可能會出現在聚簇索引上加鎖順序不一致,從而造成死鎖。
gap鎖(間隙鎖)衝突,可重複讀(rr)級別下,會給相鄰索引的區間加上鎖。
3.如何解決死鎖問題?
分析、定位死鎖:
4.理解死鎖的好處。
1.type掃瞄方式
2.extra
1.聚集索引
2.普通索引
3.回表查詢
4.索引覆蓋
5.聯合索引
1.熱備
2.冷備
1.索引是一種加速查詢的資料結構,常見的索引有兩類:雜湊索引、樹索引。
2.為什麼選擇樹索引而不是雜湊索引?
3.為什麼要使用b+樹
Mysql架構簡要
1.mysql 最上層是一些客戶端和連線服務,包含本地sock通訊和大多數基於客戶端 服務端工具實現的類似於tcp ip的通訊。主要完成一些類似於連線處理 授權認證 及相關的安全方案。在該層上引入了執行緒池的概念,為通過認證安全接入的客戶端提供執行緒。同樣在該層上可以實現基於ssl的安全鏈結。伺服器...
簡要的架構
cassandra旨在處理跨多個節點的大資料工作負載,無單點故障。其架構基於這樣的理解,即系統和硬體故障可以並且確實發生。cassandra通過在跨群集中所有節點之間分布資料的同構節點上採用對等分布式系統來解決故障問題。每個節點使用對等八卦通訊協議頻繁地交換關於本身和群集中的其他節點的狀態資訊。每個...
Ceilometer架構簡要分析
最近因為工作的需要以及 的方向,需要了解openstack監控方面的知識。所以深入看了一下openstack的ceilometer,大致分析了一下ceilometer的實現機制和工作流程,因此也就形成了本文的對ceilometer的乙個大致框架介紹。ceilometer的資料採集方式主要分為poll...