mysql innodb索引底層數據結構?InnoDB 在數據目錄之外創建表有不同的原因這些原因可能包括空間管理、I/O 優化或将表放置在具有特定性能或容量特征的存儲設備上,我來為大家科普一下關于mysql innodb索引底層數據結構?以下内容希望對你有幫助!
InnoDB 在數據目錄之外創建表有不同的原因。這些原因可能包括空間管理、I/O 優化或将表放置在具有特定性能或容量特征的存儲設備上。
InnoDB支持以下外部建表方式:
您可以通過在CREATE TABLE語句中指定DATA DIRECTORY子句在InnoDB外部目錄 中創建表。
CREATE TABLE t1 (c1 INT PRIMARY KEY) DATA DIRECTORY = '/external/directory';
在獨立表空間中創建的表支持DATA DIRECTORY子句。啟用innodb_file_per_table變量時,表會在每個表的文件表空間中隐式創建, 默認情況下是這樣。
mysql> SELECT @@innodb_file_per_table;
-------------------------
| @@innodb_file_per_table |
-------------------------
| 1 |
-------------------------
當您在CREATE TABLE語句中指定DATA DIRECTORY子句時 ,将在指定目錄下的模式目錄中創建表的數據文件 (table_name.ibd)。
從 MySQL 8.0.21 開始,使用DATA DIRECTORY子句在數據目錄之外創建的表和表分區僅限于InnoDB。此要求允許數據庫管理員控制在何處創建表空間數據文件,并确保在恢複期間可以找到數據文件。
已知目錄是由 datadir、 innodb_data_home_dir和 innodb_directories變量定義的目錄。您可以使用以下語句檢查這些設置:
mysql> SELECT @@datadir,@@innodb_data_home_dir,@@innodb_directories;
如果您要使用的目錄未知, 請在創建表之前将其添加到innodb_directories設置中。innodb_directories變量是隻讀的。配置它需要重新啟動服務器。
以下示例演示了使用DATA DIRECTORY子句在外部目錄中創建表。假定innodb_file_per_table變量已啟用并且該目錄是InnoDB已知的。
mysql> USE test;
Database changed
mysql> CREATE TABLE t1 (c1 INT PRIMARY KEY) DATA DIRECTORY = '/external/directory';
# MySQL creates the table's data file in a schema directory
# under the external directory
$> cd /external/directory/test
$> ls
t1.ibd
使用說明:
CREATE TABLE ... TABLESPACE語法可以與DATA DIRECTORY子句結合使用以在外部目錄中創建表。為此,請指定 innodb_file_per_table為表空間名稱。
mysql> CREATE TABLE t2 (c1 INT PRIMARY KEY) TABLESPACE = innodb_file_per_table
DATA DIRECTORY = '/external/directory';
此方法僅支持在獨立表空間中創建的表,但不需要啟用innodb_file_per_table變量。在所有其他方面,此方法與上述CREATE TABLE ... DATA DIRECTORY方法等效。
在外部通用表空間中創建表您可以在存儲在外部目錄中的通用表空間中創建表。
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!