mysql關於表空間的總結
1.系統表空間(System Tablespace)
innodb系統表空間包含innodb資料字典(innodb相關物件的後設資料),undo logs、the change buffer, and the doublewrite buffer。
此外,當innodb_file_per_table=OFF時系統表空間也儲存表空間建立的表和索引等資料。
由於系統表空間可以儲存多張表,因此,其為一個共享表空間。
系統表空間由一個或多個資料檔案組成,預設情況下,其包含一個叫ibdata1的系統資料檔案,位於mysql資料目錄下。
系統表空間資料檔案的大小和數目由innodb_data_file_path啟動選項控制。
innodb_data_file_path=ibdata1:50M;ibdata2:12M:autoextend:max:500MB
多個檔案的情況下, 實際存在的檔案的大小必須和物理大小一樣,如上ibdata1的大小50M必須和實際儲存大小一樣
autoextend和max屬性只能用於innodb_data_file_path設定中最後指定的資料檔案
https://dev.mysql.com/doc/refman/5.7/en/glossary.html#glos_system_tablespace
One or more data files (ibdata files) containing metadata for InnoDB-related objects (the InnoDB data dictionary), and the storage areas for the change buffer, the doublewrite buffer, and possibly undo logs. It may also contain table and index data for InnoDB tables if tables were created in the system tablespace instead of file-per-table or general tablespaces. The data and metadata in the system tablespace apply to all databases in a MySQL instance.
Prior to MySQL 5.6.7, the default was to keep all InnoDB tables and indexes inside the system tablespace, often causing this file to become very large. Because the system tablespace never shrinks, storage problems could arise if large amounts of temporary data were loaded and then deleted. In MySQL 5.7, the default is file-per-table mode, where each table and its associated indexes are stored in a separate .ibd file.
包含InnoDB相關物件(InnoDB資料字典)的後設資料的一個或多個資料檔案(ibdata檔案),以及更改緩衝區,雙寫緩衝區和可能的撤消日誌的儲存區域。 如果在系統表空間而不是每個表檔案或一般表空間中建立表,它還可能包含InnoDB表的表和索引資料。 系統表空間中的資料和後設資料適用於MySQL例項中的所有資料庫。
在MySQL 5.6.7之前,預設設定是將所有InnoDB表和索引保留在系統表空間內,這通常會導致此檔案變得非常大。 由於系統表空間永遠不會縮小,因此如果載入並刪除了大量臨時資料,則可能會出現儲存問題。 在MySQL 5.7中,預設為每表檔案模式,其中每個表及其相關索引儲存在單獨的.ibd檔案中。
2.表檔案表空間(File-Per-Table Tablespaces)
表檔案表空間是一個單表表空間,該表建立於自己的資料檔案中。當innodb_file_per_table選項開啟時,表將被建立於表檔案表空間中。
儲存單個InnoDB表資料的每表檔案表空間由.ibd資料檔案表示
https://dev.mysql.com/doc/refman/5.7/en/innodb-multiple-tablespaces.html
Historically, all InnoDB tables and indexes were stored in the system tablespace. This monolithic approach was targeted at machines dedicated entirely to database processing, with carefully planned data growth, where any disk storage allocated to MySQL would never be needed for other purposes. InnoDB's file-per-table tablespace feature provides a more flexible alternative, where each InnoDB table and its indexes are stored in a separate .ibd data file. Each such .ibd data file represents an individual tablespace. This feature is controlled by the innodb_file_per_table configuration option, which is enabled by default in MySQL 5.6.6 and higher.
從歷史上看,所有InnoDB表和索引都儲存在系統表空間中。 這種單片方法的目標是完全專用於資料庫處理的機器,精心規劃的資料增長,其中任何分配給MySQL的磁碟儲存都不會用於其他目的。 InnoDB的每表檔案表空間功能提供了更靈活的替代方案,其中每個InnoDB表及其索引都儲存在單獨的.ibd資料檔案中。 每個這樣的.ibd資料檔案代表一個單獨的表空間。 此功能由innodb_file_per_table配置選項控制,該選項在MySQL 5.6.6及更高版本中預設啟用。
3.通用表空間(General Tablespaces)
https://dev.mysql.com/doc/refman/5.7/en/general-tablespaces.html
A general tablespace is a shared InnoDB tablespace that is created using CREATE TABLESPACE syntax
通用表空間是使用CREATE TABLESPACE語法建立的共享InnoDB表空間
Creating a general tablespace in the MySQL data directory 在MySQL資料目錄中建立通用表空間:
mysql> CREATE TABLESPACE `ts1` ADD DATAFILE 'ts1.ibd' Engine=InnoDB;
Creating a general tablespace in a directory outside of the MySQL data directory 在MySQL資料目錄之外的目錄中建立通用表空間:
mysql> CREATE TABLESPACE `ts1` ADD DATAFILE '/my/tablespace/directory/ts1.ibd' Engine=InnoDB;
mysql> CREATE TABLE t1 (c1 INT PRIMARY KEY) TABLESPACE ts1;
mysql> ALTER TABLE t2 TABLESPACE ts1;
4.undo表空間(undo tablespace)
https://dev.mysql.com/doc/refman/5.7/en/innodb-parameters.html#sysvar_innodb_undo_tablespaces
innodb_undo_tablespaces is deprecated and will be removed in a future release.
5.7.21版本開始innodb_undo_tablespaces已棄用,將在以後的版本中刪除
5.臨時表空間(Temporary Tablespace)
https://dev.mysql.com/doc/refman/5.7/en/innodb-temporary-tablespace.html
Non-compressed, user-created temporary tables and on-disk internal temporary tables are created in a shared temporary tablespace
The innodb_temp_data_file_path configuration option defines the relative path, name, size, and attributes for temporary tablespace data files. If no value is specified for innodb_temp_data_file_path, the default behavior is to create an auto-extending data file named ibtmp1 in the innodb_data_home_dir directory that is slightly larger than 12MB.
Compressed temporary tables, which are temporary tables created using the ROW_FORMAT=COMPRESSED attribute, are created in file-per-table tablespaces in the temporary file directory.
The temporary tablespace is removed on normal shutdown or on an aborted initialization, and is recreated each time the server is started . The temporary tablespace receives a dynamically generated space ID when it is created. Startup is refused if the temporary tablespace cannot be created. The temporary tablespace is not removed if the server halts unexpectedly. In this case, a database administrator can remove the temporary tablespace manually or restart the server, which removes and recreates the temporary tablespace automatically.
壓縮臨時表是使用ROW_FORMAT = COMPRESSED屬性建立的臨時表,它們是在臨時檔案目錄中的每表檔案表空間中建立的。
使用者建立的臨時表和磁碟內部臨時表建立於共享臨時表空間中。
innodb_temp_data_file_path配置選項定義臨時表空間資料檔案的相對路徑,名稱,大小和屬性。 如果沒有為innodb_temp_data_file_path指定值,則預設行為是在innodb_data_home_dir目錄中建立一個稍大於12MB的名為 ibtmp1 的自動擴充套件資料檔案。
臨時表空間在正常關閉或中止初始化時被刪除,並在每次啟動伺服器時重新建立 。 臨時表空間在建立時會收到動態生成的空間ID。 如果無法建立臨時表空間,則拒絕啟動。 如果伺服器意外停止,則不會刪除臨時表空間。 在這種情況下,資料庫管理員可以手動刪除臨時表空間或重新啟動伺服器,從而自動刪除並重新建立臨時表空間。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/30126024/viewspace-2216262/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 關於oracle可傳輸表空間的總結Oracle
- 關於oracle的表空間,分割槽表,以及索引的總結Oracle索引
- 關於oracle的表空間,分割槽表,以及索引的總結(轉)Oracle索引
- 關於oracle的表空間,分割槽表,以及索引的總結 -- 轉Oracle索引
- 表空間、段、區、塊的相關總結
- 有關temp表空間的一點總結!
- mysql關於臨時表的總結MySql
- 關於表空間和表的關係
- 12C關於CDB、PDB 臨時temp表空間的總結
- 12C關於CDB、PDB 回滾undo表空間的總結
- undo表空間總結
- mysql關於memory引擎的表的總結MySql
- 總結-表空間傳輸
- 2.5.4.1 關於SYSAUX表空間UX
- Oracle的UNDO表空間管理總結Oracle
- Oracle表空間維護總結Oracle
- 臨時表空間操作總結
- ORACLE臨時表空間總結Oracle
- 關於MySQL 查詢表資料大小的總結MySql
- mysql關於variable的總結MySql
- Mysql表空間MySql
- 關於oracle表空間的規劃方法Oracle
- oracle的表空間、分割槽表、以及索引的總結Oracle索引
- mysql關於mysql.server的總結MySqlServer
- MySQL InnoDB 共享表空間和獨立表空間MySql
- MySQL InnoDB 共享表空間和獨立表空間MySql
- 基於可傳輸表空間的表空間遷移
- 測試表的空間壓縮與表空間的關係
- SqlServer關於分割槽表的總結SQLServer
- 關於undo表空間的一些常用操作
- mysql關於mysqld_safe的總結MySql
- Oracle的邏輯結構(表空間、段、區間、塊)——表空間Oracle
- MySQL8.0 · 引擎特性 · 關於undo表空間的一些新變化MySql
- 關於時間、物質結構、四維空間的猜想
- 達夢表空間管理注意事項總結
- MySQL InnoDB表空間加密MySql加密
- MySQL 傳輸表空間MySql
- MySQL表空間傳輸MySql