最全MySQL面試題和答案(四)

ikestu小猪發表於2024-08-13

1.資料庫結構最佳化

一個好的資料庫設計方案對於資料庫的效能往往會起到事半功倍的效果。最佳化設計需要考慮資料冗餘、查詢和更新的速度、欄位的資料型別是否合理等多方面的因素。

將欄位很多的表分解成多個表

概述:對於欄位較多的表,如果有些欄位的使用頻率很低,可以將這些欄位分離出來形成新表。這樣可以減少表的資料量,從而提高查詢效能。

增加中間表

概述:對於需要經常聯合查詢的表,可以建立中間表以提高查詢效率。透過建立中間表,將需要透過聯合查詢的資料插入到中間表中,然後將原來的聯合查詢改為對中間表的查詢。

增加冗餘欄位

概述:設計資料表時應儘量遵循正規化理論的規約,儘可能地減少冗餘欄位,使資料庫設計更加精緻、優雅。然而,合理地增加冗餘欄位可以提高查詢速度。表的規範化程度越高,表之間的關係越多,連線查詢的情況也就越多,效能可能越差。

注意:冗餘欄位的值在一個表中修改後,必須在其他表中同步更新,否則可能導致資料不一致的問題。

2.大表最佳化

3.MySQL 主從複製原理及流程

主從複製的作用

概述

  • 資料備份與災難恢復:從資料庫可以作為主資料庫的備份,用於災難恢復。
  • 讀寫分離:在從資料庫上執行只讀操作,分擔主資料庫的讀取壓力。
  • 負載均衡:在從資料庫上分擔主資料庫的讀寫操作,實現負載均衡。
  • 升級測試:在從庫上進行資料庫版本的升級測試。

MySQL 主從複製工作原理

  1. 在主庫上記錄二進位制日誌(Binary Log)

    • 主資料庫(Master)將所有資料更改操作記錄到二進位制日誌中。
  2. 從庫拉取並寫入中繼日誌(Relay Log)

    • 從資料庫(Slave)啟動I/O執行緒,連線主資料庫,拉取二進位制日誌內容,並寫入中繼日誌中。
  3. 從庫執行中繼日誌中的SQL事件

    • 從資料庫透過SQL執行緒讀取中繼日誌中的SQL事件,並順序執行這些事件。

主從複製的基本流程和執行緒

  • 主資料庫(Master)

    • Binlog執行緒:記錄DDL和DML操作到二進位制日誌中。
  • 從資料庫(Slave)

    • IO執行緒:拉取二進位制日誌內容,寫入中繼日誌中。
    • SQL執行執行緒:讀取中繼日誌中的SQL事件,並執行這些事件。

複製過程概述

  1. 主資料庫

    • 每個事務的操作記錄到二進位制日誌中。
  2. 從資料庫

    • IO執行緒:拉取二進位制日誌並寫入中繼日誌中。
    • SQL執行緒:讀取中繼日誌中的SQL事件,執行這些SQL語句,確保資料一致性。

複製過程中可能遇到的問題

  • 延遲問題:網路延遲或負載不均衡可能導致從庫的資料複製滯後。
  • 主從同步中斷:可能由網路問題或配置錯誤導致,需要修復。
  • 資料一致性:主資料庫資料更改未能及時複製到從資料庫,可能需要修復資料不一致問題。

好了,到此為止MySQL的面試題分享就結束了,希望大家在面試前多看看這部分的題目,在真正面試的時候也能立刻答上來,拿到更好的offer!!!

相關文章