最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MySQL通用臨時(shí)表空間的具體使用

 更新時(shí)間:2026年07月23日 09:32:05   作者:流星白龍  
通用表空間是共享InnoDB表空間,可存儲(chǔ)多個(gè)表,節(jié)省內(nèi)存;臨時(shí)表空間分為會(huì)話和全局兩種,用于存放臨時(shí)數(shù)據(jù),本文將詳細(xì)介紹創(chuàng)建、管理、刪除通用表空間的方法,以及內(nèi)部和外部臨時(shí)表的區(qū)別和配置,幫助你優(yōu)化數(shù)據(jù)庫存儲(chǔ)

通用表空間 - General Tablespace

通用表空間的作用和特性?

  • 通用表空間是使用 CREATE tablespace 語法創(chuàng)建的共享InnoDB表空間
  • 通用表空間能夠存儲(chǔ)多個(gè)表的數(shù)據(jù),與系統(tǒng)表空間類似也是共享表空間;
  • 服務(wù)器運(yùn)行時(shí)會(huì)把表空間元數(shù)據(jù)保存在內(nèi)存中,在表的數(shù)量相同的情況下,通用表空間比獨(dú)立表空間的數(shù)量更少,所以消耗的內(nèi)存也就更少;
  • 數(shù)據(jù)文件可以放置在數(shù)據(jù)目錄或數(shù)據(jù)目錄之外的其他位置,對于單獨(dú)管理關(guān)鍵表非常有用;
  • 支持所有的表格式和行格式的相關(guān)特性;

怎么創(chuàng)建通用表空間?

創(chuàng)建通用表空間可以使用 CREATE TABLESPACE 語法:

  • tablespace_name:通用表空間的名字
  • DATAFILE 'file_name':指定通用表空間在磁盤的文件名
  • FILE_BLOCK_SIZE:數(shù)據(jù)行格式是壓縮格式時(shí)才涉及
CREATE TABLESPACE tablespace_name [ADD DATAFILE 'file_name'] [FILE_BLOCK_SIZE = value] [ENGINE [=] engine_name]

注意:

tablespace_name 表空間名區(qū)分大小寫

總結(jié):

創(chuàng)建通用表空間可以使用 CREATE TABLESPACE 語法,與創(chuàng)建表類似,語句里用TABLESPACE 關(guān)鍵字指明創(chuàng)建的是表空間

創(chuàng)建通用表空間的示例

示例:在 data 目錄下創(chuàng)建通用表空間

# 指定表空間文件名
CREATE TABLESPACE `ts1` ADD DATAFILE 'ts1.ibd' Engine=InnoDB;
# 或使用隨機(jī)文件名
CREATE TABLESPACE `ts2` Engine=InnoDB;

ADD DATAFILE 子句在MySQL 8.0.14及以后的版本是可選的,之前是必需的。如果沒有指定ADD DATAFILE 子句,則自動(dòng)創(chuàng)建一個(gè)以 UUID 為文件名的表空間數(shù)據(jù)文件,通用表空間數(shù)據(jù)文件以 .ibd 為擴(kuò)展名。

# 在數(shù)據(jù)目錄中查看通用表空間數(shù)據(jù)文件
root@yudukai:/var/lib/mysql# ll *.ibd
# 沒有指定ADD DATAFILE子句,隨機(jī)生成的通用表空間數(shù)據(jù)文件,指定了就沒有這行
-rw-r-----  1 mysql mysql   114688 Jun  7 14:05  d4b703a0-6236-11f1-841a-fa163e0bcb5f.ibd # ts2
# 系統(tǒng)自帶,存放mysql系統(tǒng)表和數(shù)據(jù)字典表的表空間數(shù)據(jù)文件
-rw-r-----  1 mysql mysql 26214400 May 29 19:06  mysql.ibd
# 使用了ADD DATAFILE子句,使用指定的通用表空間數(shù)據(jù)文件
-rw-r-----  1 mysql mysql   147456 May 29 19:06  ts1.ibd

 創(chuàng)建通用表空間時(shí)要注意什么?

  • 可以在數(shù)據(jù)目錄中創(chuàng)建通用表空間,也可以在數(shù)據(jù)目錄之外創(chuàng)建通用表空間。為避免與隱式創(chuàng)建的獨(dú)立表文件表空間沖突,不支持在data目錄的子目錄中創(chuàng)建通用表空間。(因?yàn)槲覀兠縿?chuàng)建一個(gè)數(shù)據(jù)庫,都會(huì)在數(shù)據(jù)目錄中生成一個(gè)與數(shù)據(jù)庫名相同的子目錄,為了避免自已在數(shù)據(jù)目錄中創(chuàng)建的子目錄與以后將要?jiǎng)?chuàng)建的數(shù)據(jù)庫重名,所以不允許把通用表空間創(chuàng)建在數(shù)據(jù)目錄下的子目錄中)

    當(dāng)在數(shù)據(jù)目錄之外創(chuàng)建通用表空間時(shí),該目錄必須存在,并且必須在創(chuàng)建表空間之前讓InnoDB識(shí)別,要使用自定義的目錄可以通過系統(tǒng) innodb_directories 指定。

    Innodb_directories 是一個(gè)只讀啟動(dòng)選項(xiàng),配置后需要重新啟動(dòng)服務(wù)器。

  • Innodb_directories 默認(rèn)值是 NULL ,同時(shí) innodb_data_home_dir , innodb_undo_directory 和 datadir 定義的目錄會(huì)被附加到 innodb_directories 參數(shù)值中,在InnoDB啟動(dòng)時(shí)會(huì)自動(dòng)被識(shí)別(包括子目錄),手動(dòng)指定目錄的方式,如下所示:

# 通過啟動(dòng)選項(xiàng)指定,多個(gè)目錄用分號(hào)隔開
mysqld --innodb-directories="directory_path_1;directory_path_2"
# 通過選項(xiàng)文件指定,多個(gè)目錄用分號(hào)隔開
[mysqld]
innodb_directories="directory_path_1;directory_path_2"

示例:不能在數(shù)據(jù)目錄的子目錄下創(chuàng)建通用表空間

# 在數(shù)據(jù)目錄下創(chuàng)建子目錄
root@yudukai:/var/lib/mysql# mkdir my_tablespace
root@yudukai:/var/lib/mysql# ll
total 92892
# ... 省略
drwxr-xr-x 2 root root 4096 10月 30 10:59 my_tablespace/
# ... 省略

CREATE TABLESPACE `ts3` ADD DATAFILE './my_tablespace/ts3.ibd' Engine=InnoDB;
# 提示錯(cuò)誤,因?yàn)樽幽夸浢锌赡芎蛿?shù)據(jù)庫名重名
ERROR 3121 (HY000): The DATAFILE location cannot be under the datadir.

InnoDB不是默認(rèn)存儲(chǔ)引擎的情況下,必須指定 ENGINE = InnoDB 子句

如何向通用表空間中添加表?

示例:向通用表空間中添加表,在創(chuàng)建表時(shí)使用 TABLESPACE 子句指定通用表空間即可

# 在ts1表空間中添加t1表
mysql> CREATE TABLE t2 (c1 INT PRIMARY KEY) TABLESPACE ts1;
Query OK, 0 rows affected (0.02 sec)

# 在ts1表空間中添加t2表
mysql> CREATE TABLE t3 (c1 INT PRIMARY KEY) TABLESPACE ts1;
Query OK, 0 rows affected (0.02 sec)

# 把t1表移動(dòng)到ts1表空間
mysql> ALTER TABLE t1 TABLESPACE ts1;
Query OK, 0 rows affected (0.03 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> 

總結(jié):

首先創(chuàng)建通用表空間,之后使用 CREATE 語句創(chuàng)建表時(shí)通過 TABLESPACE 子句指定通用表空間,語句執(zhí)行成功后即在指定的通用表空間下創(chuàng)建了表

怎么刪除通用表空間?

DROP TABLESPACE 語句用于刪除一個(gè)InnoDB通用表空間。

在刪除通用表空間之前,必須將所有表從表空間中刪除,如果表空間不為空,將返回錯(cuò)誤。

查詢通用表空間中的表,可以使用下面的語句:

mysql> SELECT a.NAME AS space_name, b.NAME AS table_name FROM 
    -> INFORMATION_SCHEMA.INNODB_TABLESPACES a, INFORMATION_SCHEMA.INNODB_TABLES b 
    -> WHERE a.SPACE=b.SPACE AND a.NAME LIKE 'ts1';
+------------+------------+
| space_name | table_name |
+------------+------------+
| ts1        | test_db/t2 |
| ts1        | test_db/t3 |
| ts1        | test_db/t1 |
+------------+------------+
3 rows in set (0.00 sec)

mysql> 

示例:一個(gè)完整的通用表空間刪除流程

# 創(chuàng)建通用表空間ts1
CREATE TABLESPACE `ts1` ADD DATAFILE 'ts1.ibd' Engine=InnoDB;
# 在通用表空間中創(chuàng)建t1表
CREATE TABLE t1 (c1 INT PRIMARY KEY) TABLESPACE ts1 Engine=InnoDB;
# 刪除t1表
DROP TABLE t1;
# 刪除通用表空間ts1
DROP TABLESPACE ts1;

總結(jié):

可以使用 DROP TABLESPACE 語句用于刪除一個(gè)通用表空間,與刪除表類似,語句里用TABLESPACE 關(guān)鍵字指明刪除的是表空間

使用通用表空間時(shí)要注意什么?

  • 使用 TRUNCATE 或 DROP 語句截?cái)嗷騽h除表時(shí),通用表空間的空閑容量并不會(huì)釋放,并且只能用于新的InnoDB的新表而不能用于其他的引擎;
  • 通用表空間不屬于任何數(shù)據(jù)庫,使用 DROP DATABASE 操作數(shù)據(jù)庫和屬于該數(shù)據(jù)庫所有的表時(shí),并不會(huì)刪除通用表空間。
  • tablespace_name 表空間名區(qū)分大小寫

臨時(shí)表空間 - Temporary Tablespaces

什么是臨時(shí)表?

臨時(shí)表存儲(chǔ)的是臨時(shí)數(shù)據(jù),不能永久的存儲(chǔ)數(shù)據(jù),一般在復(fù)雜的查詢或計(jì)算過程中用來存儲(chǔ)過渡的中間結(jié)果。

MySQL在執(zhí)行查詢與計(jì)算的過程中會(huì)自動(dòng)生成臨時(shí)表,比如表連接查詢時(shí)得到的結(jié)果集就是一張臨時(shí)表,因?yàn)榻Y(jié)果中可能包含多個(gè)表中的字段并沒有一張真實(shí)的表與之完全對應(yīng)。

例如:student和score表是存在的,但是下面查詢的大表是不存在磁盤中的,是兩張表連接起來的結(jié)果,是在臨時(shí)表里的結(jié)果。

當(dāng)查詢的結(jié)果所包含的列,并沒有一個(gè)真實(shí)的表與之對應(yīng),那么這個(gè)結(jié)果集就用一個(gè)臨時(shí)表把數(shù)據(jù)組織起來。

除了系統(tǒng)自動(dòng)創(chuàng)建的臨時(shí)表,可以手動(dòng)創(chuàng)建臨時(shí)表嗎?

  • 用戶可以通過使用 CREATE TEMPORARY TABLE 語句手動(dòng)創(chuàng)建臨時(shí)表
  • 用戶創(chuàng)建的臨時(shí)表也稱為外部臨時(shí)表;MySQL在執(zhí)行查詢與計(jì)算的過程中自動(dòng)生成的臨時(shí)表稱為內(nèi)部臨時(shí)表。

什么是外部臨時(shí)表?

使用 CREATE TEMPORARY TABLE 語句創(chuàng)建的臨時(shí)表是外部臨時(shí)表

# 創(chuàng)建一個(gè)名稱為t1的臨時(shí)表
CREATE TEMPORARY TABLE t1 (c1 INT PRIMARY KEY) ENGINE=INNODB;

通過 INNODB_TEMP_TABLE_INFO 查詢臨時(shí)表元數(shù)據(jù)。

mysql> SELECT * FROM INFORMATION_SCHEMA.INNODB_TEMP_TABLE_INFO\G
*************************** 1. row ***************************
TABLE_ID: 1295              # 臨時(shí)表的表ID
    NAME: #sql288f17_30_b   # 臨時(shí)表的名稱
  N_COLS: 4                 # 臨時(shí)表中的列數(shù)(包含3個(gè)默認(rèn)隱藏列)
   SPACE: 4243767290        # 臨時(shí)表所在的臨時(shí)表空間ID
1 row in set (0.00 sec)

mysql> 
  1. TEMPORARY 表只在當(dāng)前會(huì)話中可見,并且在會(huì)話關(guān)閉時(shí)自動(dòng)刪除。
  2. 這意味著兩個(gè)不同的會(huì)話可以使用相同的臨時(shí)表名,而不會(huì)相互沖突。
  3. 臨時(shí)表也不會(huì)與已有的非臨時(shí)表名沖突,如果創(chuàng)建了與現(xiàn)有表同名的臨時(shí)表,則現(xiàn)有表被隱藏,直到臨時(shí)表被刪除。

把臨時(shí)表刪了,就可以查看之前的同名的真實(shí)表了。

重啟MySQL服務(wù)器后,再次查詢臨時(shí)表信息,得到空集合

總結(jié):

使用 CREATE TEMPORARY TABLE 語句創(chuàng)建的臨時(shí)表是外部臨時(shí)表,表只在當(dāng)前會(huì)話中可見,并且在會(huì)話關(guān)閉時(shí)自動(dòng)刪除

什么是內(nèi)部臨時(shí)表?

  • 由服務(wù)器自動(dòng)創(chuàng)建的臨時(shí)表是內(nèi)部臨時(shí)表
  • 服務(wù)器在以下情況會(huì)自動(dòng)創(chuàng)建臨時(shí)表,這個(gè)過程用戶不能直接控制:
    • 使用 UNION 語句合并查詢結(jié)果
    • 對視圖時(shí)的一些操作,比如使用 UNION 或聚合函數(shù)
    • 使用子查詢
    • 使用 DISTINCT 和 ORDER BY 的查詢可能需要一個(gè)臨時(shí)表
    • 使用 INSERT…SELECT 語句向表中寫入數(shù)據(jù)時(shí),需要先用一個(gè)內(nèi)部臨時(shí)表來保存 SELECT 語句查詢出來的行,然后將這些行插入到目標(biāo)表中
    • 使用 COUNT(DISTINCT) 和 GROUP_CONCAT() 表達(dá)式時(shí)
    • 使用窗口函數(shù)時(shí)

總結(jié):

由服務(wù)器自動(dòng)創(chuàng)建的臨時(shí)表是內(nèi)部臨時(shí)表,通常MySQL在執(zhí)行查詢與計(jì)算的過程中會(huì)自動(dòng)生成的內(nèi)部臨時(shí)表

如何確認(rèn)服務(wù)器創(chuàng)建了臨時(shí)表?

要確定SQL語句是否需要臨時(shí)表,使用 EXPLAIN 并檢查 Extra 列,在優(yōu)化專題中我們再詳細(xì)介紹

臨時(shí)表都有哪些設(shè)置?

  • 系統(tǒng)變量 internal_tmp_mem_storage_engine 用于指定內(nèi)存中內(nèi)部臨時(shí)表的存儲(chǔ)引擎,值為 TempTable (默認(rèn)值)或 MEMORY ;
  • TempTable 存儲(chǔ)引擎為 VARCHAR 和 VARBINARY 列以及其他二進(jìn)制大對象類型進(jìn)行了優(yōu)化;
  • 從MySQL 8.0.28開始 tmp_table_size 定義了由 TempTable 存儲(chǔ)引擎創(chuàng)建的單個(gè)內(nèi)部臨時(shí)表允許使用內(nèi)存的最大值,當(dāng)達(dá)到 tmp_table_size 限制時(shí),MySQL自動(dòng)將內(nèi)存中的內(nèi)部臨時(shí)表轉(zhuǎn)換為磁盤上的InnoDB內(nèi)部臨時(shí)表。 tmp_table_size 的默認(rèn)值是 16MB ;
  • 系統(tǒng)變量 temptable_max_ram 定義 TempTable 存儲(chǔ)引擎創(chuàng)建的所有臨時(shí)表可以使用的最大內(nèi)存,默認(rèn)為 1GB ,超出限制后將內(nèi)存中的內(nèi)部臨時(shí)表轉(zhuǎn)換為磁盤上內(nèi)部臨時(shí)表;
  • 當(dāng)內(nèi)存臨時(shí)表使用內(nèi)存存儲(chǔ)引擎 internal_tmp_mem_storage_engine=MEMORY 時(shí),系統(tǒng)變量 max_heap_table_size 可以限制內(nèi)存內(nèi)部臨時(shí)表的最大行數(shù),默認(rèn) 16777216 ,
  • 內(nèi)存存儲(chǔ)引擎臨時(shí)表變得太大,MySQL會(huì)自動(dòng)將其轉(zhuǎn)換為磁盤上的臨時(shí)表,內(nèi)存中臨時(shí)表的大小由 tmp_table_size 和 max_heap_table_size 這兩個(gè)系統(tǒng)變量中最小的值決定。

總結(jié):

通過配置對應(yīng)的系統(tǒng)變量來指定臨時(shí)表使用的存儲(chǔ)引擎、使用內(nèi)存的大小、表中的最大行數(shù)等選項(xiàng)。

臨時(shí)表中的數(shù)據(jù)存在哪里?

磁盤上的臨時(shí)表數(shù)據(jù)存儲(chǔ)在臨時(shí)表空間中,MySQL8.0版本中磁盤上的臨時(shí)表存儲(chǔ)引擎支持InnoDB ,分為兩種類型分別是:

  1. 會(huì)話臨時(shí)表空間( session temporary tablespaces )
  2. 全局臨時(shí)表空間( global temporary tablespace )

會(huì)話臨時(shí)表空間的作用?

磁盤上的會(huì)話臨時(shí)表空間存儲(chǔ)由用戶創(chuàng)建的外部臨時(shí)表和優(yōu)化器創(chuàng)建的內(nèi)部臨時(shí)表;

會(huì)話臨時(shí)表空間的數(shù)據(jù)存在哪里?

  • 當(dāng)MySQL接收到第一個(gè)創(chuàng)建磁盤臨時(shí)表的請求時(shí),從臨時(shí)表空間池中分配會(huì)話臨時(shí)表空間。

    一個(gè)會(huì)話最多分配兩個(gè)表空間,一個(gè)用于用戶創(chuàng)建的臨時(shí)表,另一個(gè)用于優(yōu)化器創(chuàng)建的內(nèi)部臨時(shí)表。

    會(huì)話的臨時(shí)表空間用于存儲(chǔ)會(huì)話創(chuàng)建的所有磁盤臨時(shí)表,當(dāng)會(huì)話斷開連接時(shí),臨時(shí)表空間將被截?cái)嗖⑨尫呕爻刂校?/p>

  • 服務(wù)器啟動(dòng)時(shí)會(huì)創(chuàng)建一個(gè)包含 10 個(gè)臨時(shí)表空間的臨時(shí)表空間池,表空間會(huì)根據(jù)需要自動(dòng)添加到池中,臨時(shí)表空間池在MySQL正常關(guān)閉或中止初始化時(shí)被刪除;

  • 會(huì)話臨時(shí)表空間文件擴(kuò)展名為 .ibt ;

  • 系統(tǒng)變量 innodb_temp_tablespaces_dir 可以指定會(huì)話臨時(shí)表空間的位置。默認(rèn)數(shù)據(jù)目錄下的 #innodb_temp 目錄(開頭的 # 號(hào)是為了避免與數(shù)據(jù)庫目錄命名沖突),如果無法創(chuàng)建臨時(shí)表空間池,服務(wù)器則拒絕啟動(dòng);

# 數(shù)據(jù)目錄下的臨時(shí)表空間目錄,以#開頭就是為了與真實(shí)目錄名稱起沖突
root@yudukai:/var/lib/mysql# cd /var/lib/mysql/#innodb_temp 

# 自動(dòng)創(chuàng)建的臨時(shí)表空間
root@yudukai:/var/lib/mysql/#innodb_temp# ls
temp_10.ibt  temp_1.ibt  temp_2.ibt  temp_3.ibt  temp_4.ibt  temp_5.ibt  temp_6.ibt  temp_7.ibt  temp_8.ibt  temp_9.ibt

默認(rèn)會(huì)創(chuàng)建10個(gè)會(huì)話臨時(shí)表空間。

外部臨時(shí)表和內(nèi)部臨時(shí)表分別保存在不同的表空間中。

臨時(shí)表空間類似于通用表空間,每個(gè)臨時(shí)表空間中可以保存多個(gè)臨時(shí)表中的數(shù)據(jù)。

并不是說,10個(gè)臨時(shí)表空間只能支持5個(gè)會(huì)話。只是一個(gè)會(huì)話使用了兩個(gè)臨時(shí)表空間而已,一個(gè)表空間里面其實(shí)可以保存很多個(gè)臨時(shí)表,支持很多會(huì)話。

全局臨時(shí)表空間的作用?

全局臨時(shí)表空間存儲(chǔ)對用戶創(chuàng)建的臨時(shí)表所做的更改,以便以后回滾操作

全局臨時(shí)表空間的數(shù)據(jù)存在哪里?

系統(tǒng)變量 innodb_temp_data_file_path 指定了全局臨時(shí)表空間數(shù)據(jù)文件的相對路徑、名稱、大小和屬性。如果沒有指定,則默認(rèn)在系統(tǒng)表空間目錄(系統(tǒng)變量innodb_data_home_dir 指定的目錄)中創(chuàng)建,默認(rèn)名為 ibtmp1 ,初始文件大小略大于12MB

# 數(shù)據(jù)目錄
root@yudukai:/var/lib/mysql# ll
total 92932
# ... 省略
-rw-r----- 1 mysql mysql 12582912 10月 30 12:08 ibtmp1 # 全局臨時(shí)表空間
# ... 省略

全局臨時(shí)表空間在正常關(guān)閉或中止初始化時(shí)被刪除,并在每次啟動(dòng)服務(wù)器時(shí)重新創(chuàng)建,如果無法創(chuàng)建全局臨時(shí)表空間,則拒絕啟動(dòng);如果服務(wù)器意外停止,重啟服務(wù)器時(shí)會(huì)自動(dòng)刪除并重新創(chuàng)建全局臨時(shí)表空間。

總結(jié):

磁盤上的臨時(shí)表數(shù)據(jù)存儲(chǔ)在臨時(shí)表空間中,臨時(shí)表空間分為兩種分別是:

  • 會(huì)話臨時(shí)表空間( session temporary tablespaces ),默認(rèn)數(shù)據(jù)目錄下的#innodb_temp 目錄中
  • 全局臨時(shí)表空間( global temporary tablespace ),默認(rèn)在數(shù)據(jù)目錄下中創(chuàng)建,名為ibtmp1

怎么查看全局臨時(shí)表空間的信息和大小?

可以通過 INFORMATION_SCHEMA.FILES 查看全局臨時(shí)表空間的元數(shù)據(jù):

mysql> SELECT * FROM INFORMATION_SCHEMA.FILES WHERE 
    -> TABLESPACE_NAME='innodb_temporary'\G
*************************** 1. row ***************************
             FILE_ID: 4294967293
           FILE_NAME: ./ibtmp1
           FILE_TYPE: TEMPORARY
     TABLESPACE_NAME: innodb_temporary
       TABLE_CATALOG: 
        TABLE_SCHEMA: NULL
          TABLE_NAME: NULL
  LOGFILE_GROUP_NAME: NULL
LOGFILE_GROUP_NUMBER: NULL
              ENGINE: InnoDB
       FULLTEXT_KEYS: NULL
        DELETED_ROWS: NULL
        UPDATE_COUNT: NULL
        FREE_EXTENTS: 2
       TOTAL_EXTENTS: 12
         EXTENT_SIZE: 1048576
        INITIAL_SIZE: 12582912
        MAXIMUM_SIZE: NULL
     AUTOEXTEND_SIZE: 67108864
       CREATION_TIME: NULL
    LAST_UPDATE_TIME: NULL
    LAST_ACCESS_TIME: NULL
        RECOVER_TIME: NULL
 TRANSACTION_COUNTER: NULL
             VERSION: NULL
          ROW_FORMAT: NULL
          TABLE_ROWS: NULL
      AVG_ROW_LENGTH: NULL
         DATA_LENGTH: NULL
     MAX_DATA_LENGTH: NULL
        INDEX_LENGTH: NULL
           DATA_FREE: 6291456
         CREATE_TIME: NULL
         UPDATE_TIME: NULL
          CHECK_TIME: NULL
            CHECKSUM: NULL
              STATUS: NORMAL
               EXTRA: NULL
1 row in set (0.00 sec)

mysql> 

要檢查全局臨時(shí)表空間數(shù)據(jù)文件的大小,可以查詢 INFORMATION_SCHEMA.FILES 中的具體字段

mysql> SELECT FILE_NAME, TABLESPACE_NAME, ENGINE, INITIAL_SIZE, 
    -> TOTAL_EXTENTS*EXTENT_SIZE AS TotalSizeBytes, DATA_FREE, MAXIMUM_SIZE FROM 
    -> INFORMATION_SCHEMA.FILES WHERE TABLESPACE_NAME = 'innodb_temporary'\G
*************************** 1. row ***************************
      FILE_NAME: ./ibtmp1           # 全局表空間數(shù)據(jù)文件名
TABLESPACE_NAME: innodb_temporary   # 全局表空間名
         ENGINE: InnoDB             # 存儲(chǔ)引擎
   INITIAL_SIZE: 12582912           # 初始化的大小
 TotalSizeBytes: 12582912
      DATA_FREE: 6291456            # 可用容量
   MAXIMUM_SIZE: NULL               # 最大允許擴(kuò)容的容量
1 row in set (0.00 sec)

mysql> 

默認(rèn)情況下,全局臨時(shí)表空間數(shù)據(jù)文件會(huì)自動(dòng)擴(kuò)展并根據(jù)需要增加大小,要確定全局臨時(shí)表空間數(shù)據(jù)文件是否自動(dòng)擴(kuò)展,可以檢查 innodb_temp_data_file_path 變更設(shè)置:

mysql> SELECT @@innodb_temp_data_file_path;
+------------------------------+
| @@innodb_temp_data_file_path |
+------------------------------+
| ibtmp1:12M:autoextend        |
+------------------------------+
1 row in set (0.00 sec)

mysql> 

可以通過 INFORMATION_SCHEMA.FILES 查看全局臨時(shí)表空間的元數(shù)據(jù)

全局臨時(shí)表空間數(shù)據(jù)文件的大小可以設(shè)置嗎?

可以通過系統(tǒng)變量 innodb_temp_data_file_path 指定最大文件大小,并重新啟動(dòng)服務(wù)器,語法與配置系統(tǒng)表空間文件相同

# mysqld節(jié)點(diǎn)
[mysqld]
innodb_temp_data_file_path=ibtmp1:12M:autoextend:max:500M

到此這篇關(guān)于MySQL通用臨時(shí)表空間的具體使用的文章就介紹到這了,更多相關(guān)MySQL通用臨時(shí)表空間內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論

金湖县| 翁牛特旗| 钟山县| 苍山县| 孟村| 大同市| 依兰县| 德州市| 南乐县| 宜城市| 舞钢市| 萝北县| 霍邱县| 福鼎市| 章丘市| 潜江市| 临猗县| 星座| 井陉县| 天津市| 若羌县| 夹江县| 无棣县| 长海县| 得荣县| 如东县| 岳池县| 乌海市| 错那县| 桓台县| 和硕县| 奉化市| 白沙| 乐平市| 绵阳市| 正蓝旗| 灵宝市| 黑山县| 博兴县| 兴仁县| 焉耆|