千家信息网

InnoDB有什么用

发表于:2025-11-12 作者:千家信息网编辑
千家信息网最后更新 2025年11月12日,小编给大家分享一下InnoDB有什么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!InnoDB是一个通用的高性能、高可靠
千家信息网最后更新 2025年11月12日InnoDB有什么用

小编给大家分享一下InnoDB有什么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

InnoDB是一个通用的高性能、高可靠性的存储引擎。从MySQL 5.5开始,是MySQL默认的存储引擎

InnoDB表关键特性

1. DML操作遵循ACID原则,事务通过commit, rollback, and crash-recovery等功能来保护用户数据

2. 支持行级锁,类似oracle方式一致性读来提高多用户并发和性能

3. InnoDB表按照主键的顺序组织存放在磁盘上(索引组织表),优化基于主键的查询

4. 支持外键约束

5. 可以与其他存储引擎的表混合使用。如join查询等

6. 当处理大量数据时,innoDB能高效利用CPU

InnoDB引擎特点

a.支持地理空间索引 从MySQL 5.7.5开始

b.Innodb不支持hash索引,但是innodb内部使用hash索引实现自适应哈希功能

c.支持全文索引 从MySQL 5.6.4开始

d.Barracuda文件格式下支持压缩表

e、fg.server层实现 数据加密、主从复制、备份和point-in-time恢复

InnoDB在内存中使用buffer pool来缓存数据和索引。

默认,innodb_file_per_table是开启的,每个表和与其相关的索引存储在单独的一个文件中;

当innodb_file_per_table关闭时,所有innodb表和索引都存储在单个系统表空间(可能包含几个文件或者分区)。

MySQL 5.7.6开始,innodb表可以存储在普通表空间,多个表共享一个表空间存储数据

Innodb表可以处理大量数据,即使在文件大小限制为2GBOS

Innodb作为默认存储引擎

MySQL 5.7 innodb是默认的存储引擎。Innodbmysql中是事务安全的存储引擎,通过commit, rollback, and crash-recovery功能来保护用户数据。Innodb 行级锁(没有锁升级的问题),并且类似oracle的一致性读来提高多用户并发性。Innodb表是索引组织表,以主键的顺序来组织存放数据从而减少IO。支持外键约束。

Innodb表的好处

1. Crash recovery

2. Buffer pool缓冲访问的数据和索引,热点数据直接在内存中处理,此缓存使用于多种类型的信息,从而加速了处理。

3. 外键约束

4. 如果磁盘或者内存中的数据损坏了,在使用它之前可以使用checksum机制来修复数据

5. 索引组织表的特性,通过主键where ,order by,group byjoin查询是快速的

6. Change buffering特性,自动优化DML操作。Innodb表不仅允许并行的读写,它还缓存修改的数据来减少IO

7. 自适应哈希

8. 压缩表和与其关联的索引

9. 在线删除和创建索引

10. 可以快速的Truncate一个file_per_table,并且释放的空间,操作系统可重用。而不是file_per_table关闭状态下,是存放在系统表空间,释放的空间,仅仅innodb可以重用

11. 对于BLOBlong text的存储效率更高,在动态行模式下

12. 可以通过INFORMATION_SCHEMA监控内部工作

13. 可以通过Performance 下面的表来查看性能相关信息

Innodb表最佳实践

一些使用innodb表的建议:

1. 为每张表定义一个主键:使用最常查询的列(或多列),若没有明显的主键,使用一个自增长的值作为主键

2. 关闭autocommit:对性能的上限最大每秒提交上百次(由存储设备的IO性能限制)

3. 使用START TRANSACTION 和COMMIT来控制事务提交的粒度

4. 不要使用LOCK TABLES语句,innodb在不牺牲可靠性和高性能的同时能处理多个会话对同一个表的读和写。为了得到一些行独占访问,可以使用SELECT ... FOR UPDATE来锁定期望的行

5. 开启innodb_file_per_table选项将各个表的数据和索引存放在单独的文件中,而不是放在一个巨大的system表空间。并且便于一些功能的使用,如:表压缩、快速truncate等。

innodb_file_per_table 从MySQL 5.6.6开始默认是开启的

6. 评估你的数据和访问模式是否适用于innodb表压缩特性(在create table语句指定(ROW_FORMAT=COMPRESSED)),表压缩可以提高IO性能

7. 运行时指定--sql_mode=NO_ENGINE_SUBSTITUTION选项来防止需要的存储引擎被禁用或未编译,自动替换存储引擎

关闭InnoDB引擎

Oracle推荐innoDB为首选,从MySQL 5.5开始,其为默认存储引擎。

MySQL 5.7.5开始,--skip-innodb (--innodb=OFF, --disable-innodb)选项被弃用,如果使用此选项,将会得到一个警告。在未来的MySQL版本中此选项将被删除。

而在5.7.5之前,如果你不想使用innodb表,则通过如下步骤来关闭:

1. 启动的时候指定--innodb=OFF 或者--skip-innodb来关闭innodb引擎

2. 因为innodb是默认引擎,所以要想关闭其,必须使用--default-storage-engine 和--default-tmp-storage-engine来设置默认的其他引擎来为永久和临时表引擎

3. 为了防止当查询innodb相关information_schema表时数据库crash,需要禁用其相关表。在my.cnf位置文件中[mysqld]部分指定如下内容:

loose-innodb-trx=0
loose-innodb-locks=0
loose-innodb-lock-waits=0
loose-innodb-cmp=0
loose-innodb-cmp-per-index=0
loose-innodb-cmp-per-index-reset=0
loose-innodb-cmp-reset=0
loose-innodb-cmpmem=0
loose-innodb-cmpmem-reset=0
loose-innodb-buffer-page=0
loose-innodb-buffer-page-lru=0
loose-innodb-buffer-pool-stats=0
loose-innodb-metrics=0
loose-innodb-ft-default-stopword=0
loose-innodb-ft-inserted=0
loose-innodb-ft-deleted=0
loose-innodb-ft-being-deleted=0
loose-innodb-ft-config=0
loose-innodb-ft-index-cache=0
loose-innodb-ft-index-table=0
loose-innodb-sys-tables=0
loose-innodb-sys-tablestats=0
loose-innodb-sys-indexes=0
loose-innodb-sys-columns=0
loose-innodb-sys-fields=0
loose-innodb-sys-foreign=0
loose-innodb-sys-foreign-cols=0

以上是"InnoDB有什么用"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!

数据 引擎 存储 索引 空间 支持 文件 性能 处理 查询 功能 特性 用户 事务 内存 内容 篇文章 系统 缓存 一致 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 数据库安装总结报告 高新区提供网络技术服务电话 科技互联网独角兽企业 全志科技属于互联网公司吗 软vpn服务器 兰州软件开发解决方案服务 天灾惊变服务器能炸吗 网络安全中的协议解释 河南创元网络技术股份 设计一个学校车辆进出数据库 视频监控网络安全问题 海思的通用软件开发 重庆网络技术单招培训计划 浪潮财务系统数据库删除单据 十四五期间网络安全招标 网络安全竞赛试题及答案解析 4206串口服务器卓岚 360路由改打印机服务器 三国志战略版合区后服务器叫什么 静安区个人数据库服务商报价行情 数据库中最小加密的单位是什么 网络技术在安防和监控的应用 分析部门网络安全形势 关于网络安全方面的小说 花千骨找不到玩过的服务器 丹徒宜和网络安全 公安教育笔记网络安全 客户端远程控制服务器对吗 重庆诊疗软件开发 杭州格家网络技术有限公司
0