1.1. MySQL的binlog(主從復(fù)制機(jī)制)
開啟
-- 配置文件中開啟
-- 開啟binlog
log_bin=ON
-- 指定名稱
log_bin_basename=/var/lib/mysql/mysql-bin
-- 索引名稱
log_bin_index=/var/lib/mysql/mysql-bin.index
mysql 使用binlog 實現(xiàn)主從復(fù)制
從庫中開啟線程去主庫中讀取binlog,然后同步從庫數(shù)據(jù)(就是執(zhí)行binlog中的sql),從而實現(xiàn)主從復(fù)制
binlog 三種存儲模式
statement: 保存每個sql語句到binlog 中,從庫拿去這些sql去執(zhí)行
row:基于行模式,行更新之后就同步到從庫
mixed:混合模式,以上兩種方式混合
全部面試題+v:YDT787領(lǐng)取
1.2. InnoDB與MyISAM的區(qū)別
MyISAM的索引與行記錄是分開存儲的(非聚集索引)
InnoDB的主鍵索引與行記錄是存儲在一起的(聚集索引)
MyISAM 多用數(shù)據(jù)查詢,不建議做更新、刪除操作
InnoDB支持事務(wù),MyISAM不支持事務(wù)
MyISAM不支持外鍵,InnoDB支持外鍵
1.3. 行鎖表鎖的區(qū)別
鎖定粒度:表鎖 > 行鎖
加鎖效率:表鎖 > 行鎖
沖突概率:表鎖 > 行鎖
并發(fā)性能:表鎖 < 行鎖
1.4. 樂觀鎖與悲觀鎖
樂觀鎖是指在操作一條數(shù)據(jù)時,認(rèn)為不會發(fā)生沖突,不加鎖。在MySQL通常加一個version字段來實現(xiàn)樂觀鎖,它是一種人為的方式
悲觀鎖是指沒次操作總?cè)蝿?wù)會發(fā)生沖突,每一次操作都會先獲取鎖,MYSQL中S鎖和X鎖就是悲觀鎖的一種形式
1.5. 隔離級別是什么,有什么作用
在事務(wù)并發(fā)情況下,各個事務(wù)之間會出現(xiàn)幻讀(數(shù)據(jù)讀取條數(shù)不一致——>范圍查找),可重復(fù)讀(事務(wù)內(nèi)兩次讀取的數(shù)據(jù)不一致),臟讀(讀到事務(wù)未提交的數(shù)據(jù))
1.6. 什么情況下不會使用索引
在索引字段上計算、函數(shù)、(自動or手動)類型轉(zhuǎn)換,會導(dǎo)致全表掃描,而不會使用索引
SELECT*FROMstaffsWHERELEFT(NAME,2)='lee'
使用(!=或者<>、is null,is not null )時也是用不到索引
like以通配符開頭('%James')mysql索引失效會變成全表掃描操作
字符串不加單引號索引失效(出現(xiàn)隱式類型裝換到時索引失效)
SELECT*FROMstaffsWHEREname=2000
少用or,用它連接時會索引失效
1.7. 創(chuàng)建檢索的基本原則是什么
頻繁作為查詢的條件的字段應(yīng)該創(chuàng)建索引
頻繁更新的字段不適合創(chuàng)建索引:因為每次更新不單單是更新了記錄還會更新索引,加重IO負(fù)擔(dān)
Where條件里用不到的字段不創(chuàng)建索引
查詢中排序的字段,排序字段若通過索引去訪問將大大提高排序的速度
查詢中統(tǒng)計或者分組的字段
經(jīng)常增刪改的表不適合建立索引
離散性比較低的列不適合做索引(count(distinct col):count(col)的比例)
1.8. 查詢優(yōu)化技巧
全值匹配我最愛,最左前綴要遵守;
帶頭大哥不能死,中間兄弟不能斷;
索引列上少計算,范圍之后全失效;
LIKE百分寫最右,覆蓋索引不寫*;
不等空值還有OR,索引失效要掃用;
VAR引號不能丟,SQL高級也不難;
1.9. B+索引數(shù)據(jù)結(jié)構(gòu),和B樹的區(qū)別
B樹
每個節(jié)點都存儲key和data,所有節(jié)點組成這棵樹,并且葉子節(jié)點指針為null
遵守二叉樹的基本準(zhǔn)則,每次插入數(shù)據(jù)或則刪除數(shù)據(jù)都會計算保持一個平衡(旋轉(zhuǎn))
B+Tree(B樹加強版)
節(jié)點關(guān)鍵字搜索采用閉合區(qū)間
非葉節(jié)點不保存數(shù)據(jù)相關(guān)信息,只保存關(guān)鍵字和子節(jié)點的引用
關(guān)鍵字對應(yīng)的數(shù)據(jù)保存在葉子節(jié)點中
葉子節(jié)點是順序排列的,并且相鄰節(jié)點具有順序引用的關(guān)系
這種方式的好處就是快,性能更好
1.10. 事務(wù)四大特性(ACID)
原子性(Atomicity)
最小的工作單元,整個工作單元要么一起提交成功,要么全部失敗回滾
一致性(Consistency)
事務(wù)中操作的數(shù)據(jù)及狀態(tài)改變是一致的,即寫入資料的結(jié)果必須完全符合預(yù)設(shè)的規(guī)則, 不會因為出現(xiàn)系統(tǒng)意外等原因?qū)е聽顟B(tài)的不一致
隔離性(Isolation)
一個事務(wù)所操作的數(shù)據(jù)在提交之前,對其他事務(wù)的可見性設(shè)定(一般設(shè)定為不可見)
持久性(Durability)
事務(wù)所做的修改就會永久保存,不會因為系統(tǒng)意外導(dǎo)致數(shù)據(jù)的丟失
1.11. MVCC機(jī)制
Multiversion concurrency control (多版本并發(fā)控)
并發(fā)訪問(讀或?qū)?數(shù)據(jù)庫時,對正在事務(wù)內(nèi)處理的數(shù)據(jù)做多版本的管理。以達(dá)到用來避免寫操作的堵塞,從而引發(fā)讀操作的并發(fā)問題。
解決了InnoDB的幻讀問題(RR隔離級別)
全部面試題+v:YDT787領(lǐng)取