概念:共享表空间独立表空间

【共享表空间】

  又称为system tablespace系统表空间,a small set of data files (the ibdata files) 。

一、共享表空间ibdata1

1、数据字典(data dictionary):记录数据库相关信息

2、doublewrite write buffer:解决部分写失败(页断裂)

3、insert buffer:内存insert buffer数据,周期写入共享表空间,防止意外宕机

4、回滚段(rollback segments)

5、undo空间:undo页

二、关于ibdata1的增长考虑

  影响共享表空间增长的对象:insert buffer、undo空间

1、什么时候undo暴涨:

  1、大事务为主,例如修改了40万行才提交

  2、长事务导致的undo持续增加

2、insert buffer空间很大

  1、索引建立过多

  2、很多索引不怎么使用

  3、索引和主键顺序严重不一致:主键的建立选择有问题

所以===

  ibdata1使用时要注意:在初始化ibdata1时,最好是设置大一些,避免由于高并发突然暴增,影响性能。

三、对ibdata的的设置最佳实践

注意:初始化设置,后期设置就没有意义。

1、空间大小

  innodb表是按表空间进行存放的,共享表空间ibdata1默认初始化大小是12M。

mysql> show variables like 'innodb_data_file_path';
+-----------------------+------------------------+
| Variable_name | Value |
+-----------------------+------------------------+
| innodb_data_file_path | ibdata1:12M:autoextend |
+-----------------------+------------------------+
1 row in set, 1 warning (0.47 sec)

  初始化:innodb_data_file_path=ibdata1:10G:ibdata2:10G:autoextend

2、undo分离

  undo最容易导致ibdata1暴涨,所以需要将undo分离出去,只能在初始化的时候做,初始化之后就没有办法实现undo分离。

处理:

  在初始化实例之前,只需要设置 innodb_undo_tablespaces 参数,默认是等于0即指单独存放的undo表空间个数为0,也就是undo为分离;建议将该参数设置大于等于3,即可将undo log设置到单独的undo表空间中。

【独立表空间】

一、innodb_file_per_table=1

  MySQL 5.6.6之前的版本,InnoDB 默认会将所有的数据库InnoDB引擎的表数据存储在一个共享空间中:ibdata1,这样就会让管理感觉很难受,增删数据库的时候,ibdata1文件不会自动收缩,单个数据库的备份也将成为问题。通常只能将数据使用mysqldump 导出,然后再导入解决这个问题。

  在之后的版本,为了优化上述问题,独立表空间innodb_file_per_table参数默认开启:

mysql> show variables like 'innodb_file_per_table';
+-----------------------+-------+
| Variable_name | Value |
+-----------------------+-------+
| innodb_file_per_table | ON |
+-----------------------+-------+
1 row in set, 1 warning (0.05 sec)

  可以修改InnoDB为独立表空间模式,每个数据库的每个表都会生成一个数据空间。

二、独立表空间的性能优越

1、优点:

  1、每个表都有自已独立的表空间。

  2、每个表的数据和索引都会存在自已的表空间中。

  3、可以实现单表在不同的数据库中移动。

  4、空间可以回收

  5、对于使用独立表空间的表,不管怎么删除,表空间的碎片不会太严重的影响性能,而且还有机会处理。

2、缺点:

  单表增加比共享空间方式更大。

3、共享表空间在Insert操作上少有优势,其它都没独立表空间表现好。当启用独立表空间时,合理调整:innodb_open_files(指定InnoDB一次可以保持打开的.ibd文件的最大数目)。

共享表空间VS独立表空间的更多相关文章

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

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

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

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

  3. 【转载】Innodb共享表空间VS独立表空间

    http://www.mysqlsupport.cn/innodb%E5%85%B1%E4%BA%AB%E8%A1%A8%E7%A9%BA%E9%97%B4vs%E7%8B%AC%E7%AB%8B%E ...

  4. mysql共享表空间和独立表空间

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

  5. mysql之 共享表空间与独立表空间、frm,MYD,MYI.idb,par文件说明

    一.共享表空间与独立表空间MySQL5.5默认是共享表空间 ,5.6中,默认是独立表空间. 共享表空间:ibdata1是InnoDB的共享表空间,默认配置是把全部表空间存放到ibdata1中,因此而造 ...

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

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

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

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

  8. mysql 共享空间转为独立表空间

    由于以前的mysql配置为共享表空间,服务器空间不足,清理日志表里的数据后,数据库并没缩小,照成空间浪费,现在修改为独立表空间 #独立表空间innodb_file_per_table=1 #停止事物日 ...

  9. MySQL 中的共享表空间与独立表空间

    对于 InnoDB 存储引擎来说,它可以将每张表存放于独立的表空间,即tablename.ibd 文件:也可以将数据存放于 ibdata 的共享表空间,一般命名是 ibdataX,后面的 X 是一个具 ...

随机推荐

  1. shopnc前台登陆不进去解决方法

    安装好shopnc后,注册新用户成功,且登陆后提示登陆成功,但是一两秒后自动跳转回登陆页面,需要重新登陆问题 PHP写session不是自动起的,需要修改后才行,所以 找到PHP的php.ini配置文 ...

  2. Ios8之后, 定位的delegate不能触发的问题

    if([CLLocationManager locationServicesEnabled]){ self.locationManage = [[[CLLocationManager alloc] i ...

  3. 从(0,0)到(m,n),每次走一步,只能向上或者向右走,有多少种路径走到(m,n)

    body, table{font-family: 微软雅黑; font-size: 10pt} table{border-collapse: collapse; border: solid gray; ...

  4. mybatis实战教程二:多对一关联查询(一对多)

    多对一关联查询 一.数据库关系.article表和user表示多对一的关系 CREATE TABLE `article` ( `id` ) NOT NULL AUTO_INCREMENT, `user ...

  5. python_20_socket

    什么是socket? -- 通过各种协议,发送和接收数据,实现网络通信 -- 在python3中,网络发送只能发二进制数据 OSI七层模型是什么? 应用 表示 会话 传输 网络             ...

  6. Linux批量ping脚本

    根据鸟哥的ping脚本,我重新修改了一下.用到的知识有:read.Linux按行读取.shell输出效果调整等 其中Linux按行读取文件比较重要,可参看文下链接 1 脚本功能: 批量ping当前路径 ...

  7. discuz数据库相关表

    discuz 数据表对照cdb_access               用户权限表      cdb_adminactions         管理动作表cdb_admingroups        ...

  8. linkin大话数据结构--泛型

    泛型(Generic) 什么是泛型? java5开始出现的一种对Java语言类型的一种拓展,以支持创建可以按类型进行参数化的类.可以把类型参数看作是使用参数类型时指定的类型占位符,就好比方法的形式参数 ...

  9. VisionPro学习笔记:用IEEE1394相机抓取图像

    1)找到采集卡: CogFrameGrabber1394DCAMs cameras = new CogFrameGrabber1394DCAMs(); 2)列举相连接的相机: ICogFrameGra ...

  10. HTML5 拖放(Drag 和 Drop)详解与实例

    简介 拖放是一种常见的特性,即抓取对象以后拖到另一个位置. 在 HTML5 中,拖放是标准的一部分,任何元素都能够拖放. 先点击一个小例子:在用户开始拖动 <p> 元素时执行 JavaSc ...