`
hejiajunsh
  • 浏览: 407247 次
  • 性别: Icon_minigender_1
  • 来自: 天津
社区版块
存档分类
最新评论

MySQL INNODB表空间两种配置阐述

阅读更多

在mysql中,也出现了类似oracle中的表空间概念。

      开启了Innodb的innodb_file_per_table这个参数之后【innodb_file_per_table = 1】,也就是启用InnoDB的独立表空间模式,便于管理。此时,在新建的innodb表的数据库目录下会多出来一个.ibd这个文件。mysql会把这个innodb表的数据存放在这个文件中。并且每个innodb表此时都会对应这么一个ibd文件。

mysql手册说明很清楚:

      If innodb_file_per_table is disabled (the default), InnoDB creates tables in the system tablespace. Ifinnodb_file_per_table is enabled, InnoDB creates each new table using its own .ibd file for storing data and indexes, rather than in the system tablespace. 

      很搞不懂为什么innodb_file_per_table默认是不开启的。      

      开启之后有什么好处呢?

      可以实现单表在不同的数据库之间移动。

      InnoDB 默认会将所有的数据库InnoDB引擎的表数据存储在一个共享空间中:ibdata1,这样就感觉很不方便,增删数据库的时候,ibdata1文件不会自动收缩,ibdata1文件增长到几十G都有可能,单个数据库的备份也将成为问题。通常只能将数据使用mysqldump 导出,然后再导入解决这个问题。共享表空间在Insert操作上有优势。其它都没独立表空间表现好。当启用独立表空间时,请合理设置innodb_open_files 的值。

-------------------------------------------------------------------------------

需要说明的是:

1、设置了独立表空间之后,如果改成了共享表空间,那么,此时如果执行表的插入操作,数据会存放在哪里呢?

对于之前已经存在了的表,还是存放在独立表空间。对于新建的表,就会存放在共享表空间了。

2、如果一开始用了共享表空间,后来改了innodb_file_per_table变量的值,改成独立表空间了,那么数据如何存储?

对于已经存在了的innodb引擎的表来说,数据还是存放在共享表空间的,而此时如果创建了新的表,那么就会在数据库的目录中多出一个.ibd的文件用于存储这个新表的数据。

总结上面的1、2,就是:原来的还是按照原来的方式存储。新的表按照新的规则来存储。

3、mysql在第二点上处理的不太妥当,新旧数据为什么要分开存放,为什么不能自动把共享表空间里的数据导入到独立表空间中?

 

分享到:
评论

相关推荐

    MySQL大佬姜承尧49完整课程笔记,进阶涨薪必看,内含MySQL配置文件

    - InnoDB与MyISAM:对比分析两种主要的存储引擎,理解事务处理、行级锁定、全文搜索等功能。 - 存储引擎选择:根据业务需求,合理选择存储引擎,平衡读写速度和数据安全性。 4. **备份与恢复** - 备份策略:学习...

    linux下mysql安装配置.doc

    以下是对Linux下MySQL安装配置的详细步骤及关键知识点的阐述: 1. **下载MySQL安装文件** - MySQL的安装通常涉及两个主要的RPM文件:MySQL-server(服务器端)和MySQL-client(客户端)。在本例中,使用的版本是...

    mysql5.1Manual.zip_MYSQL_MySQL 5.1_mySql chm_mysql 中文

    10. **触发器和存储过程**:这两种数据库对象可以自动化某些任务,提高代码复用和效率。手册会介绍如何编写和使用它们。 除了以上内容,手册可能还涵盖了MySQL的安装、配置、故障排除、网络设置等通用话题。无论你...

    Oracle goldengate 数据迁移 从 mysql到mysql 实战.docx

    - 可以选择两种抽取模式:实时抽取(无泵模式)和 DataPump 模式。 - **实时抽取**:直接从 MySQL 的事务日志中抽取数据变更。 - 配置 `syext` 抽取进程,指定源数据库连接信息、日志文件位置及远程主机信息。 -...

    MySQL中文参考手册CHM版

    在存储引擎章节,手册会介绍InnoDB和MyISAM这两种最常用的存储引擎,它们各自的特点和适用场景。InnoDB支持事务处理和行级锁定,适合处理大量并发读写操作;而MyISAM则以读取速度快、占用空间小著称,但不支持事务。...

    Mysql5.7官方文档

    文档会详细解释这两种特性。 6. **触发器和存储过程**:MySQL 5.7支持触发器和存储过程,它们是实现业务逻辑和数据库自动化操作的重要工具。文档会介绍如何创建、调用和管理这些对象。 7. **性能优化**:MySQL 5.7...

    MySQL5中文参考手册chm

    - **InnoDB与MyISAM**:两种最常用的存储引擎,InnoDB支持事务处理和行级锁定,MyISAM则适合读取密集型应用。 - **其他引擎**:如Memory、Archive、CSV等,各有特色,适用于不同的应用场景。 6. **备份与恢复**:...

    mysql 5.1中文文档

    - InnoDB和MyISAM比较:对比两种最常见的存储引擎,分析各自的优缺点。 - 其他存储引擎:介绍Memory、NDB Cluster等,讨论其特定用途和应用场景。 7. **事务处理** - 事务概念:解释ACID属性,阐述事务的开始、...

    MySQL单表ibd文件恢复方法详解

    本文将详细阐述两种不同情况下,如何通过`.ibd`文件恢复MySQL单表数据。 首先,我们需要了解的是,`.ibd`文件是InnoDB存储引擎中每个表的物理文件,它包含了表的数据和索引。`.ibdata`文件则存储了InnoDB表空间的...

    MySQL 5.5中文参考手册

    手册会阐述如何定义、修改和使用这两种高级数据库对象。 6. **安全性**:MySQL 5.5提供用户权限管理,包括GRANT和REVOKE命令,以及如何设置加密连接和访问控制。此外,还会介绍SSL配置以增强数据传输的安全性。 7....

    MySQL5.5参考手册(中文)

    手册阐述了如何创建和管理这两种数据库对象。 七、分区与复制 MySQL 5.5支持表分区,有助于大规模数据的管理和查询。复制技术允许数据库跨多个服务器进行数据同步,实现高可用性和负载均衡。手册详细描述了这两种...

    高性能MYSQL第三版中文

    2. **存储引擎**:重点讲解了InnoDB和MyISAM这两种主流存储引擎的工作原理,包括事务处理、行锁定机制、索引类型以及表空间管理,同时对比分析了它们的优缺点和适用场景。 3. **查询优化**:涵盖了SQL语句的编写...

    MySQL_5.1_zh.chm & MySQL_5.5_en.chm文档

    5.5版本的文档会详细阐述主从复制的配置和维护。 3. **分区**:在5.5版本中,分区表功能更加成熟,可以显著提高大数据量查询的效率。文档会解析各种分区类型,如范围分区、哈希分区和列表分区。 4. **内存管理**:...

    MySQL 5.0 中文参考文档资料(HTML格式)

    在存储引擎部分,文档会阐述InnoDB和MyISAM这两种最常见的存储引擎的特点和用法。InnoDB提供行级锁定和事务支持,适合需要事务处理的应用;而MyISAM则以其快速读取和空间效率著称,适合读多写少的场景。此外,还有...

    mysql中文帮助文档

    文档会介绍这两种高可用性解决方案的配置和管理。 10. **性能监控与优化**:MySQL提供了一系列工具,如SHOW STATUS和SHOW VARIABLES,用于监控数据库性能。文档会讲解如何分析性能瓶颈并进行优化。 11. **InnoDB...

    高性能MySQL(第3版).pdf

    7. **扩展性设计**:讨论了垂直分割和水平分割两种数据库扩展方式,以及如何通过读写分离、分片等技术处理大数据量的问题。 8. **安全性**:介绍了MySQL的安全特性,包括用户权限管理、加密、审计日志等,帮助读者...

    MySQL开发手册

    4. **存储引擎**:介绍InnoDB和MyISAM两种主要存储引擎的特性,如事务处理、行级锁定、外键支持等,以及如何根据需求选择合适的存储引擎。 5. **触发器与存储过程**:讨论如何使用触发器来实现自动化的业务逻辑,...

Global site tag (gtag.js) - Google Analytics