InnoDB有什么用


小编给大家分享一下InnoDB有什么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!InnoDB是一个通用的高性能、高可靠性的存储引擎。从MySQL 5.5开始,是MySQL默认的存储引擎1. DML操作遵循ACID原则,事务通过commit, rollback, and crash-recovery等功能来保护用户数据2. 支持行级锁,类似oracle方式一致性读来提高多用户并发和性能3. InnoDB表按照主键的顺序组织存放在磁盘上(索引组织表),优化基于主键的查询4. 支持外键约束5. 可以与其他存储引擎的表混合使用。如join查询等6. 当处理大量数据时,innoDB能高效利用CPUa.支持地理空间索引 从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表可以处理大量数据,即使在文件大小限制为2GBOSMySQL 5.7 innodb是默认的存储引擎。Innodbmysql中是事务安全的存储引擎,通过commit, rollback, and crash-recovery功能来保护用户数据。Innodb 行级锁(没有锁升级的问题),并且类似oracle的一致性读来提高多用户并发性。Innodb表是索引组织表,以主键的顺序来组织存放数据从而减少IO。支持外键约束。1. Crash recovery 2. Buffer pool缓冲访问的数据和索引,热点数据直接在内存中处理,此缓存使用于多种类型的信息,从而加速了处理。3. 外键约束4. 如果磁盘或者内存中的数据损坏了,在使用它之前可以使用checksum机制来修复数据5. 索引组织表的特性,通过主键where ,order by,group byjoin查询是快速的6. Change buffering特性,自动优化DML操作。Innodb表不仅允许并行的读写,它还缓存修改的数据来减少IO7. 自适应哈希8. 压缩表和与其关联的索引9. 在线删除和创建索引10. 可以快速的Truncate一个file_per_table,并且释放的空间,操作系统可重用。而不是file_per_table关闭状态下,是存放在系统表空间,释放的空间,仅仅innodb可以重用11. 对于BLOBlong text的存储效率更高,在动态行模式下12. 可以通过INFORMATION_SCHEMA监控内部工作13. 可以通过Performance 下面的表来查看性能相关信息一些使用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选项来防止需要的存储引擎被禁用或未编译,自动替换存储引擎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有什么用”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注开发云行业资讯频道!

相关推荐: MySQL:2020 端午节随笔(索引下探和唯一索引特殊执行计划)

###一、索引数据下探 http://blog.itpub.net/7728585/viewspace-2660796/ /* Get the number of rows in the range. This is done by calling recor…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 06/26 16:07
下一篇 06/26 16:07

相关推荐