成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

簡單說幾個MySQL高頻面試題

數據庫 MySQL
在各類技術崗位面試中,似乎 MySQL 相關問題經常被問到。無論你面試開發崗位或運維崗位,總會問幾道數據庫問題。經常有小伙伴私信我,詢問如何應對 MySQL 面試題。其實很多面試題都是大同小異的,提前做準備還是很有必要的。本篇文章簡單說下幾個常見的面試題,一起來學習下吧。

 前言:

在各類技術崗位面試中,似乎 MySQL 相關問題經常被問到。無論你面試開發崗位或運維崗位,總會問幾道數據庫問題。經常有小伙伴私信我,詢問如何應對 MySQL 面試題。其實很多面試題都是大同小異的,提前做準備還是很有必要的。本篇文章簡單說下幾個常見的面試題,一起來學習下吧。

[[377812]]

1.什么是關系型數據庫?談談你對 MySQL 的認識。

這是一道基礎題,考察面試者對數據庫的了解程度,一般可以簡單講下自己的認知,有條理即可。比如:

關系型數據庫是指采用了關系模型來組織數據的數據庫,其以行和列的形式存儲數據。關系型數據庫最大的特點是支持事務。常見的關系型數據庫有 MySQL、Oracle、SQLServer 等。MySQL 是當下最流行的開源數據庫。由于其體積小、速度快、總體擁有成本低,尤其是開放源碼這一特點,使得很多公司都采用 MySQL 數據庫以降低成本,目前被廣泛地應用在 Internet 上的中小型網站中,尤其適用于 OLTP 領域。

2.MySQL 常見的存儲引擎有哪些,有什么區別?

這個問題也經常被問到,和『InnoDB 與 MyISAM 引擎的區別』問題相似。

常見的幾種存儲引擎:

  • InnoDB: MySQL 默認的存儲引擎,支持事務、MVCC、外鍵、行級鎖和自增列。
  • MyISAM: 支持全文索引、壓縮、空間函數、表級鎖,不支持事務,插入速度快。
  • Memory: 數據都在內存中,數據的處理速度快,但是安全性不高。
  • ARCHIVE: 常用于歷史歸檔表,占用空間小,數據不能更新刪除。

InnoDB 與 MyISAM 引擎的幾點區別:

  • InnoDB 支持事務,MyISAM 不支持事務。
  • InnoDB 支持外鍵,而 MyISAM 不支持。
  • InnoDB 不支持全文索引,而 MyISAM 支持。
  • InnoDB 是聚簇索引,MyISAM 是非聚簇索引。
  • InnoDB 不保存表的具體行數,而 MyISAM 用一個變量保存了整個表的行數。
  • InnoDB 最小的鎖粒度是行鎖,MyISAM 最小的鎖粒度是表鎖。
  • 存儲結構不同,MyISAM 表分為 frm MYD MYI 三個,InnoDB 一般分為 frm ibd 兩個。

3.描述下 MySQL 基礎架構。

這個問題考察面試者對 MySQL 架構的了解,和『一條 select 語句執行流程』問題相似。

 

 

 

 

MySQL的邏輯架構圖

MySQL的邏輯架構主要分為3層:

  1. 第一層:對客戶端的連接處理、安全認證、授權等,每個客戶端連接都會在服務端擁有一個線程,每個連接發起的查詢都會在對應的單獨線程中執行。
  2. 第二層:MySQL的核心服務功能層,包括查詢解析、分析、查詢緩存、內置函數、存儲過程、觸發器、視圖等,select操作會先檢查是否命中查詢緩存,命中則直接返回緩存數據,否則解析查詢并創建對應的解析樹。
  3. 第三層:存儲引擎,負責數據的存儲和提取,MySQL服務器通過API與存儲引擎通信,屏蔽了各種引擎之間的差異,常見的存儲引擎有:InnoDB、MyISAM。

一條 select 語句執行流程:

  • 客戶端通過連接器與 MySQL 服務器建立連接,并獲取了用戶的讀寫權限,然后提交查詢語句。
  • 首先 MySQL 會在查詢緩存中對提交的語句進行查詢,如果命中且用戶對表有操作權限,會直接返回查詢緩存中查詢結果作為本次查詢的結果,查詢到此結束。
  • 如果查詢緩存未命中,會來到分析器,分析器會解析語句并檢查其合法性。如果語句不符合 MySQL 的語法規范,執行器會報錯,查詢到此結束。
  • 若語句合法,會來到優化器,優化器會為 SQL 語句選擇最優的執行計劃。
  • 最后來到執行器,如果用戶對表有操作權限,執行器會調用存儲引擎提供的接口來執行 SQL 語句,然后將查詢結果返回給客戶端,查詢到此結束。

4.說說常用的幾種字段類型。

這個問題考察面試者對 MySQL 字段類型的了解程度,可以延伸出很多小問題,例如 char 與 varchar 的區別。

常用的字段類型分類:

數值型:

 

 

 

 

字符串類型:

 

 

 

 

日期和時間類型:

 

 

 

 

int(M)中的 M 代表最大顯示寬度,"最大顯示寬度"我們第一反應是該字段的值最大能允許存放的值的寬度,以為我們建了int(1),就不能存放數據10了, 其實不是這個意思,int(5)和int(10)可存儲的范圍一樣。

CHAR類型是定長的,MySQL總是根據定義的字符串長度分配足夠的空間。當保存CHAR值時,在它們的右邊填充空格以達到指定的長度,當檢索到CHAR值時,尾部的空格被刪除掉。VARCHAR類型用于存儲可變長字符串,存儲時,如果字符沒有達到定義的位數,也不會在后面補空格。char(M) 與 varchar(M)中的的 M 都表示保存的最大字符數,單個字母、數字、中文等都是占用一個字符。

5.講講索引的作用及結構及使用規范。

關于索引,能有好多好多問題,可能幾篇文章也寫不明白。簡單分享下這類問題的回答:

索引的目的在于提高查詢效率。可以類比字典中的目錄,查找字典內容時可以根據目錄查找到數據的存放位置,然后直接獲取即可。索引是表的目錄,在查找內容之前可以先在目錄中查找索引位置,以此快速定位查詢數據。

InnoDB 引擎下,主要使用的是 B+Tree 索引,每個索引其實都是一顆B+樹,B+樹是為了磁盤及其他存儲輔助設備而設計的一種平衡查找樹(不是二叉樹),在B+樹中,所有的數據都在葉子節點,且每一個葉子節點都帶有指向下一個節點的指針,形成了一個有序的鏈表。

從物理存儲角度來看,InnoDB 索引可分為聚簇索引(clustered index)和二級索引(secondary index)或輔助索引。聚簇索引的葉子節點存的是整行數據,當某條查詢使用的是聚簇索引時,只需要掃描聚簇索引一顆B+樹即可得到所需記錄,如果想通過二級索引來查找完整的記錄的話,需要通過回表操作,也就是在通過二級索引找到主鍵值之后再到聚簇索引中查找完整的記錄。

索引的優點顯而易見是可以加速查詢,但創建索引也是有代價的。首先每建立一個索引都要為它建立一棵B+樹,會占用額外的存儲空間;其次當對表中的數據進行增加、刪除、修改時,索引也需要動態的維護,降低了數據的維護速度。所以,索引的創建及使用時有原則的,一般只為用于搜索、排序、分組、連接的列創建索引,選擇性差的列盡量不創建索引。

6.講下 MySQL 事務的特性及隔離級別。

MySQL 事務相關問題也經常被問到,一些原理性的東西還是需要深入去學習的。

ACID 四個特性:

  • A(Atomicity,原子性):一個事務中的操作要么都成功,要么都失敗。
  • C(Consistency,一致性):數據庫總是從一個一致性狀態轉換到另一個一致性狀態,若破壞約束,則不滿足一致性條件。
  • I(Isolation,隔離性):一個事務的執行不能其它事務干擾。即一個事務內部的操作及使用的數據對其它并發事務是隔離的,并發執行的各個事務之間不能互相干擾。
  • D(Durability,持久性):事務在提交以后,它所做的修改就會被永久保存到數據庫。

事務隔離級別:

  • 讀未提交(Read Uncommitted):事務中的修改,即便沒有提交,對其他事務也都是可見的。
  • 讀已提交(Read Committed):事務中的修改只有在提交之后,才會對其他事務可見。
  • 可重復讀(Repeatable Read):一個事務中多次查詢相同的記錄,結果總是一致的(默認的隔離級別)。
  • 可串行化(Serializable):事務都是串行執行的,讀會加讀鎖,寫會加寫鎖。

并發事務帶來的問題:

  • 臟讀(Dirty Reads):事務A讀取了事務B未提交的數據,然后B回滾操作,那么A讀取到的數據是臟數據。
  • 不可重復讀(Non-Repeatable Reads):事務 A 多次讀取同一數據,事務B在事務A多次讀取的過程中,對數據作了更新并提交,導致事務A多次讀取同一數據時,結果不一致。
  • 幻讀(Phantom Reads):幻讀與不可重復讀類似。它發生在一個事務A讀取了幾行數據,接著另一個并發事務B插入了一些數據時。在隨后的查詢中,事務A就會發現多了一些原本不存在的記錄,就好像發生了幻覺一樣,所以稱為幻讀。

 

責任編輯:華軒 來源: MySQL技術
相關推薦

2021-02-23 12:43:39

Redis面試題緩存

2019-12-26 09:52:33

Redis集群線程

2021-08-05 05:04:50

熱部署模型字節

2022-08-22 18:57:29

React前端面試

2019-11-26 10:30:11

CSS前端面試題

2020-08-31 12:20:07

Python面試題代碼

2025-03-11 06:28:21

2023-09-13 08:00:57

云原生Java開發者

2020-03-03 17:47:07

UDP TCP面試題

2021-12-08 11:18:21

Spring Bean面試題生命周期

2022-04-15 09:23:29

Kubernetes面試題

2010-09-17 14:54:29

常用網絡協議

2020-06-04 14:40:40

面試題Vue前端

2011-03-24 13:27:37

SQL

2023-11-13 07:37:36

JS面試題線程

2018-07-10 16:50:28

數據庫MySQL面試題

2021-09-07 18:40:55

單向數據流數據

2023-10-20 15:58:27

Python刪除指定字符

2021-11-02 10:10:38

面試元素語言

2025-03-20 07:54:57

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲精品一区二区在线观看 | 成人福利网站 | 91免费在线视频 | 国产 日韩 欧美 在线 | 国产一区在线免费 | 另类专区成人 | 国产精品久久久久久 | 国产99久久久国产精品下药 | 久久久成人免费一区二区 | 久久一区二区av | 亚洲成人av在线播放 | 国产又色又爽又黄又免费 | 日本成人久久 | 午夜天堂精品久久久久 | 欧美在线一区二区三区四区 | 中日韩毛片 | 在线a视频网站 | 欧美bondage紧缚视频 | 亚洲天堂999| 精品美女在线观看视频在线观看 | 日韩成人影院 | 亚洲日本视频 | 国产在线a视频 | 伊人久久麻豆 | 国产一区二区三区视频 | 91天堂| 成人精品国产一区二区4080 | 欧美在线观看一区二区 | 日韩久久久久久久 | 日本成人福利视频 | 中国美女一级黄色片 | 三级黄视频在线观看 | 亚洲精品成人 | 日韩三级一区 | 久久亚洲一区 | 欧美一区二区免费 | 青青草av| 久久久久成人精品亚洲国产 | 黄色av免费网站 | 久久久www成人免费精品 | 夜夜骑首页 |