[DB] InnoDB 作为默认存储引擎(从mysql-5.5.5开始)
来源:互联网 发布:processon软件下载 编辑:程序博客网 时间:2024/06/18 18:06
InnoDB as Default Storage Engine
从mysql-5.5.5开始,InnoDB作为默认存储引擎,InnoDB作为支持事务的存储引擎,拥有相关的RDBMS特性:包括ACID事务支持,参考完整性(外健),灾难恢复能力等特性。
同时作为维护mysql内部结构的mysql和information_schema两个databases中的表,依然使用MyISAM存储引擎,而且不能被更改为InnoDB.
1.InnoDB table优点
硬件故障导致的server crash(比如停电),在下次重起database会自动恢复。
由InnoDB buffer pool 负责cache被访问的表和索引数据,直接在内存中进行处理,根据合理算法来保持热点块(hot)保留在内存中,极大地提高访问效率,减少I/O。
使用外健来实现参考完整性,实现数据的逻辑分割,同时还可以实现关联更新。
如果数据损坏,checksum机制能够在你使用时候提醒你这些受损的数据。
建议所有的表都有主健(频繁使用的field上或者auto_increment field上创建),这将极大提高基于where条件为主健(primary key)上的查询性能,包括order by , group by 等。
提供change buffering自动优化机制来优化诸如Insert,Update,Delete等操作;InnoDb能允许同一表上的读,写操作,还能cache 改变数据来减少I/O.
2.InnoDB table最佳处理方法
给每个InnoDB表指定主健
为提高组合查询性能,定义外健在join columns上,并且定义为相同数据类型,外健能实现因主表更新而关联更新子表,并且阻止子表的插入新数据,当这些新数据并不在主表存在时。
改变autocommit默认方式为不自动提交,减少提交次数过多带来的性能影响;可以由start transaction and commit来以"逻辑事务处理"等为单位来控制提交次数。
停止使用lock table语句,InnoDB能处理同一表上的读写并发sessions,并且不存在可靠性和性能损失。
Enable innodb_file_per_table开关,分开表空间存放数据,避免巨型系统表空间出现;同时为诸如压缩和fast truncate 等操作提供基础。
根据应用实际情况,进行表压缩,这不会影响该表的读写能力。
如果建表时指定engine= 子句存在问题,使用-sql_mode=no_engine_substitution来阻止表以其它存储引擎创建。
3.InnoDB相对与InnoDB Plugin时期的改变
可以压缩表和与之关联的索引
创建和删除索引比拥有以前更少的性能影响
Truncate表非常快,并且释放空间给操作系统使用;而针对系统表空间的truncate之后只能由innodb来使用。
存储BLOGs 和Long Text fields更有效率
增件新的针对storage engine内部工作的的系统表在information_schema 下
在performance_schema(新增的 db) 增加性能统计信息表
表有了更大的性能提升
4.性能提升
Crash recovery中,自动恢复到数据库一直状态,这过程快速而且值得信任。而且数据越大效果越明显。这相比过去来说由非常明显的提升。
大部分新的特性都是自动实现,并不需要额外的配置。详细的配置参考文档。
5.验证InnoDB在系统的状态
使用命令 SHOW VARIABLES LIKE 'have_innodb'; 如果是NO,表示没有支持InnoDB,如果是DISABLED,则看是否配置中有skip-innodb选项,需要去掉。如果支持如下
mysql> show variables like 'have_i%';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| have_innodb | YES |
+---------------+-------+
1 row in set (0.00 sec)
使用命令SHOW ENGINES;能看到不同存储引擎,如果DEFAULT在innodb,代表支持并且为默认存储引擎。
从mysql-5.5.5开始,InnoDB作为默认存储引擎,InnoDB作为支持事务的存储引擎,拥有相关的RDBMS特性:包括ACID事务支持,参考完整性(外健),灾难恢复能力等特性。
同时作为维护mysql内部结构的mysql和information_schema两个databases中的表,依然使用MyISAM存储引擎,而且不能被更改为InnoDB.
1.InnoDB table优点
硬件故障导致的server crash(比如停电),在下次重起database会自动恢复。
由InnoDB buffer pool 负责cache被访问的表和索引数据,直接在内存中进行处理,根据合理算法来保持热点块(hot)保留在内存中,极大地提高访问效率,减少I/O。
使用外健来实现参考完整性,实现数据的逻辑分割,同时还可以实现关联更新。
如果数据损坏,checksum机制能够在你使用时候提醒你这些受损的数据。
建议所有的表都有主健(频繁使用的field上或者auto_increment field上创建),这将极大提高基于where条件为主健(primary key)上的查询性能,包括order by , group by 等。
提供change buffering自动优化机制来优化诸如Insert,Update,Delete等操作;InnoDb能允许同一表上的读,写操作,还能cache 改变数据来减少I/O.
2.InnoDB table最佳处理方法
给每个InnoDB表指定主健
为提高组合查询性能,定义外健在join columns上,并且定义为相同数据类型,外健能实现因主表更新而关联更新子表,并且阻止子表的插入新数据,当这些新数据并不在主表存在时。
改变autocommit默认方式为不自动提交,减少提交次数过多带来的性能影响;可以由start transaction and commit来以"逻辑事务处理"等为单位来控制提交次数。
停止使用lock table语句,InnoDB能处理同一表上的读写并发sessions,并且不存在可靠性和性能损失。
Enable innodb_file_per_table开关,分开表空间存放数据,避免巨型系统表空间出现;同时为诸如压缩和fast truncate 等操作提供基础。
根据应用实际情况,进行表压缩,这不会影响该表的读写能力。
如果建表时指定engine= 子句存在问题,使用-sql_mode=no_engine_substitution来阻止表以其它存储引擎创建。
3.InnoDB相对与InnoDB Plugin时期的改变
可以压缩表和与之关联的索引
创建和删除索引比拥有以前更少的性能影响
Truncate表非常快,并且释放空间给操作系统使用;而针对系统表空间的truncate之后只能由innodb来使用。
存储BLOGs 和Long Text fields更有效率
增件新的针对storage engine内部工作的的系统表在information_schema 下
在performance_schema(新增的 db) 增加性能统计信息表
表有了更大的性能提升
4.性能提升
Crash recovery中,自动恢复到数据库一直状态,这过程快速而且值得信任。而且数据越大效果越明显。这相比过去来说由非常明显的提升。
大部分新的特性都是自动实现,并不需要额外的配置。详细的配置参考文档。
5.验证InnoDB在系统的状态
使用命令 SHOW VARIABLES LIKE 'have_innodb'; 如果是NO,表示没有支持InnoDB,如果是DISABLED,则看是否配置中有skip-innodb选项,需要去掉。如果支持如下
mysql> show variables like 'have_i%';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| have_innodb | YES |
+---------------+-------+
1 row in set (0.00 sec)
使用命令SHOW ENGINES;能看到不同存储引擎,如果DEFAULT在innodb,代表支持并且为默认存储引擎。
- [DB] InnoDB 作为默认存储引擎(从mysql-5.5.5开始)
- InnoDB 作为默认存储引擎(从mysql-5.5.5开始)
- [DB] MySQL技术内幕:InnoDB存储引擎读书笔记(上)
- [DB] MySQL技术内幕:InnoDB存储引擎读书笔记(中)
- [DB] MySQL技术内幕:InnoDB存储引擎读书笔记(下)
- MySQL InnoDB存储引擎
- MySQL存储引擎--InnoDB
- MySQL InnoDB存储引擎
- Linux修改MySql默认存储引擎为InnoDB
- Linux修改MySql默认存储引擎为InnoDB
- InnoDB存储引擎 --mysql的存储引擎
- mysql存储引擎之------InnoDB
- MySQL 存储引擎InnoDB/MYISAM
- MySQL InnoDB 存储引擎 基本参数
- mysql存储引擎之------InnoDB
- MySQL的存储引擎INNODB
- MySQL 之 InnoDB存储引擎
- [MySQL] 浅谈InnoDB存储引擎
- [DB] MySQL技术内幕:InnoDB存储引擎读书笔记(中)
- 用LauncherActivity开发启动Activity列表
- [DB] MySQL技术内幕:InnoDB存储引擎读书笔记(下)
- Zookeeper 3.3.3 LeaderElection算法总结
- map hash_map unordered_map 性能测试 统计
- [DB] InnoDB 作为默认存储引擎(从mysql-5.5.5开始)
- codeforces 116D Lawnmowe 贪心
- java中递归函数的应用2013年2月1日
- 简单介绍libevent快速上手
- mongo查询语法收藏
- 带有中文的字符串各个字符的获取c++程序
- [DB] Mysql learning notes!
- 比我年轻的人都在拼命跑,我怎能慢慢走?
- 关于BCP工具的使用,介绍三个方面的东西