Innodb表空間

Innodb有兩種管理表空間的方法mysql

  獨立表空間:每一張表都會生成獨立的文件來進行存儲,每一張表都有一個.frm表描述文件,和一個.ibd文件。其中ibd文件包括了單獨一個表的數據內容和索引內容。sql

  共享表空間:某一個數據庫的全部表的數據和索引文件都放在一個文件下,默認的文件是.ibdata1文件,初始值是10M,默認是存放在數據文件的根目錄下(mysql/var)。數據庫

在性能和運維上獨立表空間比共享的表空間有不少優點運維

 共享表空間性能

  優勢:操作系統

    表空間能夠分紅多個文件存放到各個磁盤,因此表也就能夠分紅多個文件存放在磁盤上,表的大小不受磁盤大小的限制(不少文檔描述有點問題)。blog

    數據和文件放在一塊兒方便管理索引

   缺點:文檔

    多個表及索引在表空間中混合存儲,這樣對於一個表作了大量刪除操做後表空間中將會有大量的空隙,特別是對於統計分析,日值系統這類應用最不適合用共享表空間。innodb

    共享表空間分配後不能回縮

    進行數據庫的冷備很慢,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進行操做

總結:

  通過以上操做便完成數據庫的存儲空間的轉換

  當數據量很小的時候建議使用共享表空間的管理方式。數據量很大的時候建議使用獨立表空間的管理方式 

相關文章
相關標籤/搜索