mysql
1.資料庫的三范式是什么?
1NF :列不可再分
2NF:消除非主屬性對鍵的部分依賴
3NF:消除非主屬性對鍵的傳遞依賴
BCNF:消除主屬性對鍵的部分依賴、傳遞依賴
參考文章
2.一張自增表里面總共有 7 條資料,洗掉了最后 2 條資料,重啟 mysql 資料庫,又插入了一條資料,此時 id 是幾
如果資料庫引擎用的是innodb,那么id為6,因為innodb表把自增主鍵的最大id記錄到記憶體中,所以重啟資料庫或者對表OPTIMIZE操作,都會使最大id丟失
如果資料庫引擎用的是myisam,那么id為8,因為myisam表把自增主鍵記錄到資料檔案里面,所以重啟資料庫,自增主鍵的最大id也不會丟失
參考文章
舉一反三:
InnoDB和MyISAM區別
3.如何獲取當前資料庫版本
使用 select version() 獲取當前 MySQL 資料庫版本,
4.說一下 ACID 是什么
原子性:一個事務是不可分割的單位,其中的操作要么多做,要么都不做
一致性:事務執行結束后,資料庫的完整約束沒有被破壞,事務執行的前后都是合法的資料狀態
隔離性:事務的內部操作與其他事務是隔離的,并發執行的各個事務之間不能互相干擾
持久性:事務一旦提交,對資料庫的改變是永久的
參考文章
5.char 和 varchar 的區別是什么
參考文章
6.float 和 double 的區別是什么?
參考文章
7.mysql 的內連接、左連接、右連接有什么區別?
參考文章
8.mysql 索引是怎么實作的
參考1
參考2
9.怎么驗證 mysql 的索引是否滿足需求
參考1
參考2
10.說一下資料庫的事務隔離
-
當多個用戶訪問資料庫時,每個用戶開啟的事務并不能被其他操作所干擾,多個并發事務之間相互隔離,
-
不考慮事務的隔離性會出現3種問題
1.臟讀:用戶讀到了未提交的資料
2.不可重復讀:一個事務多次查詢某一資料回傳了不同值
3.幻讀:一個事務在兩次查詢同一范圍的時候,后一次查詢看到了前一次查詢沒有看到的行
為了解決“隔離”與“并發”的矛盾
- 有四種隔離級別
讀未提交:最低級別
讀已提交:解決臟讀
可重復讀:解決臟讀和不可重復讀,mysql默認級別
串行化: 解決臟讀、不可重復度和幻讀
參考文章
11.說一下 mysql 常用的引擎
innodb,有兩個檔案 .frm 定義檔案 .idb資料檔案;支持事務,隔離等級有四個(讀未提及,讀已提交,可重復讀,串行化),默認為可重復讀;支持行鎖和表鎖
myisam,有三個檔案,.frm定義檔案,.myd資料檔案,.myi索引檔案;不支持事務;表鎖
參考文章
12.說一下 mysql 的行鎖和表鎖
表鎖,開銷小,加鎖快,不會出現死鎖;鎖定粒度大,容易出現沖突的概率高,并發量最低,
行鎖,開銷大,加鎖慢,會出現死鎖;鎖定粒度小,發生沖突的概率低,并發最高
參考文章
13.說一下樂觀鎖和悲觀鎖
樂觀鎖悲觀鎖帶演示
14.mysql 問題排查都有哪些手段
show processlist查看當前所有連接資訊,使用explain命令查詢sql陳述句執行計劃,開啟慢查詢日志,查看慢查詢的sql,
15.如何做 mysql 的性能優化
參考文章
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/261793.html
標籤:其他
上一篇:后端返給前端的兩種json形式,字串陣列形式和物件陣列形式
下一篇:MySql8.0(04)
