1.mysql 有哪些儲存引擎,各自優缺點
☞ mysql儲存引擎種類(了解):myisam、innodb、bdb、memory、merge、example、ndbcluster、archive、csv、blackhole、federated等。在oracle 和sql server等資料庫中只有一種儲存引擎,所有資料儲存管理機制都是一樣的。而mysql資料庫提供了多種儲存引擎。使用者可以根據不同的需求為資料表選擇不同的儲存引擎,使用者也可以根據自己的需要編寫自己的儲存引擎。簡單的說下什麼是儲存引擎,儲存引擎說白了就是如何儲存資料、如何為儲存的資料建立索引和如何更新、查詢資料等技術的實現方法。因為在關聯式資料庫中資料的儲存是以表的形式儲存的,所以儲存引擎也可以稱為表型別(即儲存和操作此表的型別)。
☞ 重點介紹三個:myisam、innodb、memory。
myisam: ①、擁有較高的插入,查詢速度。②、不支援事務,行級鎖和外來鍵約束的功能。③、使用表級鎖,併發效能差。④、主機宕機後,myisam表易損壞,災難恢復性不佳。⑤、可以配合鎖,實現作業系統下資料的複製備份、遷移。⑥、只快取索引,資料的快取是通過作業系統快取區來實現的,可能引發過多的系統呼叫且效率不佳。⑦、資料緊湊儲存,因此可獲得更小的索引和更快的全表掃瞄效能。
innodb:5.5版本後mysql的預設資料庫,事務型資料庫的首選引擎,①、支援acid事務。②、支援行級鎖定。③、災難恢復性好。④、支援外來鍵關聯。⑤、支援熱備份。⑥、對於innodb引擎中的表,其資料的物理組織是簇表(cluster table),主鍵索引和資料是在一起的,資料按主鍵的順序物理分布。⑦、實現了緩衝管理,不僅能緩衝索引也能緩衝資料,並且能夠自動建立雜湊索引以加快資料的獲取。
memory:①、所有資料置於記憶體的儲存引擎,擁有極高的插入,更新和查詢效率。但是會占用和資料量成正比的記憶體空間。②、其內容會在mysql重新啟動時丟失,複製維護時需要小心。③、使用表級鎖,雖然記憶體訪問速度快,但是頻繁的讀寫,表級鎖會成為瓶頸。④、只支援固定大小的行,varchar型別的字段會儲存為固定長度的char型別,浪費空間。⑤、不支援text、blob欄位,當有些查詢需要使用臨時表時(因為是存在於記憶體中,所以這種型別常應用於臨時表中),如果表中有text、blob欄位,那麼會轉換為基於磁碟的myisam表,嚴重降低效能。⑥、由於記憶體資源成本比較昂貴,一般不建議設定過大的記憶體表,如果記憶體表滿了,可通過清除資料或調整記憶體表引數來避免報錯。⑦、memory表在所有客戶端之間共享。
資料庫面試
1,第一正規化 原子性 2,第二正規化,消除非主屬性對主碼的部分依賴,每乙個非主屬性都完全依賴於主鍵 3,第三正規化,消除傳遞依賴 經實踐,id 8 三,如何獲取當前資料庫版本?原子性 atomicity 一致性 consistency 隔離性 isolation 永續性 durability 原子...
面試資料庫
一步步分析為什麼b 樹適合作為索引的結構 面試官問你b樹和b 樹,就把這篇文章丟給他 演算法和資料結構 十 平衡查詢樹之b樹 單純地看比較次數的話,二叉查詢樹和b樹差不多,甚至可能二叉查詢樹比較次數更少。在把磁碟裡的資料載入到記憶體中的時候,是以頁為單位來載入的,而我們也知道,節點與節點之間的資料是...
面試前複習SQL資料庫1
觸發器是乙個特殊的儲存過程,當對指定的表進行某種特定操作 如 insert,delete或update 時,觸發器產生作用。觸發器可以呼叫儲存過程。觸發器的限制 乙個表最多只能有三個觸發器,insert,update,delete 每個觸發器只能用於乙個表 不能對檢視 臨時表建立觸發器 trunca...