首页
/
每日頭條
/
科技
/
mysql innodb索引底層數據結構
mysql innodb索引底層數據結構
更新时间:2026-07-02 11:04:05

mysql innodb索引底層數據結構?InnoDB 在數據目錄之外創建表有不同的原因這些原因可能包括空間管理、I/O 優化或将表放置在具有特定性能或容量特征的存儲設備上,我來為大家科普一下關于mysql innodb索引底層數據結構?以下内容希望對你有幫助!

mysql innodb索引底層數據結構(MYSQL存儲引擎InnoDB十)1

mysql innodb索引底層數據結構

InnoDB 在數據目錄之外創建表有不同的原因。這些原因可能包括空間管理、I/O 優化或将表放置在具有特定性能或容量特征的存儲設備上。

InnoDB支持以下外部建表方式:

  • 使用DATA DIRECTORY子句
  • 使用 CREATE TABLE ... TABLESPACE 語法
  • 在外部通用表空間中創建表
使用數據目錄子句

您可以通過在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

使用說明:

  • MySQL 最初保持表空間數據文件處于打開狀态,從而阻止您卸載設備,但如果服務器繁忙,最終可能會關閉該文件。注意不要在 MySQL 運行時意外卸載外部設備,或者在設備斷開連接時啟動 MySQL。在缺少關聯的數據文件時嘗試訪問表會導緻嚴重錯誤,需要重新啟動服務器。
  • 如果在預期路徑中找不到數據文件,則服務器重新啟動可能會失敗。在這種情況下,您可以從備份中恢複表空間數據文件或删除表以從數據字典中删除有關它的信息 。
  • 在将表放在 NFS 挂載的卷上之前,請檢查 NFS 與 MySQL的潛在問題 。
  • 如果使用 LVM 快照、文件複制或其他基于文件的機制來備份表的數據文件,請始終 首先使用FLUSH TABLES ... FOR EXPORT語句以确保在備份發生之前将緩沖在内存中的所有更改刷新到磁盤。
  • 使用DATA DIRECTORY子句在外部目錄中創建表是使用InnoDB不支持的符号鍊接的替代方法。
  • 在源和副本位于同一主機上的複制環境中不支持DATA DIRECTORY子句。DATA DIRECTORY子句需要完整的目錄路徑。在這種情況下複制路徑将導緻源和副本在同一位置創建表。
  • 從 MySQL 8.0.21 開始,在獨立表空間中創建的表不能再在 undo 表空間目錄 ( innodb_undo_directory) 中創建,除非是InnoDB的已知目錄。
使用 CREATE TABLE ... TABLESPACE 語法

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方法等效。

在外部通用表空間中創建表

您可以在存儲在外部目錄中的通用表空間中創建表。

,
Comments
Welcome to tft每日頭條 comments! Please keep conversations courteous and on-topic. To fosterproductive and respectful conversations, you may see comments from our Community Managers.
Sign up to post
Sort by
Show More Comments
推荐阅读
ipad可以打電話嗎
ipad可以打電話嗎
1、ipad是可以打電話的。2、但是如果要借助某些軟件,如HHCALL網絡電話,把HHCALL直接下載到ipad就可以實現打電話,但前提是ipad支持wifi或者用3g業務上網,這樣軟件才可以打電話的,就是用流量打電話。3、iPad具備優秀的娛樂影音功能。iPad在視頻播放功能上保持領先地位,支持了當下流行的1280*720,即720P高清視頻,乃至1920*1080全高清。
2026-07-02
win7時間怎樣和網絡時間同步
win7時間怎樣和網絡時間同步
1、點擊桌面右下角時間,然後在彈出的窗口中點擊更改日期和時間設置”。2、在出現的窗口中選擇Internet時間”。3、接下來選擇更改設置”。4、在與Internet時間同步的前面打鈎”,然專後先點擊立即更新,再點擊确定”。5、接下來會顯示同步成功,我們點擊确定即可。
2026-07-02
搜狗輸入法變成繁體字怎麼辦
搜狗輸入法變成繁體字怎麼辦
演示機型:華為MateBookX系統版本:win10APP版本:搜狗輸入法v10.11、在桌面任務欄中找到搜狗輸入法狀态欄,對其擊右鍵;2、在右鍵菜單中,點擊選擇“簡繁切換”菜單項;3、在簡繁切換菜單中,點擊選擇“簡體”菜單項,即可恢複默認的簡體中文;4、還可以在右鍵菜單中,選擇“屬性設置”選項;5、在打開的屬性設置頁面中,點
2026-07-02
車輛合格證丢了怎麼辦
車輛合格證丢了怎麼辦
1、聯系4s店。與售車的4S店聯系(或與廠家直接聯系)辦理。2、4S的客戶服務那做下備案,一般是由4S店裡面維修部門與廠家最熟悉的人員來聯系補辦事宜,把車型信息告訴總廠,總廠就能寄回來個新的。國産車一般補度辦費用100-200元,非常簡單的事。3、廠家在确認後,會補發一張新的合格證。合格證拿到後,注意核對車架号、發動機号是否與發票一緻。特别注意的是:合格證号可能會不一樣,如果不同則需要重新開據銷售
2026-07-02
電腦wifi不見了怎麼辦
電腦wifi不見了怎麼辦
1、鼠标右鍵點擊底部任務欄”,左鍵點擊彈出的屬性”按鈕。2、在屬性菜單設置中,找到并點擊通知區域右方的自定義”。3、在圖标的通知中,找到網絡”右邊的框中,改為顯示圖标和通知”,改完後點擊确定”。4、桌面底部的無線圖标立刻就顯示出來了。
2026-07-02
Copyright 2023-2026 - www.tftnews.com All Rights Reserved