Mysql数据库的使用之Innodb简介(一)
转载于:https://blog.csdn.net/weixin_34128534/article/details/90003017?utm_medium=distribute.pc_relevant.none-task-blog-2defaultbaidujs_title~default-0.control&spm=1001.2101.3001.4242
InnoDB概述
InnoDB给 MySQL提供了具有提交,回滚和崩溃恢复能力的事务安全( ACID兼容)存储引擎。 InnoDB锁定在行级并且也在 SELECT语句提供一个 Oracle风格一致的非锁定读。这些特色增加了多用户部署和性能。没有在 InnoDB中扩大锁定的需要,因为在 InnoDB中行级锁定适合非常小的空间。 InnoDB也支持 FOREIGN KEY强制。在 SQL查询中,你可以自由地将 InnoDB类型的表与其它 MySQL的表的类型混合起来,甚至在同一个查询中也可以混合。
InnoDB是为处理巨大数据量时的最大性能设计。它的 CPU效率可能是任何其它基于磁盘的关系数据库引擎所不能匹敌的。
InnoDB存储引擎被完全与 MySQL服务器整合, InnoDB存储引擎为在主内存中缓存数据和索引而维持它自己的缓冲池。 InnoDB存储它的表&索引在一个表空间中,表空间可以包含数个文件(或原始磁盘分区)。这与 MyISAM表不同,比如在 MyISAM表中每个表被存在分离的文件中。 InnoDB 表可以是任何尺寸,即使在文件尺寸被限制为 2GB的操作系统上。
InnoDB默认地被包含在 MySQL二进制分发中。 Windows Essentials installer使 InnoDB成为 Windows上 MySQL的默认表。
InnoDB被用来在众多需要高性能的大型数据库站点上产生。著名的 Internet新闻站点 Slashdot.org运行在 InnoDB上。 Mytrix, Inc.在 InnoDB上存储超过 1TB的数据,还有一些其它站点在 InnoDB上处理平均每秒 800次插入 /更新的负荷。
InnoDB配置
InnoDB存储引擎是默认地被允许的。如果你不想用 InnoDB表,你可以添加 skip-innodb选项到 MySQL选项文件。
被 InnoDB存储引擎管理的两个重要的基于磁盘的资源是 InnoDB表空间数据文件和它的日志文件。
如果你指定无 InnoDB配置选项, MySQL将在 MySQL数据目录下创建一个名为 ibdata1的 10MB大小的自动扩展数据文件,以及两个名为 ib_logfile0和 ib_logfile1的 5MB大小的日志文件。
注释: InnoDB给 MySQL提供具有提交,回滚和崩溃恢复能力的事务安全( ACID兼容)存储引擎。如果拟运行的操作系统和硬件不能如广告说的那样运行, InnoDB就不能实现如上能力。许多操作系统或磁盘子系统可能为改善性能而延迟或记录写操作。在一些操作系统上,就是系统调用( fsync()) 也要等着,直到所有未写入已被刷新文件的数据在被刷新到稳定内存之前可以确实返回了。因为这个,操作系统崩溃或掉电可能损坏当前提交的数据,或者在最坏的 情况,因为写操作已被记录了,甚至破坏了数据库。如果数据完整性对你很重要,你应该在用任何程序于生产中之前做一些“ pull-the-plug”测试。 Mac OS X 10.3 及以后版本, InnoDB使用一个特别的 fcntl()文件刷新方法。在 Linux下,建议禁止回写缓存。
在 ATAPI硬盘上,一个类似 hdparm -W0 /dev/hda命令可能起作用。小心某些驱动器或者磁盘控制器可能不能禁止回写缓存。
注释:要获得好的性能,你应该如下面例子所讨论那样,明确提供 InnoDB参数。自然地,你应该编辑设置来适合你的硬件和要求。
要建立 InnoDB表空间文件,在 my.cnf选项文件里的 [mysqld]节里使用 innodb_data_file_path选项。在 Windows上,你可以替代地使用 my.ini文件。 innodb_data_file_path的值应该为一个或多个数据文件规格的列表。如果你命名一个以上的数据文件,用 分号 (‘ ;’ )分隔它们:
innodb_data_file_path=datafile_spec1[;datafile_spec2]...例如:把明确创建的具有相同特征的表空间作为默认设置的设置操作如下:
[mysqld]innodb_data_file_path=ibdata1:10M:autoextend这个设置配置一个可扩展大小的尺寸为 10MB的单独文件,名为 ibdata1。没有给出文件的位置,所以默认的是在 MySQL的数据目录内。
尺寸大小用 M或者 G后缀来指定说明单位是 MB或者 GB。
一个表空间,它在数据目录里包含一个名为 ibdata1的固定尺寸 50MB的数据文件和一个名为 ibdata2大小为 50MB的自动扩展文件,其可以像这样被配置:
[mysqld]innodb_data_file_path=ibdata1:50M;ibdata2:50M:autoextend一个指定数据文件的完全后缀包括文件名,它的尺寸和数个可选属性:
file_name:file_size[:autoextend[:max:max_file_size]]autoextend属性和后面跟着的属性只可被用来对 innodb_data_file_path行里最后一个数据文件。
如果你对最后的数据文件指定 autoextend选项。如果数据文件耗尽了表空间中的自由空间, InnoDB就扩展数据文件。扩展的幅度是每次 8MB。
如果磁盘已满,你可能想要把其它数据添加到另一个硬盘上。重新配置一个已存在表空间的指令见 15.2.7节,“添加和删除 InnoDB数据和日志文件”。
InnoDB并不感知最大文件尺寸,所以要小心文件系统,在那上面最大的文件尺寸是 2GB。要为一个自动扩展数据文件指定最大尺寸,请使用 max属性。下列配置允许 ibdata1涨到极限的 500MB:
[mysqld]innodb_data_file_path=ibdata1:10M:autoextend:max:500MInnoDB默认地在 MySQL数据目录创建表空间文件。要明确指定一个位置,请使用 innodb_data_home_dir选项。比如,要使用两个名为 ibdata1和 ibdata2的文件,但是要把他们创建到 /ibdata,像如下一样配置 InnoDB:
[mysqld]
innodb_data_home_dir=/ibdata
innodb_data_file_path=ibdata1:50M;ibdata2:50M:autoextend
注释: InnoDB不创建目录,所以在启动服务器之前请确认 /ibdata目录的确存在。这对你配置的任何日志文件目录来说也是真实的。使用 Unix或 DOS的 mkdir命令来创建任何必需的目录。
通过把 innodb_data_home_dir的值原原本本地部署到数据文件名,并在需要的地方添加斜杠或反斜杠, InnoDB为每个数据文件形成目录路径。如果 innodb_data_home_dir选项根本没有在 my.cnf中提到,默认值是“ dot”目录 ./,这意思是 MySQL数据目录。
如果你指定innodb_data_home_dir为一个空字符串,你可以为列在innodb_data_file_path值里的数据文件指定绝对路径。下面的例子等价于前面那个例子:
[mysqld]
innodb_data_home_dir=
innodb_data_file_path=/ibdata/ibdata1:50M;/ibdata/ibdata2:50M:autoextend
注意,在一些文件系统上,数据文件必需小于 2GB。数据文件的合并尺寸必须至少 10MB。
当你第一次创建一个 InnoDB表空间,最好从命令行来启动 MySQL服务器。 InnoDB然后把数据库创建的信息打印到屏幕,所以你可以看见正在发生什么。比如,在 Windows上,如果 mysqld-max位于 C:\mysql\bin,你可以如下来启动它: C:> C:\mysql\bin\mysqld-max --console如果你不发送服务器输出到屏幕上,请检查服务器的错误日志来看在启动过程中 InnoDB打印了什么。

浙公网安备 33010602011771号