【58期】盤點(diǎn)那些面試中最常問的MySQL問題,第一彈!
閱讀本文大概需要 4 分鐘。
來自:網(wǎng)絡(luò)
1、MySQL中myisam與innodb的區(qū)別
不支持事務(wù),但是每次查詢都是原子的;
支持表級(jí)鎖,即每次操作對(duì)整個(gè)表加鎖;
存儲(chǔ)表的總行數(shù);
一個(gè)MYISAM表有三個(gè)文件:索引文件、表結(jié)構(gòu)文件、數(shù)據(jù)文件;
采用非聚集索引,索引文件的數(shù)據(jù)域存儲(chǔ)指向數(shù)據(jù)文件的指針。輔索引與主索引基本一致,但是輔索引不用保證唯一性。
支持ACID的事務(wù),支持事務(wù)的四種隔離級(jí)別;
支持行級(jí)鎖及外鍵約束:因此可以支持寫并發(fā);
不存儲(chǔ)總行數(shù);
一個(gè)InnoDb引擎存儲(chǔ)在一個(gè)文件空間(共享表空間,表大小不受操作系統(tǒng)控制,一個(gè)表可能分布在多個(gè)文件里),也有可能為多個(gè)(設(shè)置為獨(dú)立表空,表大小受操作系統(tǒng)文件大小限制,一般為2G),受操作系統(tǒng)文件大小的限制;
主鍵索引采用聚集索引(索引的數(shù)據(jù)域存儲(chǔ)數(shù)據(jù)文件本身),輔索引的數(shù)據(jù)域存儲(chǔ)主鍵的值;因此從輔索引查找數(shù)據(jù),需要先通過輔索引找到主鍵值,再訪問輔索引;最好使用自增主鍵,防止插入數(shù)據(jù)時(shí),為維持B+樹結(jié)構(gòu),文件的大調(diào)整。
2、MySQL INT和CHAR隱式類型轉(zhuǎn)換需要注意什么?
+----+----------+
|?id?|?name???|
+----+----------+
|??1?|?apple???|
|??2?|?banana?|
|??3?|?99cat???|
+----+----------+
//?查詢條件轉(zhuǎn)化為數(shù)字1再比較
mysql>?select?*?from?product?where?id?=?'1abc23';
+----+---------+
|?id?|?name??|
+----+---------+
|??1?|?apple??|
+----+---------+
//?查詢字段全部轉(zhuǎn)化成數(shù)字,id:1和id:2字段值轉(zhuǎn)化為0,id:3轉(zhuǎn)化成99,再比較
mysql>?select?*?from?product?where?name=0;
+----+----------+
|?id?|?name???|
+----+----------+
|??1?|?apple???|
|??2?|?banana?|
+----+----------+
3、MySQL 如何高效率隨機(jī)獲取N條數(shù)據(jù)?
SELECT?*
FROM?`mm_account`?AS?t1?JOIN?(SELECT?ROUND(RAND()?*?(SELECT?MAX(id)?FROM?`mm_account`))?AS?id)?AS?t2
WHERE?t1.id?>=?t2.id
ORDER?BY?t1.id?ASC?LIMIT?4;
SELECT?*?FROM?`mm_account`?
WHERE?id?>=?(SELECT?floor(RAND()?*?(SELECT?MAX(id)?FROM?`mm_account`)))??and?city="city_91"?and?showSex=1
ORDER?BY?id?LIMIT?4;
SELECT?*?FROM?mm_account?
WHERE?id?>=?((SELECT?MAX(id)?FROM?mm_account)-(SELECT?MIN(id)?FROM?mm_account))?*?RAND()?+?(SELECT?MIN(id)?FROM?mm_account)
limit?5;
SELECT?*
FROM?`mm_account`?AS?t1?JOIN?(SELECT?ROUND(RAND()?*?(
(SELECT?MAX(id)?FROM?`mm_account`?where?id<1000?)-(SELECT?MIN(id)?FROM?`mm_account`?where?id<1000?))+(SELECT?MIN(id)?FROM?`mm_account`?where?id<1000?))?AS?id)?AS?t2
WHERE?t1.id?>=?t2.id
ORDER?BY?t1.id?LIMIT?5;
4、說說你知道的MySQL的索引類型,并分別簡(jiǎn)述一下各自的場(chǎng)景。
推薦閱讀:
【56期】你說你熟悉并發(fā)編程,那么你說說Java鎖有哪些種類,以及區(qū)別
【55期】面試中經(jīng)常被問到Java引用類型原理,帶你深入剖析
微信掃描二維碼,關(guān)注我的公眾號(hào)
朕已閱?

