14.1.1 Benefits of Using InnoDB Tables 從InnoDB表中收益

14.1 Introduction to InnoDB   介紹InnoDB

InnoDB是一個通用的存儲引擎,它平衡了高可靠性和高性能。

在MySQL 5.6,InnoDB 是默認的MySQL storage engine. 

除非你配置一個不同的 default storage engine,  執行一個CREATE TABLE statement without an ENGINE= clause creates an InnoDB table.

InnoDB 包含所有的InnoDB插件的功能

注意:

mysql和INFORMATION_SCHEMA databases,mysql 內部一些實現仍舊使用MyISAM

你不能切換grant表來使用InnoDB

InnoDB的主要優勢

DML操作尊重ACID模型,事務具有提交,回滾 和crash-recovery功能來保護我們的數據

行級鎖和Oracle風格的一致性讀 增加了多用戶併發性和性能

InnoDB 表整理你的數據來優化查詢基於主鍵

每個InnoDB 表有一個主鍵索引稱爲  clustered index  組織數據以最小化I/O 用於主鍵查找


14.1.1 Benefits of Using InnoDB Tables  從InnoDB表中收益

你可能會發現InnoDB表有以下好處:

如果你的server crash 因爲硬件或者軟件問題,不管當時數據庫中發生了什麼,

你不需要進行任何操作在重啓數據庫後

InnoDB crash recovery 自動確定 任何改變在crash時間點前提交的

回滾任何改變 沒有提交的 

InnoDB 存儲引擎 維護自己的buffer pool ,當數據被訪問時 cache表和索引數據在主內存裏。

頻繁使用的數據是直接從內存裏處理。

這個緩存應用任何類型的信息加速處理 在專用數據庫上,多達80%的物理內存通常分配給緩衝池。

如果你將相關的數據拆分到不同的表,你可以設置外鍵來強制引用完整性

如果數據在磁盤或者內存中損壞,一個checksum 機制提醒你在你使用數據前

當你設計你的數據使用合適的主鍵列,  操作調用那些列是被自動優化的。

它是非常快的 引用主鍵列 在WHERE 條件 ORDER BY列  GROUP BY列 

Inert,updates,和delete 是通過一個自動機制優化的稱爲change buffering

InnoDB 不僅允許併發讀和寫訪問相同的表 

性能優化不僅限於 長時間運行查詢的大表

當相同的記錄是一遍又一遍的被訪問  一個功能稱爲自適應Hash Index 

將接管這些查詢 ,使其更快, 就好像他們是從hash表中出來的一樣 

你可以壓縮表和相關的索引

你可以創建和刪除索引 對性能影響最小

truncate一個 file-per-table tablespace 是非常快的 

可以釋放操作系統的磁盤空間來重用,相比釋放空間 使用syste tablespace 只能InnoDB能重用

對於BLOB和long text 字段 存儲佈局對於表數據是更加高效的,使用動態行格式

你可以通過查詢INFORMATION_SCHEMA 表 來監控內部存儲引擎的工作

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章