Mysql的數據庫引擎

Mysql的數據庫引擎

Mysql的邏輯分層

鏈接層-->服務層--->引擎層--->存儲層mysql

什麼是數據庫引擎

數據庫引擎是用於存儲、處理和保護數據的核心服務。linux

當你訪問數據庫時,無論是手工訪問,仍是程序訪問,都不是直接讀寫數據庫文件,而是經過數據庫引擎去訪問數據庫文件sql

注意:數據引擎是指表格中的引擎,數據庫

數據庫引擎innodb與myisam區別

是否支持事務

  • InnoDB支持事務 對於InnoDB每一條SQL語言都默認封裝成事務,自動提交,這樣會影響速度,因此最好把多條SQL語言放在begin transaction和commit之間,組成一個事務;windows

  • MyISAM不支持,spa

支持鎖的級別不一樣

  • InnoDB支持行鎖 注意:數據庫的主鍵和索引對鎖是有影響的。 在使用for update的時候,在明確使用主鍵或者索引的時候纔會是行鎖,不然就是表鎖。
  • MyISAM只支持表鎖

是否支持外鍵

  • InnoDB支持外鍵
  • MyISAM不支持。 對一個包含外鍵的InnoDB錶轉爲MYISAM會失敗;

存放索引的方式

  • InnoDB是彙集索引, 數據文件是和索引綁在一塊兒的,必需要有主鍵,經過主鍵索引效率很高。可是輔助索引須要兩次查詢,先查詢到主鍵,而後再經過主鍵查詢到數據。 所以,主鍵不該該過大,由於主鍵太大,其餘索引也都會很大。
  • MyISAM是非彙集索引,數據文件是分離的, 索引保存的是數據文件的指針。主鍵索引和輔助索引是獨立的。

查詢具體行數的差別

  • InnoDB不保存表的具體行數,執行select count(*) from table時須要全表掃描。
  • MyISAM用一個變量保存了整個表的行數,執行上述語句時只須要讀出該變量便可,速度很快;

是否支持全文索引

  • Innodb不支持全文索引
  • MyISAM支持全文索引,查詢效率上MyISAM要高於Innodb;

如何選擇存儲引擎

  • 是否要支持事務,若是要請選擇innodb,若是不須要能夠考慮MyISAM
  • 若是表中絕大多數都只是讀查詢,能夠考慮MyISAM,若是既有讀寫也挺頻繁,請使用InnoDB。
  • 系統崩潰後,MyISAM恢復起來更困難,可否接受;
  • MySQL5.5版本開始Innodb已經成爲Mysql的默認引擎(以前是MyISAM),說明其優點是有目共睹的,若是你不知道用什麼,那就用InnoDB,至少不會差。

存儲引擎管理

  • 查看數據庫支持的存儲引擎 show engines
  • 查看數據庫當前使用的存儲引擎,就是默認引擎是什麼。 show variables like '%storage_engine%' 也能夠在MySQL配置文件中查看。 windows - my.ini。 Linux - my.cnf
  • 查看數據庫表所用的存儲引擎 show create table table_name
  • 建立表指定存儲引擎 create table table_name (column_name column_type) engine = engine_name
  • 修改表的存儲引擎 alter table table_name engine=engine_name
  • 修改默認的存儲引擎 在MySQL配置文件中修改下述內容: default-storage-engine=INNODB MySQL配置文件: windows系統 - MySQL安裝目錄/my.ini (5.7版本my.ini文件在數據目錄中。 C:/programdata/MySQL Server 5.7/mysql/) linux系統 - /etc/my.cnf
相關文章
相關標籤/搜索