InnoDB简介

InnoDB是一个既稳定且高性能的通用存储引擎,在MySQL5.7下默认的存储引擎就是InnoDB。html

InnoDB的特性

InnoDB的关键特性以下:mysql

  • DML语句知足ACID的事务模型。
  • 行级锁和Oracle-style的一致性读,这个特性提升了用户并发度和性能。
  • InnoDB在磁盘上使用primary keys结构对你的数据进行组织。每一个使用InnoDB做为存储引擎的表都有一个称为clustered index的结构组织数据来最小化主键查询时的IO次数。

InnoDB存储引擎的一些特性:sql

Storage limits 64TB Transactions Yes Locking granularity Row
MVCC Yes Geospatial data type support Yes Geospatial indexing support Yes
B-tree indexes Yes T-tree indexes No Hash indexes No
Full-text search indexes Yes Clustered indexes Yes Data caches Yes
Index caches Yes Compressed data Yes Encrypted data Yes
Cluster database support No Replication support Yes Foreign key support Yes
Backup / point-in-time recovery Yes Query cache support Yes Update statistics for data dictionary Yes

 

InnoDB的好处

使用InnoDB的好处:数据库

  • crash recovery:在机器发生故障宕机后,只要是已提交的数据必定可以被恢复,不会丢失。
  • buffer pool:将常常访问的数据缓存在内存中,加快了处理速度。在专用于数据库软件的服务器上,80%的内存都是被分配给InnoDB的buffer pool使用。
  • 支持外键约束:当两个表之间存在主外键的约束关系时,删除主表的数据时,对应的外键所在的表的数据也会相应地被删除。
  • 数据校验:在磁盘上的数据发生损毁时,数据校验功能能够在访问这片数据以前就发出警告不能使用这片数据。
  • 对于主键字段上的order by,group by,join都会有优化,速度会很快。
  • change buffering:insert,update,delete操做使用这种change buffering机制优化,使得InnoDB不仅可以对同一个表实现并发读写,而且可使被修改的数据实现流式IO。
  • 性能优化对大表上的长时间查询也是有效的。当有的数据行被反复访问时,有个称为Adaptive Hash Index的特性可以优化这种状况,使访问更快,仿佛是在一个hash table中查找同样。
  • 可以压缩存储表和相关的索引。
  • 建索引和删索引的操做对系统性能及稳定性影响很是低。
  • 使用file-per-table存储模式的表被清空数据时,它的存储空间会还给文件系统,而不是交由InnoDB存储空间来从新利用。
  • 对于BLOB类型和text类型,它们在InnoDB中是做为dynamic的行格式存储,效率更高。
  • 能够查询INFORMATION_SCHEMA库中的相应表,得到存储引擎的相关性能细节。
  • 能够在一条SQL语句中混合查询使用不一样存储引擎的表,例如join两张分别使用了MyISAM和InnoDB的数据表。
  • InnoDB在处理大数据卷方面进行了优化,可以最大化CPU的效率和性能。
  • InnoDB可以处理大量的数据,即便操做系统的最大文件限制只有2GB。
相关文章
相关标签/搜索