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者的索引的實現方式