mysql常見的兩種儲存引擎:myisam和innodb
訪問資料庫時,通過資料庫引擎訪問資料庫檔案。以關聯式資料庫為例,傳送sql語句給資料庫引擎,資料庫引擎解釋sql語句,提取出需要的資料進行返回,資料庫引擎就是sql語句的直譯器。
資料庫引擎是用於儲存、處理和保護資料的核心服務。利用資料庫引擎可以控制訪問許可權並快速處理事務,從而滿足企業內大多數需要處理大量資料的應用程式的要求,這包括建立用於儲存資料的表和用於檢視、管理和保護資料安全的資料庫物件(如索引、檢視和儲存過程)
mysql支援三個引擎:isam、myisam、heap
另外兩種型別innodb、berkley(bdb)也可以使用
是乙個定義明確且經理時間考驗的資料**管理方法,在設計時就考慮到資料庫被查詢的次數遠大於更新的次數。因此,isam執行讀取操作的速度很快,而且不占用大量的記憶體和儲存資源
isam的不足在於,不支援事務處理、不支援外來建、不能夠容錯、不支援索引
myisam是mysql的isam拓展格式。除了isam裡沒有的索引(isam允許沒有任何索引和主鍵的表存在,索引都是儲存行的位址)和字段管理的大量功能,myisam還使用一種**鎖定的機制(表級鎖),來優化多個併發的讀寫操作,其代價是需要經常執行optimize table命令,用來恢復被更新機制所浪費的空間,否則隨便也會隨之增加,最終影響資料訪問效能。
myisam強調了快速讀取操作。
heap儲存引擎將資料儲存在記憶體中,由於沒有磁碟i/o的等待,所以該一起寧的表具有極高的插入、更新和查詢效率。這種儲存引擎預設使用雜湊索引,速度比b±tree型索引快。
但是由於儲存在記憶體中,所以儲存的資料具有不穩定性,如果mysql程序發生異常、重啟或計算機關機,都會造成這些資料小時,所以這種儲存引擎中的表宣告週期很短,一般只用一次。
innodb引擎是mysql靈活性的技術產品,mysql+api。
innodb比isam和myisam引擎慢
innodb為mysql表提供了acid事務支援,系統崩潰修復能力和多版本併發控制的行級鎖,該引擎提供了行級鎖和外來鍵約束所以innodb是事務性資料庫首選的引擎。
採用b+數實現,索引與儲存資料儲存在同一檔案中
儲存結構:
儲存空間:
索引與資料
索引(index)是幫助mysql高效獲取資料的資料結構。myisam和innodb都是用了樹這種資料結構作為索引
-innodb的資料檔案本身按主鍵聚集,所以innodb要求表必須有主鍵(myisam可以沒有),如果沒有顯示指定,mysql系統會自動選擇乙個可以作為唯一標識資料記錄的列作為主鍵,如果不存在這種列,mysql自動為innodb表生成乙個隱含字段作為主鍵,這個字段長度為6個位元組,型別為長整型
innodb的輔助索引data域儲存的也是相應記錄主鍵的值而不是位址,所以當輔助索引查詢時,會先根據輔助索引找到主鍵,再根據主鍵索引找到實際資料。所以innodb的所有輔助索引都引用主鍵作為data域
鎖可移植性、備份及恢復
mysql資料引擎更換方式
檢視修改結果
show create table table_name;
show table status from table_name;
mysql資料庫引擎 mysql資料庫引擎
資料庫引擎是用於儲存 處理和保護資料的核心服務。利用資料庫引擎可控制訪問許可權並快速處理事務,從而滿足企業內大多數需要處理大量資料的應用程式的要求。使用資料庫引擎建立用於聯機事務處理或聯機分析處理資料的關聯式資料庫。這包括建立用於儲存資料的表和用於檢視 管理和保護資料安全的資料庫物件 如索引 檢視和...
MySQL資料庫引擎
如果你是個賽車手並且按一下按鈕就能夠立即更換引擎而不需要把車開到車庫裡去換,那會是怎麼感覺呢?mysql資料庫為開發人員所做的就好像是按按鈕換引擎 它讓你選擇資料庫引擎,並給你一條簡單的途徑來切換它。mysql的自帶引擎肯定是夠用了,但是在有些情況下,其他的引擎可能要比手頭所用更適合完成任務。如果願...
mysql資料庫引擎
mysql資料庫引擎 資料庫引擎是在我們編譯安裝mysql的時候確定下來的。也就是說如果我們想換乙個資料庫引擎,也就要重新編譯mysql。我們也可以使用mysql和api來編譯我們自己的資料庫引擎,當然這個是建立在你對資料庫底層非常了解的地步。所以我們想要新增乙個新的資料庫引擎的時候,那麼就編譯吧。...