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

1、什么是共享表空间和独占表空间

共享表空间以及独占表空间都是针对innodb表的数据存储而言的,ibdata1为innodb引擎的存储数据与索引的数据文件,ib_logfile0与ib_logfile1为innodb引擎使用的日志文件
共享表空间: mysql服务器中所有数据库的innodb表(数据,索引)全部放在一个文件中,默认这个共享表空间的文件路径在data目录下. 默认的文件名为:ibdata1 初始化为10M.
独占表空间: 每一个表都将会生成以独立的文件方式来进行存储,每一个表都有一个.frm表描述文件,还有一个.ibd文件. 其中这个文件包括了单独一个表的数据内容以及索引内容,默认情况下它的存储位置也是在表的位置之中.

2、两者之间的优缺点

  1. 共享表空间:

    优点:
    InnoDB在共享表空间模式下,是支持多文件的,用innodb_data_file_path选项可以配置:
    innodb_data_file_path = /disk1/ibdata1:2G;/disk2/ibdata2:2G:autoextend
    这样配置就把数据文件分散在了disk1和disk2两个路径下,第一个文件固定2G大小,第二个文件初始化2G,可以自增长.(数据文件大小不受表大小的限制,如一个表可以分布在不同的数据文件上).数据和文件放在一起方便管理.
    缺点:
    1.所有的数据和索引存放到一个文件中意味着将有一个很常大的文件,虽然可以把一个大文件分成多个小文件,但是服务器上的所有库中的innodb表及索引在表空间中混合存储,这样对于一个表做了大量删除操作后表空间中将会有大量的空隙,特别是对于统计分析,日值系统这类应用最不适合用共享表空间.
    2.共享表空间不会收缩! ibdata1 只会一个劲的增长.对于一台服务器上面n个库而且存在删除库的的情况就郁闷了!

  2. 独立表空间:

    在配置文件(my.cnf)中设置: innodb_file_per_table

    优点:
    1. 每个表都有自已独立的表空间.
    2. 每个表的数据和索引都会存在自已的表空间中.
    3. 可以实现单表在不同的数据库中移动.
    4. 空间可以回收(除drop table操作处,表空不能自已回收)
    a) Drop table操作自动回收表空间,如果对于统计分析或是日值表,删除大量数据后可以通过:alter table TableName engine=innodb;回缩不用的空间.
    b) 对于使innodb-plugin的Innodb使用turncate table也会使空间收缩.
    c) 对于使用独立表空间的表,不管怎么删除,表空间的碎片不会太严重的影响性能,而且还有机会处理.
    缺点:
    单表增加过大,如超过100个G.
    对于单表增长过大的问题,如果使用共享表空间可以把文件分开,但有同样有一个问题,如果访问的范围过大同样会访问多个文件,一样会比较慢.对于独立 表空间也有一个解决办法是:使用分区表,也可以把那个大的表空间移动到别的空间上然后做一个连接.其实从性能上出发,当一个表超过100个G有可能响应也 是较慢了,对于独立表空间还容易发现问题早做处理.

相比较之下,使用独占表空间的效率以及性能会更高一点,推荐使用独立表空间的原因:

  1. 从性能上对比共享表空间和独立表空间:

    共享表空间在Insert操作上少有优势.其它都没独立表空间表现好.这里也有一个TIPS当启用独立表空间时,请合理调整一下:innodb_open_files .

  2. 从Linux系统处理上出发:

    文件系统fsync一大片更新数据,对系统io冲击较大.若分隔成多个小数据fsync,能够减少对读的影响. 同时从mysql代码,发现mysql保证两次fsync之间至少有20ms的sleep,这样的话,若将一次fsync变成多次小数据操作,应该能够减 少慢查询的比例.所以对于大量更新操作的系统不太适合用共享表空间

转自(http://wangying.sinaapp.com/archives/1488)

mysql InnoDB引擎 共享表空间和独立表空间(转载)的更多相关文章

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

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

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

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

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

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

  4. 【转载】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 ...

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

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

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

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

  7. mysql共享表空间转独立表空间

    使用innodb_export_import.py脚本: https://github.com/thecpaneladmin/innodb-tools 安装MySQL-python模块: shell ...

  8. 共享表空间VS独立表空间

    基础概念:共享表空间 VS 独立表空间 [共享表空间] 又称为system tablespace系统表空间,a small set of data files (the ibdata files) . ...

  9. 巧用MySQL InnoDB引擎锁机制解决死锁问题(转)

    该文会通过一个实际例子中的死锁问题的解决过程,进一步解释innodb的行锁机制 最近,在项目开发过程中,碰到了数据库死锁问题,在解决问题的过程中,笔者对MySQL InnoDB引擎锁机制的理解逐步加深 ...

随机推荐

  1. C++ OTL MySQL(Windows/Linux) V8.1

    Windows每秒钟10000条以上插入:Linux每秒插入300条以上.Q269752451 输出截图: Linux输出: Windows输出: 有须要的联系 QQ 3508551694 water ...

  2. HTML打开摄像头,进行拍照上传

    html代码 <%@ page language="java" contentType="text/html; charset=utf-8" pageEn ...

  3. javascript系列-Class1.JavaScript基础

    欢迎加入前端交流群来py:749539640 转载请标明出处!   JavaScript概述        一个页面分成三个部分,结构,样式,行为.               HTML代表了页面的结 ...

  4. Binary Indexed Tree

    我借鉴了这个视频中的讲解的填坑法,我认为非常易于理解.有FQ能力和基本英语听力能力请直接去看视频,并不需要继续阅读. naive 算法 考虑一个这样的场景: 给定一个int数组, 我们想知道它的连续子 ...

  5. Idea怎么添加类的注释模板

    Idea添加类的注释模板: File-->Settings-->Live Templates-->点击+号按钮添加模板 添加自定义分组名,添加自定义模板名,如图所示add,添加完成后 ...

  6. 你不知道的JavaScript演示代码Github地址

    你不知道的JavaScript博文相关代码托管至Github,每次写完博客会把代码提交上去. 代码地址:https://github.com/rongbo-j/you-dont-know-js 点击D ...

  7. Android 开发环境安装配置手册

    本文指导,如何一步步搭建Android开发平台. 1  下载软件 n JDK 1.5+   到  http://java.sun.com/javase/downloads/index.jsp 下载 n ...

  8. Caffe 激励层(Activation)分析

    Caffe_Activation 一般来说,激励层的输入输出尺寸一致,为非线性函数,完成非线性映射,从而能够拟合更为复杂的函数表达式激励层都派生于NeuronLayer: class XXXlayer ...

  9. HDU 2852 KiKi's K-Number【 树状数组 二分 】

    题意:给出m个操作,0:是增加一个数,add(x,1)1:是删除一个指定的数,这个是看sum(x) - sum(x-1)是否为0,为0的话则不存在,不为0的话,则add(x,-1)2:是查询比x大的数 ...

  10. python内置的一些模块

    logging模块: 默认情况下,logging将日志打印到屏幕,日志级别为WARNING:日志级别大小关系为:CRITICAL > ERROR > WARNING > INFO & ...