1, mysql的複製原理以及流程。
(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者的索引的實現方式