數據庫引擎


1. 什么是數據庫引擎

數據庫引擎:用於存儲、處理、保護數據的核心服務。
當你訪問數據庫時,不管是手工訪問,還是程序訪問,都不是直接讀寫數據庫文件,而是通過數據庫引擎去訪問數據庫文件

2. 數據庫引擎有幾種

Innodb 、 MyISAM 、MEMORY 、MERGE

3.myisam 和innodb的區別  5+3

 InnoDB 提供事務支持,具有提交(commit)和回滾(rollback)事務的能力。 myisam不是

innodb 支持行級鎖(row-level locking)和表級鎖,默認為行級鎖 ,myisam鎖粒度是表級的

innodb 支持外鍵/mvcc,myisam 不行

使用 InnoDB 的數據庫在異常崩潰后,數據庫重新啟動的時候會保證數據庫恢復到崩潰前的狀態。這個恢復的過程依賴於 redo log,myisam 不行

 myisam更簡單 ,效率上優於innodb ,小型應用考慮使用myisam

 myisam表保存為文件的形式,在跨平台的數據轉移中使用myisam會更方便

 

補充:MyISAM 引擎和 InnoDB 引擎都是使用 B+Tree 作為索引結構,但是,兩者的實現方式不太一樣

MyISAM 引擎中,B+Tree 葉節點的 data 域存放的是數據記錄的地址。在索引檢索的時候,首先按照 B+Tree 搜索算法搜索索引,如果指定的 Key 存在,則取出其 data 域的值,

然后以 data 域的值為地址讀取相應的數據記錄。這被稱為“非聚簇索引” 

InnoDB 引擎中,其數據文件本身就是索引文件。相比 MyISAM,索引文件和數據文件是分離的,其表數據文件本身就是按 B+Tree 組織的一個索引結構,樹的葉節點 data 域保存了完整的數據記錄。

這個索引的 key 是數據表的主鍵,因此 InnoDB 表數據文件本身就是主索引。這被稱為“聚簇索引(或聚集索引)”

而其余的索引都作為輔助索引(二級索引),輔助索引的 data 域存儲相應記錄主鍵的值而不是地址,這也是和 MyISAM 不同的地方。

在根據主索引搜索時,直接找到 key 所在的節點即可取出數據;在根據輔助索引查找時,則需要先取出主鍵的值,再走一遍主索引。

因此,在設計表的時候,不建議使用過長的字段作為主鍵,也不建議使用非單調的字段作為主鍵,這樣會造成主索引頻繁分裂 

應用場景

 

 

4 對MySQL InnoDB的認識
特點是:
1、具有較好的事務支持:支持4個事務隔離級別,支持多版本讀
2、行級鎖定:通過索引實現,全表掃描仍然會是表鎖,注意間隙鎖的影響
3、讀寫阻塞與事務隔離級別相關
4、具有非常高效的緩存特性:能緩存索引,也能緩存數據
5、整個表和主鍵以Cluster方式存儲,組成一顆平衡樹
6、所有Secondary Index都會保存主鍵信息
適用場景:
1、需要事務支持(具有較好的事務特性)
2、行級鎖定對高並發有很好的適應能力,但需要確保查詢是通過索引完成
3、數據更新較為頻繁的場景
4、數據一致性要求較高
5、硬件設備內存較大,可以利用InnoDB較好的緩存能力來提高內存利用率,盡可能減少磁盤IO

事務表和非事務表 

什么是事務表呢

事務表就是可以進行事務回滾操作, InnoDB是一種數據庫存儲引擎.他是事務型數據庫的首選引擎,支持ACID事務,支持行級鎖定。InnoDB是為處理巨大數據量時的最大性能設計。

InnoDB存儲引擎完全與MySQL服務器整合,InnoDB存儲引擎為在主內存中緩存數據和索引而維持它自己的緩沖池。

什么是非事務表

Nontransactional Tables,非事務表,不支持事務的表,也就是使用MyISAM存儲引擎的表。
非事務表的特點是不支持回滾

 

關系型數據庫(如mysql)與非關系型數據庫(如Redis)的區別

https://blog.csdn.net/xyphf/article/details/82832936

1.不同的數據存儲方法。

關系數據庫和非關系數據庫之間的主要區別在於數據的存儲方式。關系數據自然采用表格格式,因此存儲在數據表的行和列中。數據之間有關系,擅長復雜的SQL操作

可以方便的生成各種數據對象,利用存儲的數據建立窗體和報表,可視化較好

相反,非關系數據不適合存儲在數據表的行和列中,而是按大塊分組在一起。非關系數據通常存儲在數據集中,例如文檔,鍵值對或圖形結構。

適合處理海量數據。尤其是在做高並發業務的時候

如 Mongodb 存儲在磁盤,快速的查詢響應

數據結構變更或更新非常方便,不需要更改已有數據的數據結構

 

2.存儲擴展

  這可能是兩者之間最大的區別,關系型數據庫是縱向擴展,也就是說想要提高處理能力,要使用速度更快的計算機。因為數據存儲在關系表中,操作的性能瓶頸可能涉及到多個表,需要通過提升計算機性能來克服。雖然有很大的擴展空間,但是最終會達到縱向擴展的上限。而Nosql數據庫是橫向擴展的,它的存儲天然就是分布式的,可以通過給資源池添加更多的普通數據庫服務器來分擔負載

3.對事務的支持是不同的。

關系型數據庫遵循ACID規則 由於關系型數據庫的數據強一致性,所以對事務的支持很好。關系型數據庫支持對事務原子性細粒度控制,並且易於回滾事務。

而Nosql數據庫 所以對事務的支持不是很好

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM