mysql中的innodb是什么

mysql中的innodb是什么?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

innodb简介

innodb,是mysql的数据库引擎之一,现为mysql的默认存储引擎,为mysql AB发布二进制的标准之一.InnoDB由Innobase Oy公司所开发,2006年五月时由甲骨文公司并购。与传统的ISAM与MyISAM相比,innodb的最大特色就是支持了酸兼容的事务(事务)功能,类似于PostgreSQL。

详细介绍

事务型数据库的首选引擎,支持酸事务,支持行级锁定.InnoDB是为处理巨大数据量时的最大性能设计.InnoDB存储引擎完全与mysql服务器整合,innodb存储引擎为在主内存中缓存数据和索引而维持它自己的缓冲池.InnoDB存储它的表,索引在一个表空间中,表空间可以包含数个文件(或原始磁盘分区)。这与MyISAM表不同,比如在MyISAM表中每个表被存在分离的文件中.InnoDB表可以是任何尺寸,即使在文件尺寸被限制为2 gb的操作系统上.InnoDB默认地被包含在mysql二进制分发中.Windows必需品安装程序使innodb成为Windows上mysql的默认表。

innodb存储它的表,索引在一个表空间中,表空间可以包含数个文件(或原始磁盘分区)。这与MyISAM表不同,比如在MyISAM表中每个表被存在分离的文件中.InnoDB表可以是任何尺寸,即使在文件尺寸被限制为2 gb的操作系统上。

性能技巧

1。如果Unixtop或Windows任务管理器(任务管理器)显示服务的CPU占用率小于70%,(显示CPU使用与您的工作负载小于70%,)你的系统瓶颈可能在磁盘读写上。或许你提交了大量的事务,或者是缓冲池(缓冲池)太小了。将缓冲池设大点会有所帮助,但一定要注意不能大于物理内存的80%。

2。在一个事务中包含几个修改。如果事务对数据库进行了修改,那么在这个事务提交时InnoDB必须刷新日志到磁盘上。因为硬盘的旋转速度通常至多为167转/秒,那么只要磁盘不欺骗操作系统,提交的事务数目限止也同样为167次/秒·用户。

3。如果掉失最近的几个事务无所谓的话,可以文在my . cnf中所做件中将参数innodb_flush_log_at_trx_commit设置为0. InnoDB无论如何总是尝试一秒刷新(冲洗)一次日志,尽管刷新并不能得到保证。

4。将日志文件(日志文件)设大一点,使日志文件的总和正好与缓冲池(缓冲池)一样大。当InnoDB用光日志文件的空间时,它不得不在一个时间点上将缓冲池内修改过的内容写到磁盘上。小的日志文件可能引起不必要的磁盘写操作。但是大的日志文件的缺点就是在数据恢复时将占用较长的时间。

5。同样日志缓冲区尽量设大点,比如说8 MB。

6。如果要存储变长的字符串或字段可能会包含大量的取消,请使用CHAR型字段代替VARCHAR。一个CHAR (n)字段总是使用n个字节来存储数据,即使这个字符串很短或是一个NULL值。较小的表更加适合缓冲池同时能够减少磁盘I/O。

7。(适合从3.23.41以上版本)在某些版本的Linux和unix系统中,使用Unixfsync或其它类似的方法将文件刷新到磁盘是异常地慢的.InnoDB默认的方法就是fsync。如果你对数据库系统的磁盘写性能不能感到满意,你可以尝试中在my . cnf中所做将innodb_flush_method设置为O_DSYNC,尽管O_DSYNC选项在多数的系统上看起来比较慢。

8。在向InnoDB导入数据时,请确认MySQL没有打开autocommit=1。否则每个插入语句都要将日志刷新到磁盘。在你的SQL导入文件的第一行加入

设置自动提交=0;并在最后一行加入提交;

如果使用,mysqldump选项,选择,你将会得到一个快速导入InnoDB表的转储(垃圾场)文件,甚至可以不再使用上面所提的设置自动提交=0;…提交;。

9。小心插入集全的大回滚(roolback):在插入时InnoDB使用插入缓冲来减少磁盘I/O,但在相应的回滚中却没有使用这样的机制。一个disk-bound滚可能会花费相应插入时间的30倍。如果发生一个失控的回滚,你可以查看章第6.1节的技巧来停止它。

10。同样也要小心一个大的disk-bound的操作。使用删除表或截断(从mysql - 4.0以上)来清空一个表,而不要使用删除从yourtable。

关于mysql中的innodb是什么问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注行业资讯频道了解更多相关知识。

mysql中的innodb是什么