範文齋

位置:首頁 > 職場範文 > 面試

mysql dba面試題及答案

面試9.87K

1, mysql的複製原理以及流程。

mysql dba面試題及答案

(1)先問基本原理流程,3個線程以及之間的關聯。

(2)再問一致性,延時性,數據恢復。

(3)再問各種工作遇到的複製bug的解決方法

3,問mysql中varchar與char的區別以及var50)中的30代表的涵義。

(1)varchar與char的區別

char是一種固定長度的類型,varchar則是一種可變長度的類型

(2)var50)中50的涵義

最多存放50個字節

(3)int(20)中20的涵義

int(M)中的M indicates the maximum display width (最大顯示寬度)for integer types. The maximum legal display width is 255.

(4)爲什麼MySQL這樣設計?

4,問了innodb的事務與日誌的實現方式。

(1)有多少種日誌

錯誤日誌:記錄出錯信息,也記錄一些警告信息或者正確的信息

慢查詢日誌:設置一個閾值,將運行時間超過該值的所有SQL語句都記錄到慢查詢的日誌文件中。

二進制日誌:記錄對數據庫執行更改的所有操作

查詢日誌:記錄所有對數據庫請求的信息,不論這些請求是否得到了正確的執行。

(2)日誌的存放形式

(3)事務是如何通過日誌來實現的,說得越深入越好。

隔離性: 通過 鎖 實現

原子性、一致性和持久性是通過 redo和undo來完成的。

5,問了mysql binlog的幾種日誌錄入格式以及區別

(1)各種日誌格式的涵義

(2)適用場景

(3)結合第一個問題,每一種日誌格式在複製中的優劣。

6,問了下mysql數據庫cpu飆升到500%的話他怎麼處理?

(1) 沒有經驗的,可以不問

(2)有經驗的,問他們的處理思路

7,sql優化

(1)explain出來的各種item的意義

(2)profile的意義以及使用場景。

(3)explain中的索引問題。

8, 備份計劃,mysqldump以及xtranbackup的實現原理,

(1) 備份計劃

(2)備份恢復時間

(3)備份恢復失敗如何處理

9, 500臺db,在最快時間之內重啓。

10, 在當前的工作中,你碰到到的最大的mysql db問題是?

11, innodb的讀寫參數優化

(1)讀取參數,global buffer pool以及 local buffer

(2)寫入參數

(3)與IO相關的參數

(4)緩存參數以及緩存的適用場景

12 ,請簡潔地描述下MySQL中InnoDB支持的四種事務隔離級別名稱,以及逐級之間的區別?

SQL標準定義的四個隔離級別爲:

read uncommited

read committed

repeatable read

serializable

Read Uncommitted(讀取未提交內容)

在該隔離級別,所有事務都可以看到其他未提交事務的執行結果。本隔離級別很少用於實際應用,因爲它的性能也不比其他級別好多少。讀取未提交的數據,也被稱之爲髒讀(Dirty Read)。

Read Committed(讀取提交內容)

這是大多數數據庫系統的默認隔離級別(但不是MySQL默認的)。它滿足了隔離的簡單定義:一個事務只能看見已經提交事務所做的改變。這種隔離級別也支持所謂的不可重複讀(Nonrepeatable Read),因爲同一事務的.其他實例在該實例處理其間可能會有新的commit,所以同一select可能返回不同結果。

Repeatable Read(可重讀)

這是MySQL的默認事務隔離級別,它確保同一事務的多個實例在併發讀取數據時,會看到同樣的數據行。不過理論上,這會導致另一個棘手的問題:幻讀(Phantom Read)。簡單的說,幻讀指當用戶讀取某一範圍的數據行時,另一個事務又在該範圍內插入了新行,當用戶再讀取該範圍的數據行時,會發現有新的“幻影” 行。InnoDB和Falcon存儲引擎通過多版本併發控制(MVCC,Multiversion Concurrency Control 間隙鎖)機制解決了該問題。注:其實多版本只是解決不可重複讀問題,而加上間隙鎖(也就是它這裏所謂的併發控制)才解決了幻讀問題。

Serializable(可串行化)

這是最高的隔離級別,它通過強制事務排序,使之不可能相互衝突,從而解決幻讀問題。簡言之,它是在每個讀的數據行上加上共享鎖。在這個級別,可能導致大量的超時現象和鎖競爭。

對於不同的事務,採用不同的隔離級別分別有不同的結果。不同的隔離級別有不同的現象。主要有下面3種現在:

1、髒讀(dirty read):一個事務可以讀取另一個尚未提交事務的修改數據。

2、非重複讀(nonrepeatable read):在同一個事務中,同一個查詢在T1時間讀取某一行,在T2時間重新讀取這一行時候,這一行的數據已經發生修改,可能被更新了(update),也可能被刪除了()。

3、幻像讀(phantom read):在同一事務中,同一查詢多次進行時候,由於其他插入操作()的事務提交,導致每次返回不同的結果集。

不同的隔離級別有不同的現象,並有不同的鎖定/併發機制,隔離級別越高,數據庫的併發性就越差,4種事務隔離級別分別表現的現象如下表:

隔離級別髒讀非重複讀幻像讀
read uncommitted允許允許允許
read committed
允許允許
repeatable read

允許
serializable


13,表中有大字段X(例如:text類型),且字段X不會經常更新,以讀爲爲主,請問

(1)您 是選擇拆成子表,還是繼續放一起?

拆成子表

(2)寫出您這樣選擇的理由?

1 提高檢索效率

14,MySQL中InnoDB引擎的行鎖是通過加在什麼上完成(或稱實現)的?爲什麼是這樣子的

通過 行多版本控制

15 MyISAM 與innodb的區別

(1) 問5點不同

MyISAM Innodb

事物支持 : 不支持 支持

鎖的粒度: table Row

存儲容量: 沒有上限 64TB

哈希索引 : 不支持 支持

全文索引: 支持 不支持

外鍵: 不支持 支持

(2) 問各種不同mysql版本的2者的改進

(3)2者的索引的實現方式

標籤:面試題 MYSQL dba