1. 程式人生 > >information_schema系列三(檔案,變數)

information_schema系列三(檔案,變數)

 

information_schema系列三(檔案,變數)

  這個系列的文章主要是為了能夠讓自己瞭解MySQL5.7的一些系統表,統一做一下備註和使用,也希望分享出來讓大家能夠有一點點的受益。 1:FILES 這張表提供了有關在MySQL的表空間中的資料儲存的檔案的資訊   我們剛建立一張表,現在來看一下這張表,我新建了一張maxiangqian名字的表,然後進行查詢。 在5.7.8以後版本FILES就是為InnoDB 的資料檔案提供記錄。在MySQL叢集該表還提供了有關在MySQL叢集磁碟資料表儲存的檔案的資訊。 這個表的資料是從InnoDB in-memory中拉取出來的,所以說這張表本身也是一個記憶體表,每次重啟重新進行拉取。也就是我們下面要說的INNODB_SYS_DATAFILES這張表。還要注意一點的是這張表包含有臨時表的資訊,所以說和SYS_DATAFILES 這張表是不能夠對等的,還是要從INNODB_SYS_DATAFILES看。如果undo表空間也配置是InnoDB 的話,那麼也是會被記錄下來的。 老規矩貼一下官網的全表的解釋:中間show name是J結合官方解釋後我自己的理解  
INFORMATION_SCHEMA Name SHOW Name Remarks
FILE_ID 檔案的編號 MySQL extension
FILE_NAME 檔名 MySQL extension
FILE_TYPE 表空間檔案型別 MySQL extension
TABLESPACE_NAME 表空間名 MySQL extension
TABLE_CATALOG   MySQL extension
TABLE_SCHEMA   MySQL extension
TABLE_NAME   MySQL extension
LOGFILE_GROUP_NAME   MySQL extension
LOGFILE_GROUP_NUMBER   MySQL extension
ENGINE 預設引擎 MySQL extension
FULLTEXT_KEYS   MySQL extension
DELETED_ROWS   MySQL extension
UPDATE_COUNT   MySQL extension
FREE_EXTENTS 在當前的資料檔案的可用空間 MySQL extension
TOTAL_EXTENTS 當前檔案佔用的空間 MySQL extension
EXTENT_SIZE page size如果是4,8,16KB的話就是1M。如果是32k的話就是2M,64k的話就是4M,innodb_page_size記錄頁大小,其他的時候,預設不會記錄這個大小。 MySQL extension
INITIAL_SIZE 檔案初始大小,以位元組為單位 MySQL extension
MAXIMUM_SIZE 允許的檔案最大值,一般情況下這個值是NULL MySQL extension
AUTOEXTEND_SIZE 自增長的值,可以通過兩個值設定innodb_data_file_path ,innodb_temp_data_file_path MySQL extension
CREATION_TIME   MySQL extension
LAST_UPDATE_TIME   MySQL extension
LAST_ACCESS_TIME   MySQL extension
RECOVER_TIME   MySQL extension
TRANSACTION_COUNTER   MySQL extension
VERSION   MySQL extension
ROW_FORMAT   MySQL extension
TABLE_ROWS   MySQL extension
AVG_ROW_LENGTH   MySQL extension
DATA_LENGTH   MySQL extension
MAX_DATA_LENGTH   MySQL extension
INDEX_LENGTH   MySQL extension
DATA_FREE 可用空間 MySQL extension
CREATE_TIME 建立時間 MySQL extension
UPDATE_TIME 更改時間 MySQL extension
CHECK_TIME   MySQL extension
CHECKSUM   MySQL extension
STATUS 預設這個值是NOMAL,當為 IMPORTING時候就表示不可用 MySQL extension
EXTRA   MySQL extension
  一般情況下我們直接篩選出來查詢還是比較好的,通過下面的語句,其他的列一般是不會記錄資訊的,官網也沒給太多的解釋:
SELECT FILE_ID, FILE_NAME, FILE_TYPE, TABLESPACE_NAME, FREE_EXTENTS, TOTAL_EXTENTS, EXTENT_SIZE, INITIAL_SIZE, MAXIMUM_SIZE, AUTOEXTEND_SIZE, DATA_FREE, STATUS ENGINE FROM INFORMATION_SCHEMA.FILES \G

2:INNODB_SYS_DATAFILES

我們來重新查一下這個記錄資訊:   很容易看出來這張表就是記錄的表的檔案儲存的位置和表空間的一個對應關係。這個就是相當容易理解了,就不多做解釋了。 不過有一點我們要記住,這個表的SPACE是和FILES這張系統表的TABLESPACE_NAME這個列的最後一個值是相對應的。可以方便我們以後查閱 3:GLOBAL_STATUS 和 SESSION_STATUS  這張表預設是提供有關伺服器狀態變數的資訊來用的一般情況是不啟用的,我們可以通過以下的方法來檢視資訊   SHOW GLOBAL STATUS 和GLOBAL_STATUS 是對應的 SHOW SESSION STATUSSESSION_STATUS 是對應的 貼一下列,由於兩個表的列是一樣的,所以說貼出來一個就好了  
INFORMATION_SCHEMA Name SHOW Name Remarks
VARIABLE_NAME 變數名  
VARIABLE_VALUE 變數值  
  詳細的引數我就不再講了,因為我也不懂啊。後面慢慢補上來。 4:GLOBAL_VARIABLES 和SESSION_VARIABLES 這兩張系統表爺放在了一起,主要原因和上面兩張是一樣的,結構相同,而且可以通過其他方式查詢,所以一般情況下是不啟動的。 我們可以通過以下的方式進行查詢: SHOW GLOBAL VARIABLES 對應的是GLOBAL_VARIABLES SHOW SESSION VARIABLES 對應的就是SESSION_VARIABLES   下面給出一條記錄做個對比看一下:   我們可以看到,其實一個是例項級別的引數,一個是會話級別的引數。要記住一點就是 我們平時用的show variables 是等效與 show session variables. 在這裡我們也順便學習一下,全域性變數和會話變數的區別: 系統變數又分為全域性變數與會話變數。全域性變數在MYSQL啟動的時候由伺服器自動將它們初始化為預設值,這些預設值可以通過更改my.cnf這個檔案來更改。   會話變數在每次建立一個新的連線的時候,由MYSQL來初始化。MYSQL會將當前所有全域性變數的值複製一份。來做為會話變數。(也就是說,如果在建立會話以後,沒有手動更改過會話變數與全域性變數的值,那所有這些變數的值都是一樣的。)   全域性變數與會話變數的區別就在於,對全域性變數的修改會影響到整個伺服器,但是對會話變數的修改,只會影響到當前的會話(也就是當前的資料庫連線)。我們可以利用show session variables;語句將所有的會話變數輸出 以上關於變數的這四張表其實也是記憶體表,每次系統啟動預設從my.cnf讀取生成,如果my.cnf沒有配置的話就會使用預設值。 PS:其實關於表空間檔案那邊也應該擴充一下,以後可以學習一下分享出來,今天有點晚了。就分享這麼多吧 這個系列的文章主要是為了能夠讓自己瞭解MySQL5.7的一些系統表,統一做一下備註和使用,也希望分享出來讓大家能夠有一點點的受益。 1:FILES 這張表提供了有關在MySQL的表空間中的資料儲存的檔案的資訊   我們剛建立一張表,現在來看一下這張表,我新建了一張maxiangqian名字的表,然後進行查詢。 在5.7.8以後版本FILES就是為InnoDB 的資料檔案提供記錄。在MySQL叢集該表還提供了有關在MySQL叢集磁碟資料表儲存的檔案的資訊。 這個表的資料是從InnoDB in-memory中拉取出來的,所以說這張表本身也是一個記憶體表,每次重啟重新進行拉取。也就是我們下面要說的INNODB_SYS_DATAFILES這張表。還要注意一點的是這張表包含有臨時表的資訊,所以說和SYS_DATAFILES 這張表是不能夠對等的,還是要從INNODB_SYS_DATAFILES看。如果undo表空間也配置是InnoDB 的話,那麼也是會被記錄下來的。 老規矩貼一下官網的全表的解釋:中間show name是J結合官方解釋後我自己的理解  
INFORMATION_SCHEMA Name SHOW Name Remarks
FILE_ID 檔案的編號 MySQL extension
FILE_NAME 檔名 MySQL extension
FILE_TYPE 表空間檔案型別 MySQL extension
TABLESPACE_NAME 表空間名 MySQL extension
TABLE_CATALOG   MySQL extension
TABLE_SCHEMA   MySQL extension
TABLE_NAME   MySQL extension
LOGFILE_GROUP_NAME   MySQL extension
LOGFILE_GROUP_NUMBER   MySQL extension
ENGINE 預設引擎 MySQL extension
FULLTEXT_KEYS   MySQL extension
DELETED_ROWS   MySQL extension
UPDATE_COUNT   MySQL extension
FREE_EXTENTS 在當前的資料檔案的可用空間 MySQL extension
TOTAL_EXTENTS 當前檔案佔用的空間 MySQL extension
EXTENT_SIZE page size如果是4,8,16KB的話就是1M。如果是32k的話就是2M,64k的話就是4M,innodb_page_size記錄頁大小,其他的時候,預設不會記錄這個大小。 MySQL extension
INITIAL_SIZE 檔案初始大小,以位元組為單位 MySQL extension
MAXIMUM_SIZE 允許的檔案最大值,一般情況下這個值是NULL MySQL extension
AUTOEXTEND_SIZE 自增長的值,可以通過兩個值設定innodb_data_file_path ,innodb_temp_data_file_path MySQL extension
CREATION_TIME   MySQL extension
LAST_UPDATE_TIME   MySQL extension
LAST_ACCESS_TIME   MySQL extension
RECOVER_TIME   MySQL extension
TRANSACTION_COUNTER   MySQL extension
VERSION   MySQL extension
ROW_FORMAT   MySQL extension
TABLE_ROWS   MySQL extension
AVG_ROW_LENGTH   MySQL extension
DATA_LENGTH   MySQL extension
MAX_DATA_LENGTH   MySQL extension
INDEX_LENGTH   MySQL extension
DATA_FREE 可用空間 MySQL extension
CREATE_TIME 建立時間 MySQL extension
UPDATE_TIME 更改時間 MySQL extension
CHECK_TIME   MySQL extension
CHECKSUM   MySQL extension
STATUS 預設這個值是NOMAL,當為 IMPORTING時候就表示不可用 MySQL extension
EXTRA   MySQL extension
  一般情況下我們直接篩選出來查詢還是比較好的,通過下面的語句,其他的列一般是不會記錄資訊的,官網也沒給太多的解釋:
SELECT FILE_ID, FILE_NAME, FILE_TYPE, TABLESPACE_NAME, FREE_EXTENTS, TOTAL_EXTENTS, EXTENT_SIZE, INITIAL_SIZE, MAXIMUM_SIZE, AUTOEXTEND_SIZE, DATA_FREE, STATUS ENGINE FROM INFORMATION_SCHEMA.FILES \G

2:INNODB_SYS_DATAFILES

我們來重新查一下這個記錄資訊:   很容易看出來這張表就是記錄的表的檔案儲存的位置和表空間的一個對應關係。這個就是相當容易理解了,就不多做解釋了。 不過有一點我們要記住,這個表的SPACE是和FILES這張系統表的TABLESPACE_NAME這個列的最後一個值是相對應的。可以方便我們以後查閱 3:GLOBAL_STATUS 和 SESSION_STATUS  這張表預設是提供有關伺服器狀態變數的資訊來用的一般情況是不啟用的,我們可以通過以下的方法來檢視資訊   SHOW GLOBAL STATUS 和GLOBAL_STATUS 是對應的 SHOW SESSION STATUSSESSION_STATUS 是對應的 貼一下列,由於兩個表的列是一樣的,所以說貼出來一個就好了  
INFORMATION_SCHEMA Name SHOW Name Remarks
VARIABLE_NAME 變數名  
VARIABLE_VALUE 變數值  
  詳細的引數我就不再講了,因為我也不懂啊。後面慢慢補上來。 4:GLOBAL_VARIABLES 和SESSION_VARIABLES 這兩張系統表爺放在了一起,主要原因和上面兩張是一樣的,結構相同,而且可以通過其他方式查詢,所以一般情況下是不啟動的。 我們可以通過以下的方式進行查詢: SHOW GLOBAL VARIABLES 對應的是GLOBAL_VARIABLES SHOW SESSION VARIABLES 對應的就是SESSION_VARIABLES   下面給出一條記錄做個對比看一下:   我們可以看到,其實一個是例項級別的引數,一個是會話級別的引數。要記住一點就是 我們平時用的show variables 是等效與 show session variables. 在這裡我們也順便學習一下,全域性變數和會話變數的區別: 系統變數又分為全域性變數與會話變數。全域性變數在MYSQL啟動的時候由伺服器自動將它們初始化為預設值,這些預設值可以通過更改my.cnf這個檔案來更改。   會話變數在每次建立一個新的連線的時候,由MYSQL來初始化。MYSQL會將當前所有全域性變數的值複製一份。來做為會話變數。(也就是說,如果在建立會話以後,沒有手動更改過會話變數與全域性變數的值,那所有這些變數的值都是一樣的。)   全域性變數與會話變數的區別就在於,對全域性變數的修改會影響到整個伺服器,但是對會話變數的修改,只會影響到當前的會話(也就是當前的資料庫連線)。我們可以利用show session variables;語句將所有的會話變數輸出 以上關於變數的這四張表其實也是記憶體表,每次系統啟動預設從my.cnf讀取生成,如果my.cnf沒有配置的話就會使用預設值。 PS:其實關於表空間檔案那邊也應該擴充一下,以後可以學習一下分享出來,今天有點晚了。就分享這麼多吧