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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- mysql關於臨時表的總結MySql
- 12C關於CDB、PDB 臨時temp表空間的總結
- 12C關於CDB、PDB 回滾undo表空間的總結
- mysql關於memory引擎的表的總結MySql
- 2.5.4.1 關於SYSAUX表空間UX
- mysql關於variable的總結MySql
- mysql關於mysql.server的總結MySqlServer
- mysql關於mysqld_safe的總結MySql
- MySQL InnoDB表空間加密MySql加密
- MySQL 傳輸表空間MySql
- SqlServer關於分割槽表的總結SQLServer
- MySQL 中的共享表空間與獨立表空間如何選擇MySql
- 達夢表空間管理注意事項總結
- 達夢資料庫表空間等空間大小查詢方法總結資料庫
- 關於MySQL InnoDB表的二級索引是否加入主鍵的總結MySql索引
- 關於Mysql使用的一些總結MySql
- MySql關於鎖的一些總結MySql
- mysql之 表空間傳輸MySql
- mysql收縮共享表空間MySql
- MySQL InnoDB Undo表空間配置MySql
- 關於oracle的空間查詢Oracle
- Sqlserver 關於臨時表和表變數的總結SQLServer變數
- mysql關於聚集索引、非聚集索引的總結MySql索引
- mysql關於db.opt檔案的總結MySql
- mysql關於字符集character set的總結MySql
- MySQL 遷移表空間,備份單表MySql
- MySQL InnoDB臨時表空間配置MySql
- 談談什麼是MySQL的表空間?MySql
- mysql臨時表,臨時表空間,ibtmp1表空間暴增原因初探MySql
- 16、表空間 建立表空間
- 關於丟失表空間資料檔案的處理方式
- MySQL 磁碟空間滿導致表空間相關資料檔案損壞故障處理MySql
- oracle臨時表空間相關Oracle
- MySQL 減少InnoDB系統表空間的大小MySql
- innodb表空間儲存結構
- 常見顏色空間總結
- MySQL 增加InnoDB系統表空間大小MySql
- MySQL InnoDB File-Per-Table表空間MySql