MySQL表空間結構

在Innodb中,咱們能夠指定一張表的數據是保存在獨立表空間仍是系統表空間,這個參數是:innodb_file_per_table 若是咱們設置這個參數的值爲0,那麼一個表將使用系統表空間來保存表的數據,若是設置爲1,則使用獨立表空間來存儲數據。 除此以外,咱們能夠使用 alter table tbl_name tablespace innodb_file_per_table; 的方法來把系統表空間中的錶轉移到獨立表空間,反之,咱們能夠使用: alter table tbl_name tablespace innodb_system 的方法來將獨立表空間的錶轉移到系統表空間。 系統表空間(ibdata一、ibdata2文件) 系統表空間是指data目錄下面的ibdata1文件和ibdata2文件,文件個數能夠指定,這裏的表空間文件默認大小是12M,固然,咱們也能夠手動設置,配置的方法以下: # InnoDB Directory Variables innodb_data_home_dir = /data/mysql_4306/data innodb_data_file_path = ibdata1:1000M;ibdata2:100M:autoextend innodb_file_per_table = 1 在配置文件my.cnf裏面寫上以上參數,注意看,這裏我寫的是ibdata1是1000M,而ibdata2是100M,這樣的設置是徹底可行的,能夠看到,在ibdata一行最後是autoextend,他的意思是這個文件是能夠自動擴展的,因此通常都會比較大,每每是1G更多。還有一點須要注意,就是這個系統表空間只有一份,全部的表共用這一份數據。 關於這個系統表空間,這裏有一個小坑,給你們說一下: 若是你的主庫上設置的ibdata的模式是一個1000M,一個100M的話,你在搭建從庫的時候,從庫上須要跟主庫保持一致,若是沒有保持一致,則在實例啓動的時候會有報錯。
相關文章
相關標籤/搜索