數(shù)據(jù)庫與中間件
主要是MySQL、MongDB、Redis、Nginx等;
在大學(xué)的課程里,一般都會(huì)開設(shè)一門數(shù)據(jù)庫的課程,不過這門數(shù)據(jù)庫是沒有針對某一種數(shù)據(jù)庫語言的(例如 MySQL、SQlite)。不過我這里只講 MySQL,因?yàn)樽铑l繁。數(shù)據(jù)庫不在多。
把MySQL學(xué)好,還是特別重要的,千萬不能停留在會(huì)用的層面上,而是應(yīng)該要了解一下原理,特別是對于要面試的同學(xué),會(huì)問挺多原理,不一定要寫得很號(hào),但是需要知道一些原理,像騰訊、阿里面試時(shí),面得最多的就是MySQL。下面就說說一些知識(shí)以及推薦的學(xué)習(xí)資料吧。
對于 MySQL,需要學(xué)的還挺多的,例如,
1、一條 sql 語句是如何執(zhí)行的?進(jìn)行更新時(shí)又是怎么處理的?
2、索引是如何實(shí)現(xiàn)的?多種引擎的實(shí)現(xiàn)區(qū)別?聚族索引,非聚族索引,二級(jí)索引,唯一索引、最左匹配原則等等(非常重要)
3、事務(wù)相關(guān):例如事務(wù)的隔離是如何實(shí)現(xiàn)的?事務(wù)是如何保證原子性?不同的事務(wù)看到的數(shù)據(jù)怎么就不一樣了?難道每個(gè)事務(wù)都拷貝一份視圖?MVCC 的實(shí)現(xiàn)原理(重要)等等。
4、各種鎖相關(guān),例如表鎖,行鎖,間隙鎖,共享鎖,排他鎖。這些鎖的出現(xiàn)主要是用來解決哪些問題?(重要)
5、日志相關(guān):redolog,binlog,undolog,這些日志的實(shí)現(xiàn)原理,為了解決怎么問題?日志也是非常重要的吧,面試也問的挺多。
6、數(shù)據(jù)庫的主從備份、如何保證數(shù)據(jù)不丟失、如何保證高可用等等。
還有一些常用命令也要知道。下面就是關(guān)于mysql面試題的思維導(dǎo)圖。

推薦書籍:連 sql 都不會(huì)寫的,推薦《SQL必知必會(huì)》,接著推薦《MySQL技術(shù)內(nèi)幕:InnoDB存儲(chǔ)引擎》。