1. 程式人生 > >information_schema系列三(文件,變量)

information_schema系列三(文件,變量)

兩張 rec sql 系統 ima counter end ODB 包含

這個系列的文章主要是為了能夠讓自己了解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 STATUS和SESSION_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:其實關於表空間文件那邊也應該擴充一下,以後可以學習一下分享出來,今天有點晚了。就分享這麽多吧

information_schema系列三(文件,變量)