更新時間:2022-12-22 15:26:04 來源:動力節點 瀏覽1605次
1、數據庫存儲引擎
數據庫存儲引擎是數據庫底層軟件組織,數據庫管理系統(DBMS)使用數據引擎進行創建、查詢、更新和刪除數據。不同的存儲引擎提供
不同的存儲機制、索引技巧、鎖定水平等功能,使用不同的存儲引擎,還可以 獲得特定的功能。現在許多不同的數據庫管理系統都支持多
種不同的數據引擎。存儲引擎主要有: 1. MyIsam , 2. InnoDB, 3. Memory, 4. Archive, 5. Federated 。
2、InnoDB(B+樹)
InnoDB 底層存儲結構為B+樹, B樹的每個節點對應innodb的一個page, page大小是固定的,一般設為 16k。其中非葉子節點只有鍵值,
葉子節點包含完成數據
適用場景:
1)經常更新的表,適合處理多重并發的更新請求。
2)支持事務。
3)可以從災難中恢復(通過 bin-log 日志等)。
4)外鍵約束。只有他支持外鍵。
5)支持自動增加列屬性 auto_increment。
3、TokuDB( Fractal Tree-節點帶數據)
TokuDB 底層存儲結構為 Fractal Tree,Fractal Tree 的結構與 B+樹有些類似, 在 Fractal Tree中,
每一個 child 指針除了需要指向一個 child
節點外,還會帶有一個 Message Buffer ,這個Message Buffer 是一個 FIFO 的隊列,用來緩存更新操作。
例如,一次插入操作只需要落在某節點的 Message Buffer 就可以馬上返回了,并不需要搜索到葉子節點。這些緩存的更新會在查詢時或后
臺異步合并應用到對應的節點中。
TokuDB 在線添加索引,不影響讀寫操作, 非常快的寫入性能, Fractal-tree 在事務實現上有優
勢。 他主要適用于訪問頻率不高的數據或歷史數據歸檔
4、MyIASM
MyIASM是 MySQL默認的引擎,但是它沒有提供對數據庫事務的支持,也不支持行級鎖和外鍵,因此當 NSERT(插入)或 UPDATE(更新)數據
時即寫操作需要鎖定整個表,效率便會低一些。
ISAM 執行讀取操作的速度很快,而且不占用大量的內存和存儲資源。在設計之初就預想數據組織成有固定長度的記錄,按順序存儲的。 ---
ISAM 是一種靜態索引結構。
缺點是它不 支持事務處理。
5、Memory
Memory(也叫 HEAP)堆內存:使用存在內存中的內容來創建表。每個 MEMORY 表只實際對應一個磁盤文件。 MEMORY 類型的表訪問
非常得快,因為它的數據是放在內存中的,并且默認使用HASH 索引。但是一旦服務關閉,表中的數據就會丟失掉。 Memory 同時支持散
列索引和 B 樹索引, B樹索引可以使用部分查詢和通配查詢,也可以使用<,>和>=等操作符方便數據挖掘,散列索引相等的比較快但是對于
范圍的比較慢很多
6、數據庫引擎有哪些
如何查看mysql提供的所有存儲引擎
mysql> show engines;
mysql常用引擎包括:MYISAM、Innodb、Memory、MERGE
1. MYISAM:全表鎖,擁有較高的執行速度,不支持事務,不支持外鍵,并發性能差,占用空間相對較小,對事務完整性沒有要求,以
select、insert為主的應用基本上可以使用這引擎
2. Innodb:行級鎖,提供了具有提交、回滾和崩潰回復能力的事務安全,支持自動增長列,支持外鍵約束,并發能力強,占用空間是
MYISAM的2.5倍,處理效率相對會差一些
3. Memory:全表鎖,存儲在內容中,速度快,但會占用和數據量成正比的內存空間且數據在mysql重啟時會丟失,默認使用HASH索引,
檢索效率非常高,但不適用于精確查找,主要用于那些內容變化不頻繁的代碼表
4. MERGE:是一組MYISAM表的組合
7、InnoDB與MyISAM的區別
1. InnoDB支持事務,MyISAM不支持,對于InnoDB每一條SQL語言都默認封裝成事務,自動提交,這樣會影響速度,所以最好把多條
SQL語言放在begin和commit之間,組成一個事務;
2. InnoDB支持外鍵,而MyISAM不支持。對一個包含外鍵的InnoDB表轉為MYISAM會失敗;
3. InnoDB是聚集索引,數據文件是和索引綁在一起的,必須要有主鍵,通過主鍵索引效率很高。但是輔助索引需要兩次查詢,先查詢到
主鍵,然后再通過主鍵查詢到數據。因此,主鍵不應該過大,因為主鍵太大,其他索引也都會很大。而MyISAM是非聚集索引,數據文
件是分離的,索引保存的是數據文件的指針。主鍵索引和輔助索引是獨立的。
4. InnoDB不保存表的具體行數,執行select count(*) from table時需要全表掃描。而MyISAM用一個變量保存了整個表的行數,執行上
述語句時只需要讀出該變量即可,速度很快;
5. Innodb不支持全文索引,而MyISAM支持全文索引,查詢效率上MyISAM要高
8、索引
索引(Index)是幫助 MySQL 高效獲取數據的數據結構。 常見的查詢算法,順序查找,二分查找,二叉排序樹查找,哈希散列法,分塊查找,平衡多
路搜索樹 B 樹(B-tree) ,索引是對數據庫表中一個或多個列的值進行排序的結構,建立索引有助于快速獲取信息。
你也可以這樣理解:索引就是加快檢索表中數據的方法。數據庫的索引類似于書籍的索引。在書籍中,索引允許用戶不必翻閱完整個書就能
迅速地找到所需要的信息。在數據庫中,索引也允許數據庫程序迅速地找到表中的數據,而不必掃描整個數據庫
mysql 有4種不同的索引:
主鍵索引(PRIMARY)
唯一索引(UNIQUE)
普通索引(INDEX)
全文索引(FULLTEXT)
索引并非是越多越好,創建索引也需要耗費資源,一是增加了數據庫的存儲空間,二是在插入和刪除時要花費較多的時間維護索引
索引加快數據庫的檢索速度
索引降低了插入、刪除、修改等維護任務的速度
唯一索引可以確保每一行數據的唯一性
通過使用索引,可以在查詢的過程中使用優化隱藏器,提高系統的性能
索引需要占物理和數據空間
以上就是“2023總結的Mysql面試題大全”,你能回答上來嗎?如果想要了解更多的Java面試題相關內容,可以關注動力節點Java官網。
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習