MySQL 預設儲存引擎: InnoDB 介紹

标签: InnoDB MyISAM MySQL | 发表时间:2012-11-10 17:00 | 作者:appleboy
出处:http://blog.wu-boy.com

MySQL 是一套眾所皆知的 Database System,今天來簡介 InnoDB 儲存引擎,在 MySQL 5.5.5 之前預設的儲存引擎是 MyISAM,但是為什麼在 5.5 之後官方要將預設儲存引擎換成 InnoDB 呢?大家都知道 InnoDB 用來管理交易非常方便,因為 InnoDB 透過 row lock,相對於 MyISAM 透過 table lock 來的有效率,也避免大量寫入的時候,造成無法讀取資料,這就是 row lock 的優勢,當然用 MyISAM 最主要的原因還有 Full-text search indexes 功能,但是別擔心 MySQL 5.6.4 之後(含此版本) InnoDB 開始支援 Full-text search 功能,另外在使用 MyISAM 時候,如果資料突然出問題,還必須使用 MySQL Binary Log 來恢復資料,如果用 InnoDB 這就沒關係了。大家還在用 MyISAM 嘛?開始升級伺服器,一起體驗 InnoDB 的功能,如果已經上線很久的網站,作者不建議轉換,因為可能會遇到很多雷。

目前不用太擔心硬體的架構這方面了,隨便都是 64G 記憶體,四核心主機,大家所在意的還是 MySQL 是否 reliability 跟錯誤恢復,所以 MySQL 在 5.5 以後的版本大膽將 InnoDB 儲存引擎,建立資料表不用再加上 ENGINE=MyISAM,但是大家可以發現 MySQL 安裝好後,內建 mysqlinformation_schema 資料庫還是用 MyISAM 儲存引擎,請大家不要亂動這兩個資料庫。底下來看看 InnoDB 的優勢。

InnoDB 優勢

已經使用過 MyISAM 的朋友們,作者相信你可以來嘗試看看 InnoDB,使用的同時會發現很多 InnoDB 優點。

1. 如果伺服器因為硬體或軟體疏失,無論發生任何問題,請重新啟動伺服器,啟動之後並不需要做任何事情,InnoDB 會自動修復 crash 部份,將已經 commit 的資料全部寫回資料表。假如您處理任何資料,但是尚未 commit,系統會自動恢復,所以只要將伺服器重新啟動,就可以恢復到 crash 之前的狀態。

2. InnoDB 將 Table 及 index 資料 cache 在 buffer pool,所以可以快速存取任何資料,因為這些資料都是直接從 Memory 讀取,快取可以存放任和型態的資料,提升處理效能,假如您有實體主機,請設定 60% ~ 80% 實體記憶體給 InnoDB buffer pool。

3. 設計資料庫時,請務必在每個資料表設定適當的 Primary key,當您在執行任何 SQL 語法時,只要牽扯到 Primary key,InnoDB 會自動優化效能,如果將 Primary key 用在 WHERE,ORDER BY,GROUP 等條件子句或 join 操作,讀取速度會是非常快。

4. InnoDB 可以讓您同時讀取或寫入同一個資料表,它將需要改變的資料存在 streamline disk I/O。所以大家不用擔心 Lock Table 的問題了。

5. InnoDB 提供錯誤偵測 (checksum mechanism),假如有資料已經損壞在 Disk 或 Memory,使用此資料之前,系統將會提醒你。

6. InnoDB 具備處理極大量資料的效能優勢,假如在同一資料表存取同樣的資料,內部透過 Adaptive Hash Index 機制提升讀取速度。

以上是作者覺得 InnoDB 改善的地方,大家可以透過 SHOW ENGINES 指令知道伺服器是否支援 InnoDB

Related View

相关 [mysql 引擎 innodb] 推荐:

Mysql Innodb 引擎优化

- 彦强 - 阿辉的空间
作/译者:吴炳锡,来源:http://imysql.cn/ & http://www.mysqlsupport.cn 转载请注明作/译者和出处,并且不能用于商业用途,违者必究. InnoDB给MySQL提供了具有提交,回滚和崩溃恢复能力的事务安全(ACID兼容)存储引擎. InnoDB锁定在行级并且也在SELECT语句提供 一个Oracle风格一致的非锁定读.

MySQL 5.1安装InnoDB引擎

- - Gsion's Blog
安装 innodb 引擎(mysql5.1默认不安装). 可以在编译安装时,在configrue的时候,加上--with-plugins=innobase这个参数. 如果之前已经安装过,也可补装innodb引擎. 首先确定,在mysql的'plugin_dir'下有ha_innodb_plugin.so和ha_innodb.so两个文件.

MySQL Innodb 存储引擎参数优化

- jinbiaozhao - 服务器运维与网站架构|Linux运维|互联网研究
InnoDB给MySQL提供了具有提交,回滚和崩溃恢复能力的事务安全(ACID兼容)存储引擎. InnoDB锁定在行级并且也在SELECT语句提供一个Oracle风格一致的非锁定读. 这些特色增加了多用户部署和性能. 没有在InnoDB中扩大锁定的需要,因为在InnoDB中行级锁定适合非常小的空间.

[MySQL] 浅谈InnoDB存储引擎

- - CSDN博客数据库推荐文章
InnoDB是事务安全的存储引擎,设计上借鉴了很多Oracle的架构思想,一般而言,在OLTP应用中,InnoDB应该作为核心应用表的首先存储引擎. InnoDB是由第三方的Innobase Oy公司开发,现已被Oracle收购,创始人是Heikki Tuuri,芬兰赫尔辛基人,和著名的Linux创始人Linus是校友.

MySQL 預設儲存引擎: InnoDB 介紹

- - 小惡魔 - 電腦技術 - 工作筆記 - AppleBOY
MySQL 是一套眾所皆知的 Database System,今天來簡介 InnoDB 儲存引擎,在 MySQL 5.5.5 之前預設的儲存引擎是 MyISAM,但是為什麼在 5.5 之後官方要將預設儲存引擎換成 InnoDB 呢. 開始升級伺服器,一起體驗 InnoDB 的功能,如果已經上線很久的網站,作者不建議轉換,因為可能會遇到很多雷.

MySQL存储引擎--MyISAM与InnoDB区别

- - CSDN博客互联网推荐文章
MyISAM 和InnoDB 讲解   InnoDB和MyISAM是许多人在使用MySQL时最常用的两个表类型,这两个表类型各有优劣,视具体应用而定. 基本的差别为:MyISAM类型不支持事务处理等高级处理,而InnoDB类型支持. MyISAM类型的表强调的是性能,其执行数度比InnoDB类型更快,但是不提供事务支持,而InnoDB提供事务支持以及外部键等高级数据库功能.

Mysql InnoDB锁

- - 数据库 - ITeye博客
抄自:http://www.cnblogs.com/qq78292959/archive/2013/01/30/2882745.html. Mysql常用存储引擎的锁机制. MyISAM和MEMORY采用表级锁(table-level locking). BDB采用页面锁(page-leve locking)或表级锁,默认为页面锁.

MySQL存储引擎MyISAM与InnoDB的主要区别对比

- timo - 服务器运维与网站架构|Linux运维|互联网研究
本文整理了Mysql 两大常用的存储引擎MyISAM,InnoDB的六大常见区别,来源于Mysql手册以及互联网的资料. InnoDB与Myisam的六大区别. MyISAM InnoDB 构 成上的区别: 每个MyISAM在磁盘上存储成三个文件. 第一个 文件的名字以表的名字开始,扩展名指出文件类型.

MySQL InnoDB存储引擎锁机制实验

- - CSDN博客数据库推荐文章
之前的文章提到MySQL的InnoDB存储引擎使用的是行级锁,并且默认的事务隔离级别为可重复读,而不同于Oracle默认的事务隔离级别提交读. 那么MySQL的InnoDB存储引擎的锁机制的具体表现是怎样的呢. 首先建立一张测试使用的表:.         然后再往这张表里插入一些数据,以备使用,最终表数据如下:.

mysql技术内幕-innodb存储引擎读书笔记(上)

- - MySQLOPS 数据库与运维自动化技术分享
第一章、mysql体系结构和存储引擎. 1.1、数据库和实例的区别. 数据库:物理操作系统或其他形式文件类型的集合. 在mysql下数据库文件可以是frm,myd,myi,ibd结尾的文件. 数据库实例:由数据库后台进程/线程以及一个共享内存区组成. mysql数据库是但进程多线程的程序. 1.2、mysql的体系结构.