1. 程式人生 > >資料庫面試1

資料庫面試1

1.MYSQL 有哪些儲存引擎,各自優缺點

 ☞ MYSQL儲存引擎種類(瞭解):MyISAM、InnoDB、BDB、MEMORY、MERGE、EXAMPLE、NDBCluster、ARCHIVE、CSV、BLACKHOLE、FEDERATED等。在Oracle 和SQL Server等資料庫中只有一種儲存引擎,所有資料儲存管理機制都是一樣的。而MySql資料庫提供了多種儲存引擎使用者可以根據不同的需求為資料表選擇不同的儲存引擎,使用者也可以根據自己的需要編寫自己的儲存引擎。簡單的說下什麼是儲存引擎,儲存引擎說白了就是如何儲存資料、如何為儲存的資料建立索引和如何更新、查詢資料等技術的實現方法。因為在關係資料庫中資料的儲存是以表的形式儲存的,所以儲存引擎也可以稱為表型別(即儲存和操作此表的型別)。

      ☞ 重點介紹三個:MyISAM、InnoDB、MEMORY。
      【1】MyISAM: ①、擁有較高的插入,查詢速度。②、不支援事務,行級鎖和外來鍵約束的功能。③、使用表級鎖,併發效能差。④、主機宕機後,MyISAM表易損壞,災難恢復性不佳。⑤、可以配合鎖,實現作業系統下資料的複製備份、遷移。⑥、只快取索引,資料的快取是通過作業系統快取區來實現的,可能引發過多的系統呼叫且效率不佳。⑦、資料緊湊儲存,因此可獲得更小的索引和更快的全表掃描效能。
      【2】InnoDB:5.5版本後Mysql的預設資料庫,事務型資料庫的首選引擎,①、支援ACID事務。②、支援行級鎖定。③、災難恢復性好。④、支援外來鍵關聯。⑤、支援熱備份。⑥、對於InnoDB引擎中的表,其資料的物理組織是簇表(Cluster Table),主鍵索引和資料是在一起的,資料按主鍵的順序物理分佈。⑦、實現了緩衝管理,不僅能緩衝索引也能緩衝資料,並且能夠自動建立雜湊索引以加快資料的獲取。
      【3】MEMORY:①、所有資料置於記憶體的儲存引擎,擁有極高的插入,更新和查詢效率。但是會佔用和資料量成正比的記憶體空間。②、其內容會在Mysql重新啟動時丟失,複製維護時需要小心。③、使用表級鎖,雖然記憶體訪問速度快,但是頻繁的讀寫,表級鎖會成為瓶頸。④、只支援固定大小的行,varchar型別的欄位會儲存為固定長度的Char型別,浪費空間。⑤、不支援TEXT、BLOB欄位,當有些查詢需要使用臨時表時(因為是存在於記憶體中,所以這種型別常應用於臨時表中),如果表中有TEXT、BLOB欄位,那麼會轉換為基於磁碟的MyISAM表,嚴重降低效能。⑥、由於記憶體資源成本比較昂貴,一般不建議設定過大的記憶體表,如果記憶體表滿了,可通過清除資料或調整記憶體表引數來避免報錯。⑦、MEMORY表在所有客戶端之間共享。