溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

常見的MySQL面試題有哪些

發布時間:2021-10-09 15:40:32 來源:億速云 閱讀:175 作者:iii 欄目:編程語言
# 常見的MySQL面試題有哪些

MySQL作為最流行的開源關系型數據庫之一,是后端開發和數據庫崗位面試的重點考察領域。本文將系統梳理高頻MySQL面試題,涵蓋基礎概念、索引優化、事務機制、鎖機制、性能調優等核心知識點,幫助求職者全面備戰。

---

## 一、基礎概念篇

### 1. 什么是MySQL?它的主要特點是什么?
MySQL是由瑞典MySQL AB公司開發的關系型數據庫管理系統(RDBMS),現屬于Oracle旗下產品。核心特點包括:
- 開源免費(社區版)
- 支持多線程高并發
- 提供ACID事務支持
- 支持主從復制和集群部署
- 跨平臺支持(Windows/Linux/macOS)

### 2. MySQL的存儲引擎有哪些?區別是什么?
| 存儲引擎 | 事務支持 | 鎖粒度 | 適用場景 |
|---------|---------|--------|----------|
| InnoDB  | 支持    | 行級鎖 | 需要事務、高并發寫 |
| MyISAM  | 不支持  | 表級鎖 | 讀多寫少、全文索引 |
| MEMORY  | 不支持  | 表級鎖 | 臨時表、高速緩存 |

### 3. CHAR和VARCHAR的區別?
- **CHAR**:定長字符串(0-255字節),存儲時會用空格填充到指定長度
- **VARCHAR**:變長字符串(0-65535字節),只占用實際長度+1-2字節長度標識

---

## 二、索引與優化篇

### 4. MySQL索引有哪些類型?
- **按數據結構分**:
  - B+Tree索引(默認)
  - Hash索引(MEMORY引擎)
  - 全文索引(MyISAM支持)
  
- **按邏輯分**:
  - 主鍵索引(PRIMARY KEY)
  - 唯一索引(UNIQUE KEY)
  - 普通索引(INDEX)
  - 組合索引(多列聯合)

### 5. 什么是B+樹索引?為什么MySQL選擇它?
B+樹是B樹的變種,特點包括:
- 非葉子節點只存鍵值不存數據
- 葉子節點通過指針連接形成鏈表
- 所有數據都存儲在葉子節點

**優勢**:
- 范圍查詢效率高(鏈表遍歷)
- 查詢穩定性好(所有查詢路徑等長)
- 磁盤IO次數少(3-4層可存百萬級數據)

### 6. 什么情況下索引會失效?
- 違反最左前綴原則(組合索引)
- 對索引列進行運算或函數操作
- 使用`!=`、`NOT IN`等否定條件
- 隱式類型轉換(如字符串列用數字查詢)
- `LIKE`以通配符開頭('%abc')

### 7. EXPLN命令各字段含義?
```sql
EXPLN SELECT * FROM users WHERE id = 1;

關鍵字段說明: - type:訪問類型(const > ref > range > index > ALL) - key:實際使用的索引 - rows:預估掃描行數 - Extra:額外信息(Using filesort/Using temporary需優化)


三、事務與鎖篇

8. 什么是事務的ACID特性?

  • Atomicity(原子性):事務是不可分割的工作單位
  • Consistency(一致性):事務執行前后數據庫狀態一致
  • Isolation(隔離性):并發事務間相互隔離
  • Durability(持久性):事務提交后改變永久有效

9. MySQL的隔離級別有哪些?

隔離級別 臟讀 不可重復讀 幻讀 實現方式
讀未提交 ? ? ? 無鎖
讀已提交 × ? ? 快照讀
可重復讀 × × ? MVCC+間隙鎖
串行化 × × × 完全加鎖

10. 什么是MVCC?

多版本并發控制(Multi-Version Concurrency Control)通過保存數據的歷史版本實現: - 每行記錄包含兩個隱藏字段:創建版本號、刪除版本號 - 讀操作只查找版本號早于當前事務的數據 - 寫操作創建新版本而非直接修改

11. InnoDB有哪幾種鎖?

  • 行鎖:共享鎖(S鎖)、排他鎖(X鎖)
  • 表鎖:意向共享鎖(IS)、意向排他鎖(IX)
  • 間隙鎖(Gap Lock):防止幻讀,鎖定索引記錄間隙
  • 臨鍵鎖(Next-Key Lock):行鎖+間隙鎖組合

四、性能優化篇

12. 大表優化的常見方案

  1. 垂直拆分:將不常用字段拆分到擴展表
  2. 水平拆分:按時間/ID范圍分表(如user_2023)
  3. 讀寫分離:主庫寫,從庫讀
  4. 冷熱分離:歷史數據歸檔

13. 慢查詢如何排查?

  1. 開啟慢查詢日志:
SET GLOBAL slow_query_log = ON;
SET GLOBAL long_query_time = 2;
  1. 使用mysqldumpslow工具分析日志
  2. 通過SHOW PROCESSLIST查看當前運行線程

14. 如何優化JOIN查詢?

  • 確保關聯字段有索引
  • 小表驅動大表(MySQL優化器會自動處理)
  • 避免SELECT *,只查詢必要字段
  • 考慮使用冗余字段避免多表關聯

五、高可用與架構篇

15. 主從復制原理是什么?

  1. Master將變更寫入binlog
  2. Slave的IO線程拉取binlog到relay log
  3. Slave的SQL線程重放relay log中的事件
  4. 通過SHOW SLAVE STATUS監控復制狀態

16. 分庫分表有哪些策略?

  • 水平分片:按行分散(如user表按ID取模)
  • 垂直分片:按列分散(如將大字段單獨存放)
  • 中間件方案:ShardingSphere、MyCat等

17. 如何保證數據庫高可用?

  • 主從切換:MHA、Orchestrator等工具
  • 集群方案:MySQL Group Replication
  • 云數據庫:AWS RDS Multi-AZ部署

六、實戰應用題

18. 設計一個電商系統的數據庫

-- 用戶表
CREATE TABLE users (
  user_id BIGINT PRIMARY KEY AUTO_INCREMENT,
  username VARCHAR(50) UNIQUE,
  password CHAR(60)
);

-- 商品表
CREATE TABLE products (
  product_id BIGINT PRIMARY KEY,
  name VARCHAR(100),
  price DECIMAL(10,2),
  INDEX idx_name (name)
);

-- 訂單表(分庫分表場景)
CREATE TABLE orders_2023 (
  order_id VARCHAR(32) PRIMARY KEY,
  user_id BIGINT,
  status TINYINT,
  create_time DATETIME,
  INDEX idx_user (user_id)
) PARTITION BY RANGE (YEAR(create_time));

19. 如何處理庫存超賣問題?

方案對比: 1. 悲觀鎖

SELECT quantity FROM inventory WHERE item_id=1 FOR UPDATE;
UPDATE inventory SET quantity=quantity-1 WHERE item_id=1;
  1. 樂觀鎖
UPDATE inventory 
SET quantity=quantity-1, version=version+1 
WHERE item_id=1 AND version=#{version};
  1. Redis原子操作:DECR + Lua腳本保證原子性

七、最新特性篇(MySQL 8.0+)

20. MySQL 8.0的重要新特性

  • 窗口函數RANK(), ROW_NUMBER()
  • CTE(公共表表達式)WITH語法支持
  • 原子DDL:數據定義語句支持事務
  • JSON增強:新增JSON_TABLE()等函數
  • 隱藏索引:可臨時禁用索引而不刪除

總結

本文覆蓋了MySQL面試中最??疾斓?大方向共20個核心問題。實際面試中,面試官往往會根據候選人的回答深度進行追問,建議: 1. 對每個知識點至少掌握2-3層深度 2. 準備1-2個實際項目中的MySQL優化案例 3. 動手實驗關鍵機制(如事務隔離級別、鎖競爭等)

注:本文約2200字,可根據實際需要調整內容深度或補充具體案例。 “`

這篇文章采用Markdown格式編寫,包含: 1. 層級分明的章節結構 2. 表格對比關鍵概念差異 3. 代碼塊展示SQL示例 4. 重點內容加粗/列表突出顯示 5. 覆蓋基礎到高級的知識點 6. 包含實戰設計題和解決方案

可根據具體面試崗位需求,適當調整技術深度或增加云數據庫、分布式事務等擴展內容。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女