1.資料庫結構優化 一個好的資料庫設計方案對於資料庫的性能往往會起到事半功倍的效果。優化設計需要考慮數據冗餘、查詢和更新的速度、欄位的數據類型是否合理等多方面的因素。 將欄位很多的表分解成多個表 概述:對於欄位較多的表,如果有些欄位的使用頻率很低,可以將這些欄位分離出來形成新表。這樣可以減少表的數據 ...
1.資料庫結構優化
一個好的資料庫設計方案對於資料庫的性能往往會起到事半功倍的效果。優化設計需要考慮數據冗餘、查詢和更新的速度、欄位的數據類型是否合理等多方面的因素。
將欄位很多的表分解成多個表
概述:對於欄位較多的表,如果有些欄位的使用頻率很低,可以將這些欄位分離出來形成新表。這樣可以減少表的數據量,從而提高查詢性能。
增加中間表
概述:對於需要經常聯合查詢的表,可以建立中間表以提高查詢效率。通過建立中間表,將需要通過聯合查詢的數據插入到中間表中,然後將原來的聯合查詢改為對中間表的查詢。
增加冗餘欄位
概述:設計數據表時應儘量遵循範式理論的規約,儘可能地減少冗餘欄位,使資料庫設計更加精緻、優雅。然而,合理地增加冗餘欄位可以提高查詢速度。表的規範化程度越高,表之間的關係越多,連接查詢的情況也就越多,性能可能越差。
註意:冗餘欄位的值在一個表中修改後,必須在其他表中同步更新,否則可能導致數據不一致的問題。
2.大表優化
3.MySQL 主從複製原理及流程
主從複製的作用
概述:
- 數據備份與災難恢復:從資料庫可以作為主資料庫的備份,用於災難恢復。
- 讀寫分離:在從資料庫上執行只讀操作,分擔主資料庫的讀取壓力。
- 負載均衡:在從資料庫上分擔主資料庫的讀寫操作,實現負載均衡。
- 升級測試:在從庫上進行資料庫版本的升級測試。
MySQL 主從複製工作原理
-
在主庫上記錄二進位日誌(Binary Log):
- 主資料庫(Master)將所有數據更改操作記錄到二進位日誌中。
-
從庫拉取並寫入中繼日誌(Relay Log):
- 從資料庫(Slave)啟動I/O線程,連接主資料庫,拉取二進位日誌內容,並寫入中繼日誌中。
-
從庫執行中繼日誌中的SQL事件:
- 從資料庫通過SQL線程讀取中繼日誌中的SQL事件,並順序執行這些事件。
主從複製的基本流程和線程
-
主資料庫(Master):
- Binlog線程:記錄DDL和DML操作到二進位日誌中。
-
從資料庫(Slave):
- IO線程:拉取二進位日誌內容,寫入中繼日誌中。
- SQL執行線程:讀取中繼日誌中的SQL事件,並執行這些事件。
複製過程概述
-
主資料庫:
- 每個事務的操作記錄到二進位日誌中。
-
從資料庫:
- IO線程:拉取二進位日誌並寫入中繼日誌中。
- SQL線程:讀取中繼日誌中的SQL事件,執行這些SQL語句,確保數據一致性。
複製過程中可能遇到的問題
- 延遲問題:網路延遲或負載不均衡可能導致從庫的數據複製滯後。
- 主從同步中斷:可能由網路問題或配置錯誤導致,需要修複。
- 數據一致性:主資料庫數據更改未能及時複製到從資料庫,可能需要修複數據不一致問題。
好了,到此為止MySQL的面試題分享就結束了,希望大家在面試前多看看這部分的題目,在真正面試的時候也能立刻答上來,拿到更好的offer!!!