Mysql数据库的使用总结之Innodb简介(一)

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介:
最近在对开发的软件的服务器部分制作安装包,但服务器部分需要有mysql数据库的支持。因此,采用免安装版的mysql策略:将mysql数据库需要的文件在安装程序中进行设置和打包即可。但也遇到了很多问题,下面分三节进行总结。
     由于我们采用的是mysql中的innodb存储引擎,故在此只对innodb作一些介绍,详细内容可以参见mysql的官网说明http://dev.mysql.com/

   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 打印了什么。


本文转自jazka 51CTO博客,原文链接:http://blog.51cto.com/jazka/328955,如需转载请自行联系原作者
相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
3天前
|
存储 缓存 关系型数据库
【MySQL进阶篇】存储引擎(MySQL体系结构、InnoDB、MyISAM、Memory区别及特点、存储引擎的选择方案)
MySQL的存储引擎是其核心组件之一,负责数据的存储、索引和检索。不同的存储引擎具有不同的功能和特性,可以根据业务需求 选择合适的引擎。本文详细介绍了MySQL体系结构、InnoDB、MyISAM、Memory区别及特点、存储引擎的选择方案。
【MySQL进阶篇】存储引擎(MySQL体系结构、InnoDB、MyISAM、Memory区别及特点、存储引擎的选择方案)
|
8天前
|
存储 Oracle 关系型数据库
索引在手,查询无忧:MySQL索引简介
MySQL 是一款广泛使用的关系型数据库管理系统,在2024年5月的DB-Engines排名中得分1084,仅次于Oracle。本文介绍MySQL索引的工作原理和类型,包括B+Tree、Hash、Full-text索引,以及主键、唯一、普通索引等,帮助开发者优化查询性能。索引类似于图书馆的分类系统,能快速定位数据行,极大提高检索效率。
34 8
|
8天前
|
存储 关系型数据库 MySQL
MySQL存储引擎详述:InnoDB为何胜出?
MySQL 是最流行的开源关系型数据库之一,其存储引擎设计是其高效灵活的关键。InnoDB 作为默认存储引擎,支持事务、行级锁和外键约束,适用于高并发读写和数据完整性要求高的场景;而 MyISAM 不支持事务,适合读密集且对事务要求不高的应用。根据不同需求选择合适的存储引擎至关重要,官方推荐大多数场景使用 InnoDB。
49 7
|
17天前
|
存储 关系型数据库 MySQL
Mysql索引:深入理解InnoDb聚集索引与MyisAm非聚集索引
通过本文的介绍,希望您能深入理解InnoDB聚集索引与MyISAM非聚集索引的概念、结构和应用场景,从而在实际工作中灵活运用这些知识,优化数据库性能。
83 7
|
1月前
|
存储 Oracle 关系型数据库
【赵渝强老师】MySQL InnoDB的数据文件与重做日志文件
本文介绍了MySQL InnoDB存储引擎中的数据文件和重做日志文件。数据文件包括`.ibd`和`ibdata`文件,用于存放InnoDB数据和索引。重做日志文件(redo log)确保数据的可靠性和事务的持久性,其大小和路径可由相关参数配置。文章还提供了视频讲解和示例代码。
152 11
【赵渝强老师】MySQL InnoDB的数据文件与重做日志文件
|
23天前
|
存储 关系型数据库 MySQL
MySQL引擎InnoDB和MyISAM的区别?
InnoDB是MySQL默认的事务型存储引擎,支持事务、行级锁、MVCC、在线热备份等特性,主索引为聚簇索引,适用于高并发、高可靠性的场景。MyISAM设计简单,支持压缩表、空间索引,但不支持事务和行级锁,适合读多写少、不要求事务的场景。
52 9
|
1月前
|
存储 Oracle 关系型数据库
【赵渝强老师】MySQL InnoDB的表空间
InnoDB是MySQL默认的存储引擎,主要由存储结构、内存结构和线程结构组成。其存储结构分为逻辑和物理两部分,逻辑存储结构包括表空间、段、区和页。表空间是InnoDB逻辑结构的最高层,所有数据都存放在其中。默认情况下,InnoDB有一个共享表空间ibdata1,用于存放撤销信息、系统事务信息等。启用参数`innodb_file_per_table`后,每张表的数据可以单独存放在一个表空间内,但撤销信息等仍存放在共享表空间中。
|
1月前
|
存储 Oracle 关系型数据库
【赵渝强老师】MySQL InnoDB的段、区和页
MySQL的InnoDB存储引擎逻辑存储结构与Oracle相似,包括表空间、段、区和页。表空间由段和页组成,段包括数据段、索引段等。区是1MB的连续空间,页是16KB的最小物理存储单位。InnoDB是面向行的存储引擎,每个页最多可存放7992行记录。
|
1月前
|
存储 Oracle 关系型数据库
【赵渝强老师】MySQL的InnoDB存储引擎
InnoDB是MySQL的默认存储引擎,广泛应用于互联网公司。它支持事务、行级锁、外键和高效处理大量数据。InnoDB的主要特性包括解决不可重复读和幻读问题、高并发度、B+树索引等。其存储结构分为逻辑和物理两部分,内存结构类似Oracle的SGA和PGA,线程结构包括主线程、I/O线程和其他辅助线程。
【赵渝强老师】MySQL的InnoDB存储引擎
|
6月前
|
存储 关系型数据库 MySQL
MySQL数据库进阶第六篇(InnoDB引擎架构,事务原理,MVCC)
MySQL数据库进阶第六篇(InnoDB引擎架构,事务原理,MVCC)