博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
mysql之 共享表空间与独立表空间、frm,MYD,MYI.idb,par文件说明
阅读量:2493 次
发布时间:2019-05-11

本文共 1357 字,大约阅读时间需要 4 分钟。

一、共享表空间与独立表空间

MySQL5.5默认是共享表空间 ,5.6中,默认是独立表空间。


共享表空间:

ibdata1是InnoDB的共享表空间,默认配置是把全部表空间存放到ibdata1中,因此而造成ibdata1文件无限增长需释放之说。

优点:

可以放表空间分成多个文件存放到各个磁盘上(表空间文件大小不受表大小的限制,如一个表可以分布在不同步的文件上)。数据和文件放在一起方便管理。

缺点:

1. 大量删除操作后表空间中将会有大量的空隙,特别是对于统计分析,日值系统这类应用最不适合用共享表空间。

2. 共享表空间管理会出现表空间分配后不能回缩的问题,当出现临时建索引或是创建一个临时表的操作表空间扩大后,就是删除相关的表也没办法回缩 那部分空间了。这种情况处理只能是是建一个新的Slave从主库上Dump出来,然后在Dump到从库中,动作较大。

3. 对于InnoDB Hot Backup备份的操作(或是直接冷备),每次需要CP的文件比较大。如果现在有180G的表空间,但实际数据只有50多G,那么我们将面对每次需要拷180G的数据。

 

独立表空间:

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

优点:

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

2.可以通过文件系统(例如使用ls命令)来评估一个数据表所占的磁盘空间。

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

4. 此参数为On时,InnoDB引擎的压缩特性

4.drop table自动回收表空间  ,删除大量数据后可以通过alter table XX engine = innodb;回收空间

缺点:

单表增加过大,如超过100个G。

对于单表增长过大的问题,如果使用共享表空间可以把文件分开,但有同样有一个问题,如果访问的范围过大同样会访问多个文件,一样会比较慢。对于独立 表空间也有一个解决办法是:使用分区表,也可以把那个大的表空间移动到别的空间上然后做一个连接。其实从性能上出发,当一个表超过100个G有可能响应也 是较慢了,对于独立表空间还容易发现问题早做处理。


二、frm,MYD,MYI.idb,par文件说明

如数据库a,表b。

1、如果表格b采用MyISAM,data\a中会产生3个文件:

b.frm :描述表结构文件,字段长度等

b.MYD(MYData):数据信息文件,存储数据信息(如果采用独立表存储模式)

b.MYI(MYIndex):索引信息文件。


2、如果表格b采用InnoDB,data\a中会产生1个或者2个文件:

b.frm :描述表结构文件,字段长度等

如果采用独立表存储模式,data\a中还会产生b.ibd文件(存储数据信息和索引信息)

如果采用共存储模式的,数据信息和索引信息都存储在ibdata1中


如果采用分区存储,data\a中还会有一个b.par文件(用来存储分区信息)

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/31383567/viewspace-2140037/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/31383567/viewspace-2140037/

你可能感兴趣的文章
PCB反推理念
查看>>
京东技术架构(一)构建亿级前端读服务
查看>>
php 解决json_encode中文UNICODE转码问题
查看>>
LNMP 安装 thinkcmf提示404not found
查看>>
PHP empty、isset、innull的区别
查看>>
apache+nginx 实现动静分离
查看>>
通过Navicat远程连接MySQL配置
查看>>
phpstorm开发工具的设置用法
查看>>
Linux 系统挂载数据盘
查看>>
Git基础(三)--常见错误及解决方案
查看>>
Git(四) - 分支管理
查看>>
PHP Curl发送数据
查看>>
HTTP协议
查看>>
HTTPS
查看>>
git add . git add -u git add -A区别
查看>>
apache下虚拟域名配置
查看>>
session和cookie区别与联系
查看>>
PHP 实现笛卡尔积
查看>>
Laravel中的$loop
查看>>
CentOS7 重置root密码
查看>>