淺談mysql中各種表空間(tablespaces)的概念
mysql中,會涉及到各種表空間的概念,雖然,很多方面這些概念和Oracle有相似性,但也有很多不同的地方,初學者很容易被這些概念弄的暈頭轉向,從而,混淆這些概念的區別和理解,下面,就簡要介紹和說明一下這些表空間的概念。
1.系統表空間(System Tablespace)
innodb系統表空間包含innodb資料字典(innodb相關物件的後設資料),同時,雙寫緩衝(doublewrite buffer)、改變緩衝(change buffer)和undo日誌(undo logs)等也儲存於系統表空間中。此外,系統表空間
也包含使用者在該表空間建立的表和索引等資料。由於系統表空間可以儲存多張表,因此,其為一個共享表空間。系統表空間由一個或多個資料檔案組成,預設情況下,其包含一個叫ibdata1的系統資料檔案,位於mysql
資料目錄(datadir)下。系統表空間資料檔案的位置、大小和數目由innodb_data_home_dir和innodb_data_file_path啟動選項控制。針對不同場景,具體舉例如下:
1)引數innodb_data_home_dir未配置,只配置引數innodb_data_file_path:
innodb_data_file_path=ibdata1:1024M;ibdata2:1024M:autoextend
--注:系統表空間包含ibdata1和ibdata2兩個資料檔案,二者均位於datadir目錄下。
2)引數innodb_data_home_dir和innodb_data_file_path均進行了配置:
innodb_data_home_dir = /data
innodb_data_file_path=ibdata1:1024M;ibdata2:1024M:autoextend
--注:系統表空間包含ibdata1和ibdata2兩個資料檔案,二者均位於/data目錄下。
3)引數innodb_data_home_dir位置為空串,只配置引數innodb_data_file_path:
innodb_data_home_dir =
innodb_data_file_path=/d1/ibdata1:1024M;/d2/ibdata2:1024M:autoextend
--注:系統表空間包含ibdata1和ibdata2兩個資料檔案,ibdata1位於/d1目錄下,ibdata2位於/d2目錄下。
2.表檔案表空間(File-Per-Table Tablespaces)
表檔案表空間是一個單表表空間,該表建立於自己的資料檔案中,而非建立於系統表空間中。當innodb_file_per_table選項開啟時,表將被建立於表檔案表空間中。否則,innodb將被建立於系統表空間中。
每個表檔案表空間由一個.ibd資料檔案代表,該檔案預設被建立於相應資料庫目錄中。表檔案表空間支援動態(DYNAMIC)和壓縮(commpressed)行格式。
3.通用表空間(General Tablespaces)
通用表空間為透過create tablespace語法建立的共享表空間。通用表空間可以建立於mysql資料目錄外的其他表空間,其可以容納多張表,且其支援所有的行格式。
透過create table tab_name ... tablespace [=] tablespace_name或alter table tab_name tablespace [=] tablespace_name語法將其新增與通用表空間內。
4.undo表空間(undo tablespace)
undo表空間由一個或多個包含undo日誌的檔案組成。innodb_undo_tablespace配置選項控制undo表空間的數目。undo表空間建立於innodb_undo_directory配置選項確定的位置,該選項典型被用於將undo日誌放於不同的
儲存裝置上。如果該選項沒有確定任何路徑,undo表空間則被預設建立於mysql資料目錄(datadir)下。
5.臨時表空間(Temporary Tablespace)
使用者建立的臨時表和磁碟內部臨時表建立於共享臨時表空間中。innodb_temp_data_file選項確定臨時表空間資料檔案的相對路徑、名字、大小和屬性等。如果該選項未確定任何值,預設情況下,系統將在
innodb_data_home_dir確定的目錄下建立一個叫ibtmp1的自動擴充套件的資料檔案,該檔案將稍大於12m。
mysql伺服器正常關閉或異常終止初始化時,臨時表空間將被移除,並且,mysql伺服器每次啟動時會被重新建立。當臨時表空間被建立時,其被賦予一個動態產生的空間ID(space ID)。如果不能建立臨時表空間,
mysql伺服器啟動將被拒絕。mysql伺服器異常終止的情況下,臨時表空間將不被移除。這種情況下,DBA能手工移除臨時表空間或重啟mysql伺服器,重啟伺服器過程中,將自動移除和重新建立臨時表空間。
臨時表空間並不能儲存於裸裝置。
這裡既然說到了innodb_data_home_dir,那麼,就說說這個選項,該選項確定innodb系統表空間資料檔案目錄路徑的共同部分。innodb_file_per_table開啟時,該選項設定並不影響表檔案表空間的位置。該選項預設值
為mysql資料目錄。如果你將該選項設定為空串,那麼,你可以為innodb_data_file_path設定一個絕對路徑值。此外,當為innodb_data_home_dir指定一個值時,需要在尾部新增一個斜槓。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8484829/viewspace-2671772/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 談談什麼是MySQL的表空間?MySql
- 淺談 OI 中各種合併操作
- MySQL共享表空間各個版本之間的演變圖MySql
- MySQL 中的共享表空間與獨立表空間如何選擇MySql
- [前端漫談] 一巴掌拍平Git中的各種概念前端Git
- MySQL 傳輸表空間MySql
- MySQL InnoDB表空間加密MySql加密
- 聊聊Oracle表空間Offline的三種引數(中)Oracle
- 表空間OFFLINE的3種選項。
- MySQL InnoDB Undo表空間配置MySql
- mysql之 表空間傳輸MySql
- mysql收縮共享表空間MySql
- mysql關於表空間的總結MySql
- 淺談 SpringMVC 中各層職責的設計SpringMVC
- MySQL 遷移表空間,備份單表MySql
- MySQL InnoDB臨時表空間配置MySql
- MySQL 當中的各種鎖(中級篇)MySql
- mysql臨時表,臨時表空間,ibtmp1表空間暴增原因初探MySql
- 16、表空間 建立表空間
- MySQL中int、char、varchar的效能淺談MySql
- MySQL 減少InnoDB系統表空間的大小MySql
- MySQL 增加InnoDB系統表空間大小MySql
- MySQL InnoDB File-Per-Table表空間MySql
- MySQL 系統表空間檔案解析MySql
- 淺談意圖識別各種實現&數學原理
- 執行緒概念淺談執行緒
- python與mysql互動中的各種坑PythonMySql
- openGauss中如何管理表空間
- MySQL innodb表使用表空間物理檔案複製表MySql
- 表空間利用率及表空間的補充
- 聊聊Oracle表空間Offline的三種引數(上)Oracle
- 聊聊Oracle表空間Offline的三種引數(下)Oracle
- KingbaseES的表空間
- MySQL傳輸表空間的簡單使用方法MySql
- MySQL 5.7新支援--通用表空間實戰MySql
- MySQL UNDO表空間獨立和截斷MySql
- MySQL使用小技巧(information_schema表空間)MySqlORM
- 當使用者無限制使用表空間配額且表空間有足夠空間時出現超出表空間的空間限額