1、數據庫引擎mysql
數據庫引擎是用於存儲、處理和保護數據的核心服務。利用數據庫引擎可控制訪問權限並快速處理事務,從而知足企業內大多數須要處理大量數據的應用程序的要求。 使用數據庫引擎建立用於聯機事務處理或聯機分析處理數據的關係數據庫。這包括建立用於存儲數據的表和用於查看、管理和保護數據安全的數據庫對象(如索引、視圖和存儲過程)。算法
2、數據庫引擎任務sql
在數據庫引擎文檔中,各主題的順序遵循用於實現使用數據庫引擎進行數據存儲的系統的任務的主要順序。數據庫
3、MySQL數據庫引擎類別安全
你能用的數據庫引擎取決於mysql在安裝的時候是如何被編譯的。要添加一個新的引擎,就必須從新編譯MYSQL。在缺省狀況下,MYSQL支持三個引擎:ISAM、MYISAM和HEAP。另外兩種類型INNODB和BERKLEY(BDB),也經常可使用。數據結構
4、mysql數據引擎更換方式併發
一、查看當前數據庫支持的引擎和默認的數據庫引擎:工具
show engines;
個人查詢結果以下:性能
二、更改數據庫引擎優化
2.一、更改方式1:修改配置文件my.ini
將my-small.ini另存爲my.ini,在[mysqld]後面添加default-storage-engine=InnoDB,重啓服務,數據庫默認的引擎修改成InnoDB
2.二、更改方式2:在建表的時候指定
建表時指定:
create table mytbl( id int primary key, name varchar(50) )type=MyISAM;
2.三、更改方式3:建表後更改
alter table mytbl2 type = InnoDB;
三、查看修改結果
方式1:
show table status from mytest;
方式2:
show create table table_name
5、MyIASM 和 Innodb引擎詳解
Innodb引擎提供了對數據庫ACID事務的支持,而且實現了SQL標準的四種隔離級別,關於數據庫事務與其隔離級別的內容請見數據庫事務與其隔離級別這篇文章。該引擎還提供了行級鎖和外鍵約束,它的設計目標是處理大容量數據庫系統,它自己其實就是基於MySQL後臺的完整數據庫系統,MySQL運行時Innodb會在內存中創建緩衝池,用於緩衝數據和索引。可是該引擎不支持FULLTEXT類型的索引,並且它沒有保存表的行數,當SELECT COUNT(*) FROM TABLE時須要掃描全表。當須要使用數據庫事務時,該引擎固然是首選。因爲鎖的粒度更小,寫操做不會鎖定全表,因此在併發較高時,使用Innodb引擎會提高效率。可是使用行級鎖也不是絕對的,若是在執行一個SQL語句時MySQL不能肯定要掃描的範圍,InnoDB表一樣會鎖全表。
名詞解析:
ACID
MyIASM是MySQL默認的引擎,可是它沒有提供對數據庫事務的支持,也不支持行級鎖和外鍵,所以當INSERT(插入)或UPDATE(更新)數據時即寫操做須要鎖定整個表,效率便會低一些。不過和Innodb不一樣,MyIASM中存儲了表的行數,因而SELECT COUNT(*) FROM TABLE時只須要直接讀取已經保存好的值而不須要進行全表掃描。若是表的讀操做遠遠多於寫操做且不須要數據庫事務的支持,那麼MyIASM也是很好的選擇。
大尺寸的數據集趨向於選擇InnoDB引擎,由於它支持事務處理和故障恢復。數據庫的大小決定了故障恢復的時間長短,InnoDB能夠利用事務日誌進行數據恢復,這會比較快。主鍵查詢在InnoDB引擎下也會至關快,不過須要注意的是若是主鍵太長也會致使性能問題,關於這個問題我會在下文中講到。大批的INSERT語句(在每一個INSERT語句中寫入多行,批量插入)在MyISAM下會快一些,可是UPDATE語句在InnoDB下則會更快一些,尤爲是在併發量大的時候。
索引(Index)是幫助MySQL高效獲取數據的數據結構。MyIASM和Innodb都使用了樹這種數據結構作爲索引。下面我接着講這兩種引擎使用的索引結構,講到這裏,首先應該談一下B-Tree和B+Tree。
MyISAM引擎的索引結構爲B+Tree,其中B+Tree的數據域存儲的內容爲實際數據的地址,也就是說它的索引和實際的數據是分開的,只不過是用索引指向了實際的數據,這種索引就是所謂的非彙集索引。以下圖所示:
這裏設表一共有三列,假設咱們以Col1爲主鍵,則上圖是一個MyISAM表的主索引(Primary key)示意。能夠看出MyISAM的索引文件僅僅保存數據記錄的地址。在MyISAM中,主索引和輔助索引(Secondary key)在結構上沒有任何區別,只是主索引要求key是惟一的,而輔助索引的key能夠重複。若是咱們在Col2上創建一個輔助索引,則此索引的結構以下圖所示:
一樣也是一顆B+Tree,data域保存數據記錄的地址。所以,MyISAM中索引檢索的算法爲首先按照B+Tree搜索算法搜索索引,若是指定的Key存在,則取出其data域的值,而後以data域的值爲地址,讀取相應數據記錄。
與MyISAM引擎的索引結構一樣也是B+Tree,可是Innodb的索引文件自己就是數據文件,即B+Tree的數據域存儲的就是實際的數據,這種索引就是彙集索引。這個索引的key就是數據表的主鍵,所以InnoDB表數據文件自己就是主索引。
而且和MyISAM不一樣,InnoDB的輔助索引數據域存儲的也是相應記錄主鍵的值而不是地址,因此當以輔助索引查找時,會先根據輔助索引找到主鍵,再根據主鍵索引找到實際的數據。因此Innodb不建議使用過長的主鍵,不然會使輔助索引變得過大。建議使用自增的字段做爲主鍵,這樣B+Tree的每個結點都會被順序的填滿,而不會頻繁的分裂調整,會有效的提高插入數據的效率。
致謝:感謝您的閱讀!