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 表 来监控内部存储引擎的工作

 

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