您好,登錄后才能下訂單哦!
mysql中,會涉及到各種表空間的概念,雖然,很多方面這些概念和Oracle有相似性,但也有很多不同的地方,初學(xué)者很容易被這些概念弄的暈頭轉(zhuǎn)向,從而,混淆這些概念的區(qū)別和理解,下面,就簡要介紹和說明一下這些表空間的概念。
1.系統(tǒng)表空間(System Tablespace)
innodb系統(tǒng)表空間包含innodb數(shù)據(jù)字典(innodb相關(guān)對象的元數(shù)據(jù)),同時,雙寫緩沖(doublewrite buffer)、改變緩沖(change buffer)和undo日志(undo logs)等也存儲于系統(tǒng)表空間中。此外,系統(tǒng)表空間
也包含用戶在該表空間創(chuàng)建的表和索引等數(shù)據(jù)。由于系統(tǒng)表空間可以存儲多張表,因此,其為一個共享表空間。系統(tǒng)表空間由一個或多個數(shù)據(jù)文件組成,默認情況下,其包含一個叫ibdata1的系統(tǒng)數(shù)據(jù)文件,位于mysql
數(shù)據(jù)目錄(datadir)下。系統(tǒng)表空間數(shù)據(jù)文件的位置、大小和數(shù)目由innodb_data_home_dir和innodb_data_file_path啟動選項控制。針對不同場景,具體舉例如下:
1)參數(shù)innodb_data_home_dir未配置,只配置參數(shù)innodb_data_file_path:
innodb_data_file_path=ibdata1:1024M;ibdata2:1024M:autoextend
--注:系統(tǒng)表空間包含ibdata1和ibdata2兩個數(shù)據(jù)文件,二者均位于datadir目錄下。
2)參數(shù)innodb_data_home_dir和innodb_data_file_path均進行了配置:
innodb_data_home_dir = /data
innodb_data_file_path=ibdata1:1024M;ibdata2:1024M:autoextend
--注:系統(tǒng)表空間包含ibdata1和ibdata2兩個數(shù)據(jù)文件,二者均位于/data目錄下。
3)參數(shù)innodb_data_home_dir位置為空串,只配置參數(shù)innodb_data_file_path:
innodb_data_home_dir =
innodb_data_file_path=/d1/ibdata1:1024M;/d2/ibdata2:1024M:autoextend
--注:系統(tǒng)表空間包含ibdata1和ibdata2兩個數(shù)據(jù)文件,ibdata1位于/d1目錄下,ibdata2位于/d2目錄下。
2.表文件表空間(File-Per-Table Tablespaces)
表文件表空間是一個單表表空間,該表創(chuàng)建于自己的數(shù)據(jù)文件中,而非創(chuàng)建于系統(tǒng)表空間中。當innodb_file_per_table選項開啟時,表將被創(chuàng)建于表文件表空間中。否則,innodb將被創(chuàng)建于系統(tǒng)表空間中。
每個表文件表空間由一個.ibd數(shù)據(jù)文件代表,該文件默認被創(chuàng)建于相應(yīng)數(shù)據(jù)庫目錄中。表文件表空間支持動態(tài)(DYNAMIC)和壓縮(commpressed)行格式。
3.通用表空間(General Tablespaces)
通用表空間為通過create tablespace語法創(chuàng)建的共享表空間。通用表空間可以創(chuàng)建于mysql數(shù)據(jù)目錄外的其他表空間,其可以容納多張表,且其支持所有的行格式。
通過create table tab_name ... tablespace [=] tablespace_name或alter table tab_name tablespace [=] tablespace_name語法將其添加與通用表空間內(nèi)。
4.undo表空間(undo tablespace)
undo表空間由一個或多個包含undo日志的文件組成。innodb_undo_tablespace配置選項控制undo表空間的數(shù)目。undo表空間創(chuàng)建于innodb_undo_directory配置選項確定的位置,該選項典型被用于將undo日志放于不同的
存儲設(shè)備上。如果該選項沒有確定任何路徑,undo表空間則被默認創(chuàng)建于mysql數(shù)據(jù)目錄(datadir)下。
5.臨時表空間(Temporary Tablespace)
用戶創(chuàng)建的臨時表和磁盤內(nèi)部臨時表創(chuàng)建于共享臨時表空間中。innodb_temp_data_file選項確定臨時表空間數(shù)據(jù)文件的相對路徑、名字、大小和屬性等。如果該選項未確定任何值,默認情況下,系統(tǒng)將在
innodb_data_home_dir確定的目錄下創(chuàng)建一個叫ibtmp1的自動擴展的數(shù)據(jù)文件,該文件將稍大于12m。
mysql服務(wù)器正常關(guān)閉或異常終止初始化時,臨時表空間將被移除,并且,mysql服務(wù)器每次啟動時會被重新創(chuàng)建。當臨時表空間被創(chuàng)建時,其被賦予一個動態(tài)產(chǎn)生的空間ID(space ID)。如果不能創(chuàng)建臨時表空間,
mysql服務(wù)器啟動將被拒絕。mysql服務(wù)器異常終止的情況下,臨時表空間將不被移除。這種情況下,DBA能手工移除臨時表空間或重啟mysql服務(wù)器,重啟服務(wù)器過程中,將自動移除和重新創(chuàng)建臨時表空間。
臨時表空間并不能存儲于裸設(shè)備。
這里既然說到了innodb_data_home_dir,那么,就說說這個選項,該選項確定innodb系統(tǒng)表空間數(shù)據(jù)文件目錄路徑的共同部分。innodb_file_per_table開啟時,該選項設(shè)置并不影響表文件表空間的位置。該選項默認值
為mysql數(shù)據(jù)目錄。如果你將該選項設(shè)置為空串,那么,你可以為innodb_data_file_path設(shè)置一個絕對路徑值。此外,當為innodb_data_home_dir指定一個值時,需要在尾部添加一個斜杠。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。