zoukankan      html  css  js  c++  java
  • Innodb表空间

    Innodb有两种管理表空间的方法

      独立表空间:每一张表都会生成独立的文件来进行存储,每一张表都有一个.frm表描述文件,和一个.ibd文件。其中ibd文件包括了单独一个表的数据内容和索引内容。

      共享表空间:某一个数据库的所有表的数据和索引文件都放在一个文件下,默认的文件是.ibdata1文件,初始值是10M,默认是存放在数据文件的根目录下(mysql/var)。

    在性能和运维上独立表空间比共享的表空间有很多优势

     共享表空间

      优点:

        表空间可以分成多个文件存放到各个磁盘,所以表也就可以分成多个文件存放在磁盘上,表的大小不受磁盘大小的限制(很多文档描述有点问题)。

        数据和文件放在一起方便管理

       缺点:

        多个表及索引在表空间中混合存储,这样对于一个表做了大量删除操作后表空间中将会有大量的空隙,特别是对于统计分析,日值系统这类应用最不适合用共享表空间。

        共享表空间分配后不能回缩

        进行数据库的冷备很慢,mysqldump是一个好的处理方式

    独立空间

      优点:  

    1. 每个表都有自已独立的表空间。
    2. 每个表的数据和索引都会存在自已的表空间中。
    3. 可以实现单表在不同的数据库中移动。
    4. 空间可以回收

      缺点:

        单表增加过大,响应也是较慢,可以使用分区表

        单表增加过大,当单表占用空间过大时,存储空间不足,只能从操作系统层面思考解决方法

    共享表空间和独立表空间之间的转换  

    1.查看当前表空间情况:

    show variables like '%per_table';
    

    ON代表独立表空间管理,OFF代表共享表空间管理;

    2.修改数据库的表空间管理方式

      修改配置文件 ,在/etc/my.cnf文件中设置

        innodb_file_per_table=1 为使用独占表空间

        innodb_file_per_table=0 为使用共享表空间

      重启mysql

    3.共享表空间转化为独立表空间的方法

      (1)需要设置innodb_file_per_table=1

      (2)单个表 

          alter table table_name engine=innodb;

        很多表

          先把数据库导出,然后删除数据再进行导入操作,该操作可以用mysqldump进行操作

    总结:

      经过以上操作便完成数据库的存储空间的转换

      当数据量很小的时候建议使用共享表空间的管理方式。数据量很大的时候建议使用独立表空间的管理方式 

      

  • 相关阅读:
    CentOS 7搭建SVN服务器
    CentOS 配置MySQL允许远程登录
    使用nginx实现基于tcp协议的https协议多域名指向的分别转发功能
    centos7 设置内核启动顺序
    nginx 针对特定地区的ip进行规则匹配
    【转】golang 交叉编译
    linux修改用户id,组id
    etcd 增减节点
    [转]etcd 启用 https
    windows 多网卡路由设置
  • 原文地址:https://www.cnblogs.com/baby123/p/6731846.html
Copyright © 2011-2022 走看看