MySQL中参数innodb_file_per_table决定将表存放于ibdata*的共享表空间还是独立的.ibd文件的独立表空间。

==================================
共享表空间方式:
所有数据和索引都存放在共享表空间中,默认存放在MySQL的data目录下。

优点:
可以为共享表空间配置多个数据文件,多个数据文件可以存放到不同磁盘上,将单表数据分布到多个磁盘上。

缺点:
如果删除的数据不再数据文件的尾部,则该部分数据所使用的空间只能被重用,而不能被回收。

==================================
独立表空间
为每个表创建独立的数据文件(frm后缀的表描述文件和ibd数据文件),如果表使用分区则为每个分区创建文件。

优点:
1、每个表有独立的表空间来存放其数据和索引。
2、可以快速实现表在不同数据库间的移动。
3、对表进行大量删除操作后,能针对该表进行空间回收。
4、对于TRUNCATE操作能更快完成
5、能在创建表时指定该表的绝对路径(CREATE TABLE ... DATA DIRECTORY = absolute_path_to_directory)
6、能对单表进行跨实例或跨服务器迁移或恢复(ALTER TABLE ... DISCARD TABLESPACE + ALTER TABLE ... IMPORT TABLESPACE )

缺点:
1、无法充分利用多块存储来提升IO性能。
2、使用更多的文件描述符
3、每个表有自己的未使用空间,如管理不当,容易造成空间浪费。
4、MySQL必须为每个打开的表保留文件句柄,当打开大量表时可能存在性能问题。

==================================
将表从共享表空间迁移到独立表空间:

SET GLOBAL innodb_file_per_table=1;
ALTER TABLE table_name ENGINE=InnoDB;

innodb_file_per_table 参数在MySQL 5.5版本之前修改完需要重启服务才生效,而在MySQL 5.6版本后在线动态修改生效。

==================================

查看共享或独立表空间脚本

==================================
## Innodb存储引擎表可以使用参数来设置表使用共享表空间还是独立表空间
show variables like 'innodb_file_per_table'; ==================================
##查看使用共享表空间1
SELECT TABLE_SCHEMA
,TABLE_NAME
,TABLE_TYPE
,N'共享表空间' AS TABLE_SPACE
,ENGINE
,VERSION
,TABLE_ROWS
,AVG_ROW_LENGTH
,CREATE_TIME
,UPDATE_TIME
FROM INFORMATION_SCHEMA.TABLES T
LEFT JOIN INFORMATION_SCHEMA.INNODB_SYS_TABLESPACES I ON CONCAT(T.TABLE_SCHEMA, '/',T.TABLE_NAME)=I.NAME
WHERE I.NAME IS NULL AND T.TABLE_SCHEMA='MyDB' AND T.ENGINE='InnoDB'; ==================================
##查看使用独立表空间2
SELECT TABLE_SCHEMA
,TABLE_NAME
,TABLE_TYPE
,N'独立表空间' AS TABLE_SPACE
,ENGINE
,VERSION
,TABLE_ROWS
,AVG_ROW_LENGTH
,CREATE_TIME
,UPDATE_TIME
FROM INFORMATION_SCHEMA.TABLES T
INNER JOIN INFORMATION_SCHEMA.INNODB_SYS_TABLESPACES I ON CONCAT(T.TABLE_SCHEMA, '/',T.TABLE_NAME)=I.NAME
WHERE T.TABLE_SCHEMA='MyDB' AND T.ENGINE='InnoDB'; ==================================
##查看使用独立表空间2
SELECT * FROM INFORMATION_SCHEMA.INNODB_SYS_TABLES
WHERE SPACE_TYPE='Single'; SELECT TABLE_SCHEMA
,TABLE_NAME
,TABLE_TYPE
,N'独立表空间' AS TABLE_SPACE
,ENGINE
,VERSION
,TABLE_ROWS
,AVG_ROW_LENGTH
,CREATE_TIME
,UPDATE_TIME
FROM INFORMATION_SCHEMA.TABLES T
INNER JOIN INFORMATION_SCHEMA.INNODB_SYS_TABLESPACES I ON CONCAT(T.TABLE_SCHEMA, '/',T.TABLE_NAME)=I.NAME
WHERE T.TABLE_SCHEMA='YourDatabase' AND T.ENGINE='InnoDB';

MySQL Innodb Engine --独立表空间参数(innodb_file_per_table)的更多相关文章

  1. MySQL5.7开启独立表空间参数innodb_file_per_table【原创】

    今天在线上某个系统发现MySQL数据库使用的是共享表空间,想修改为独立表空间,操作如下: #因为是主从结构,在从库修改测试,先关闭binlog SET SQL_LOG_BIN=; show varia ...

  2. InnoDB 引擎独立表空间 innodb_file_per_table

    使用过MySQL的同学,刚开始接触最多的莫过于MyISAM表引擎了,这种引擎的数据库会分别创建三个文件:表结构.表索引.表数据空间.我们可以将某个数据库目录直接迁移到其他数据库也可以正常工作.然而当你 ...

  3. InnoDB 引擎独立表空间

    InnoDB 引擎独立表空间   使用过MySQL的同学,刚开始接触最多的莫过于MyISAM表引擎了,这种引擎的数据库会分别创建三个文件:表结构.表索引.表数据空间.我们可以将某个数据库目录直接迁移到 ...

  4. mysql InnoDB引擎 共享表空间和独立表空间(转载)

    PS:innodb这种引擎,与MYISAM引擎的区别很大.特别是它的数据存储格式等.对于innodb的数据结构,首先要解决两个概念性的问题: 共享表空间以及独占表空间. 1.什么是共享表空间和独占表空 ...

  5. MySQL Server参数优化 - innodb_file_per_table(独立表空间)

    1 简介    Innodb存储引擎可将所有数据存放于ibdata*的共享表空间,也可将每张表存放于独立的.ibd文件的独立表空间.    共享表空间以及独立表空间都是针对数据的存储方式而言的.    ...

  6. Mysql InnoDB 共享表空间和独立表空间

    前言:学习mysql的时候总是习惯性的和oracle数据库进行比较.在学习mysql InnoDB的存储结构的时候也免不了跟oracle进行比较.Oracle的数据存储有表空间.段.区.块.数据文件: ...

  7. MySQL数据库系列(四)- InnoDB下的共享表空间和独立表空间详解

    一.概念 共享表空间: Innodb的所有数据保存在一个单独的表空间里面,而这个表空间可以由很多个文件组成,一个表可以跨多个文件存在,所以其大小限制不再是文件大小的限制,而是其自身的限制.从Innod ...

  8. 如何开启 MySQL InnoDB 共享表空间和独立表空间

    修改数据库的表空间管理方式 修改my.ini文件的innodb_file_per_table的参数值即可,但是修改不能影响之前已经使用过的共享表空间和独立表空间: innodb_file_per_ta ...

  9. MySQL 独立表空间恢复案例

    创建表的时候就会得到元数据.可以通过定义的方式对表的元数据进行生成 这个地方要注意的是 独立表空间当中   ibd & frm分别存储的是什么数据? 表空间:文件系统,为了更好的扩容数据库的存 ...

随机推荐

  1. VSTO杂项拾零(持续更新中……)

    环境:win 7+visual basic 2008     侧重:VSTO     界面:sheetbook工作簿 1.创建一个过程并调用(2017.6.3) Public Class Sheet1 ...

  2. VCL界面控件DevExpress VCL Controls发布v18.2.3|附下载

    DevExpress VCL Controls是 Devexpress公司旗下最老牌的用户界面套包.所包含的控件有:数据录入,图表,数据分析,导航,布局,网格,日程管理,样式,打印和工作流等,让您快速 ...

  3. Linux可重入函数和线程安全的区别与联系(转)

    *****可重入函数 函数被不同的控制流程调用,有可能在第一次调用还没返回时就再次进入该函数,这称为重入. 当程序运行到某一个函数的时候,可能因为硬件中断或者异常而使得在用户正在执行的代码暂时终端转而 ...

  4. MVC实现上传图片的方法

    Form提交时,须注意form需要添加属性enctype="multipart/form-data",否则Request.Files.Count=0,无法上传图片. cshtml代 ...

  5. <spark入门><Intellj环境配置><scala>rk入门><Intellj环境配置><scala>

    # 写在前面: 准备开始学spark,于是准备在IDE配一个spark的开发环境. 嫌这篇格式不好的看这里链接 用markdown写的,懒得调格式了,么么哒 # 相关配置: ## 关于系统 * mac ...

  6. 20165214 实验一 Java开发环境的熟悉

    20165214 实验一 Java开发环境的熟悉 一.实验报告封面 课程:Java程序设计 班级:1652班 姓名:朱文远 学号:20165214 指导教师:娄嘉鹏 实验日期:2018年4月2日 实验 ...

  7. L258 技术转让

    We will inform you of the weight, measurements, number of cases, cost of the drawings and other docu ...

  8. C# struct and enum

    struct Person { public int age; public string name; public string fname; public string class; } enum ...

  9. web 架构 /http协议,状态码,django中常用命令

    什么是web应用? web应用 架构 :B/S架构 | C/S架构 网站:BS架构其实就是应用程序: B是浏览器 S是sever(实现了wsgi协议,实现了socket的服务端) + applicat ...

  10. python 爬虫数据时间转换格式

    from datetime import datetimea = '2018/9/18 10/10'print(datetime.strptime(a,'%Y/%m/%d %H/%M'))>&g ...