mysql InnoDB引擎 共享表空间和独立表空间(转载)
PS:innodb这种引擎,与MYISAM引擎的区别很大.特别是它的数据存储格式等.对于innodb的数据结构,首先要解决两个概念性的问题: 共享表空间以及独占表空间.
1、什么是共享表空间和独占表空间
共享表空间以及独占表空间都是针对innodb表的数据存储而言的,ibdata1为innodb引擎的存储数据与索引的数据文件,ib_logfile0与ib_logfile1为innodb引擎使用的日志文件
共享表空间: mysql服务器中所有数据库的innodb表(数据,索引)全部放在一个文件中,默认这个共享表空间的文件路径在data目录下. 默认的文件名为:ibdata1 初始化为10M.
独占表空间: 每一个表都将会生成以独立的文件方式来进行存储,每一个表都有一个.frm表描述文件,还有一个.ibd文件. 其中这个文件包括了单独一个表的数据内容以及索引内容,默认情况下它的存储位置也是在表的位置之中.
2、两者之间的优缺点
共享表空间:
优点:
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个库而且存在删除库的的情况就郁闷了!独立表空间:
在配置文件(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有可能响应也 是较慢了,对于独立表空间还容易发现问题早做处理.
相比较之下,使用独占表空间的效率以及性能会更高一点,推荐使用独立表空间的原因:
从性能上对比共享表空间和独立表空间:
共享表空间在Insert操作上少有优势.其它都没独立表空间表现好.这里也有一个TIPS当启用独立表空间时,请合理调整一下:innodb_open_files .
从Linux系统处理上出发:
文件系统fsync一大片更新数据,对系统io冲击较大.若分隔成多个小数据fsync,能够减少对读的影响. 同时从mysql代码,发现mysql保证两次fsync之间至少有20ms的sleep,这样的话,若将一次fsync变成多次小数据操作,应该能够减 少慢查询的比例.所以对于大量更新操作的系统不太适合用共享表空间
转自(http://wangying.sinaapp.com/archives/1488)
mysql InnoDB引擎 共享表空间和独立表空间(转载)的更多相关文章
- Mysql InnoDB 共享表空间和独立表空间
前言:学习mysql的时候总是习惯性的和oracle数据库进行比较.在学习mysql InnoDB的存储结构的时候也免不了跟oracle进行比较.Oracle的数据存储有表空间.段.区.块.数据文件: ...
- MySQL数据库系列(四)- InnoDB下的共享表空间和独立表空间详解
一.概念 共享表空间: Innodb的所有数据保存在一个单独的表空间里面,而这个表空间可以由很多个文件组成,一个表可以跨多个文件存在,所以其大小限制不再是文件大小的限制,而是其自身的限制.从Innod ...
- 如何开启 MySQL InnoDB 共享表空间和独立表空间
修改数据库的表空间管理方式 修改my.ini文件的innodb_file_per_table的参数值即可,但是修改不能影响之前已经使用过的共享表空间和独立表空间: innodb_file_per_ta ...
- 【转载】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 ...
- mysql共享表空间和独立表空间
innodb这种引擎,与MYISAM引擎的区别很大.特别是它的数据存储格式等. 对于innodb的数据结构,首先要解决两个概念性的问题: 共享表空间以及独占表空间. 什么是共享表空间和独占表空间 共享 ...
- mysql之 共享表空间与独立表空间、frm,MYD,MYI.idb,par文件说明
一.共享表空间与独立表空间MySQL5.5默认是共享表空间 ,5.6中,默认是独立表空间. 共享表空间:ibdata1是InnoDB的共享表空间,默认配置是把全部表空间存放到ibdata1中,因此而造 ...
- mysql共享表空间转独立表空间
使用innodb_export_import.py脚本: https://github.com/thecpaneladmin/innodb-tools 安装MySQL-python模块: shell ...
- 共享表空间VS独立表空间
基础概念:共享表空间 VS 独立表空间 [共享表空间] 又称为system tablespace系统表空间,a small set of data files (the ibdata files) . ...
- 巧用MySQL InnoDB引擎锁机制解决死锁问题(转)
该文会通过一个实际例子中的死锁问题的解决过程,进一步解释innodb的行锁机制 最近,在项目开发过程中,碰到了数据库死锁问题,在解决问题的过程中,笔者对MySQL InnoDB引擎锁机制的理解逐步加深 ...
随机推荐
- 树莓派学习笔记—— 源码方式安装opencv
0.前言 本文介绍怎样在树莓派中通过编译源码的方式安装opencv,并通过一个简单的样例说明怎样使用opencv. 很多其它内容请參考--[树莓派学习笔记--索引博文] 1.下载若干依 ...
- [Angular] Read Custom HTTP Headers Sent by the Server in Angular
By default the response body doesn’t contain all the data that might be needed in your app. Your ser ...
- Codeforces 10A-Power Consumption Calculation(模拟)
A. Power Consumption Calculation time limit per test 1 second memory limit per test 256 megabytes in ...
- MySQL之----在java编程加强知识点
在数据中,建表处理是非经常见且非常有用的方法. 表和表之间的关系有 1:1 1:N N:N 三种方式. 1对1的方式 <span style="font-size:1 ...
- 【HDOJ 5407】 CRB and Candies (大犇推导
pid=5407">[HDOJ 5407] CRB and Candies 赛后看这题题解仅仅有满眼的迷茫------ g(N) = LCM(C(N,0),C(N,1),...,C(N ...
- node17
一.复习 cookie是在res中设置,req中读取的.第一次的访问没有cookie. cookie的存储大小有限,kv对.对用户可见,用户可以禁用.清除Cookie.可以被篡改. cookie用来制 ...
- JAVA配置Tomcat
1.下载tomcat,我jdk是1.8的,网上查了一下,说要安装tomcat8及以上的tomcat 尝试点击,弹出, 2.配置环境 3.安装通过cmd安装 4.点击开启服务 5.输入localhost ...
- spring boot integrated mybatis three ways!--转
https://github.com/spring-projects/spring-boot/issues/5400 一.使用mybatis-spring-boot-starter1.添加依赖 org ...
- 重温前端基础之-js排序算法
javascript数组常用的方法: push():返回值,数组新的长度 pop():返回值,被删除的数组末尾元素 shift():返回值,被删除的数组首部元素 unshift():返回值,数组新的长 ...
- http扩展请求头中的x-Forwarded-For
X-Forwarded-For格式: X-Forwarded-For: client-ip, proxy1-ip, proxy2-ip 客户端请求服务器的过程中没经过一个代理层(代理中使用了xff)那 ...