MySQL的共享表空間,是一個(gè)保存著MySQL所有的數(shù)據(jù)表和索引的文件。通過(guò)使用共享表空間,可以節(jié)省磁盤(pán)空間,因?yàn)椴煌谋砜梢怨蚕硗粋€(gè)文件。
在MySQL的共享表空間中,包含以下幾種文件:
ibdata1:這是共享表空間的主要文件,保存了所有數(shù)據(jù)表和索引的元數(shù)據(jù)。如果MySQL服務(wù)器啟動(dòng)時(shí)沒(méi)有指定獨(dú)立的數(shù)據(jù)文件,那么所有的數(shù)據(jù)都會(huì)保存在ibdata1中。 ib_logfile0 和 ib_logfile1:這兩個(gè)文件分別是用來(lái)記錄共享表空間的日志文件。MySQL使用這些日志文件來(lái)保證共享表空間的一致性和完整性。如果一個(gè)MySQL實(shí)例在運(yùn)行時(shí)崩潰了,也可以使用這些日志文件來(lái)恢復(fù)數(shù)據(jù)。
除此之外,如果啟用了InnoDB的多版本并發(fā)控制(MVCC)功能,那么還會(huì)有以下兩個(gè)額外的文件出現(xiàn):
ibdata1:保存了已經(jīng)被刪除的行的版本信息,也被稱(chēng)為回滾段或是UNDO表空間。 ibdata2:保存了所有當(dāng)前的事務(wù)的版本信息,也被稱(chēng)為活動(dòng)表空間或是REDO表空間。
綜上所述,共享表空間是MySQL中非常重要的一個(gè)部分。它不僅可以節(jié)約磁盤(pán)空間,還可以提高數(shù)據(jù)的可靠性和恢復(fù)性。