zoukankan      html  css  js  c++  java
  • mysql之 共享表空间与独立表空间、frm,MYD,MYI.idb,par文件说明

    一、共享表空间与独立表空间
    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,dataa中会产生3个文件:
    b.frm :描述表结构文件,字段长度等
    b.MYD(MYData):数据信息文件,存储数据信息(如果采用独立表存储模式)
    b.MYI(MYIndex):索引信息文件。

    2、如果表格b采用InnoDB,dataa中会产生1个或者2个文件:
    b.frm :描述表结构文件,字段长度等
    如果采用独立表存储模式,dataa中还会产生b.ibd文件(存储数据信息和索引信息)
    如果采用共存储模式的,数据信息和索引信息都存储在ibdata1中

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

  • 相关阅读:
    Android Studio 开发
    Jsp编写的页面如何适应手机浏览器页面
    电影
    Oracle 拆分列为多行 Splitting string into multiple rows in Oracle
    sql server 2008 自动备份
    WINGIDE 激活失败
    python安装 错误 “User installations are disabled via policy on the machine”
    ble编程-外设发送数据到中心
    iOS开发-NSString去掉所有换行及空格
    ios9 字符串与UTF-8 互相转换
  • 原文地址:https://www.cnblogs.com/andy6/p/6917997.html
Copyright © 2011-2022 走看看