MySql 03 MySQL常見面試題

2022-06-18 08:45:12 字數 1134 閱讀 3282

show engines;  #檢視mysql提供的所有儲存引擎

預設的儲存引擎是innodb,並且在5.7版本所有的儲存引擎中只有 innodb 是事務性儲存引擎,也就是說只有 innodb 支援事務。

myisam和innodb區別

myisam是mysql的預設資料庫引擎(5.5版之前)。雖然效能極佳,而且提供了大量的特性,包括全文索引、壓縮、空間函式等,但myisam不支援事務和行級鎖,而且最大的缺陷就是崩潰後無法安全恢復。不過,5.5版本之後,mysql引入了innodb(事務性資料庫引擎),mysql 5.5版本後預設的儲存引擎為innodb。

mysql索引使用的資料結構主要有btree索引 和 雜湊索引 。對於雜湊索引來說,底層的資料結構就是雜湊表,因此在絕大多數需求為單條記錄查詢的時候,可以選擇雜湊索引,查詢效能最快;其餘大部分場景,建議選擇btree索引。

mysql的btree索引使用的是b樹中的b+tree,但對於主要的兩種儲存引擎的實現方式是不同的。

事務是邏輯上的一組操作,要麼都執行,要麼都不執行。

原子性(atomicity): 事務是最小的執行單位,不允許分割。事務的原子性確保動作要麼全部完成,要麼完全不起作用;

一致性(consistency): 執行事務前後,資料保持一致,多個事務對同乙個資料讀取的結果是相同的;

隔離性(isolation): 併發訪問資料庫時,乙個使用者的事務不被其他事務所干擾,各併發事務之間資料庫是獨立的;

永續性(durability): 乙個事務被提交之後。它對資料庫中資料的改變是持久的,即使資料庫發生故障也不應該對其有任何影響。

在典型的應用程式中,多個事務併發執行,經常會操作相同的資料來完成各自的任務(多個使用者對同一資料進行操作)。併發雖然是必須的,但可能會導致以下的問題。

不可重複讀和幻讀區別:

不可重複讀的重點是修改比如多次讀取一條記錄發現其中某些列的值被修改,幻讀的重點在於新增或者刪除比如多次讀取一條記錄發現記錄增多或減少了。

sql 標準定義了四個隔離級別:

隔離級別

髒讀不可重複讀

幻影讀read-uncommitted√√

√read-committed×√

√repeatable-read××

√serializable××

×

Mysql常見面試題

參考博文 innodb引擎中的索引型別 聚集索引 每張表都會他們的主鍵建立一顆b 樹索引,並且在葉子節點上會存放對應主鍵的行記錄。輔助索引 非聚集索引 對非主鍵列建立的b 樹索引,葉子節點存放了索引值和書籤,這個書籤就是對應的主鍵值。那之後可以通過這個主鍵值找到對應的行記錄。聯合索引 對兩個或者兩個...

mysql常見面試題

索引是一種資料結構,使用索引可以提高查詢效率。1.hash索引 2.b 樹索引 1.hash索引查詢更快,使用hash函式一次查詢,但是無法進行範圍查詢,不支援排序 2.b 樹索引有logn級別的查詢速度,支援範圍查詢,支援排序 1.大資料量 2.頻繁使用字段 一組sql語句,要麼同時成功,要麼同時...

mysql常見面試題

1.資料庫的儲存引擎有哪些?myisam與innodb的區別?2.三正規化指的是哪三正規化?3.什麼是事物?有那些特點?事物的隔離級別有那些?mysql的預設隔離級別有哪些?4.髒讀 幻讀 不可重複讀指的是什麼?5.資料庫優化 5.1 什麼是資料庫索引?資料庫索引有哪些型別?5.2 資料庫索引b t...