數據庫的數據存放路徑:
[root@ren7 mysql]# pwd /var/lib/mysql [root@ren7 mysql]# ls aria_log.00000001 ibdata1 multi-master.info ren test1 aria_log_control ib_logfile0 mysql ren7.err test2 help ib_logfile1 mysql.sock ren7.pid yan ib_buffer_pool ibtmp1 performance_schema tc.log
配置文件的路徑:
[root@ren7 ~]# vim /etc/my.cnf.d/server.cnf
如果我們想要查看mysql的某些屬性或狀態,我們可以查看mysql的變量,我們也可以通過改變這些變量的值,來設置mysql的工作屬性,我們可以把mysql變量理解成mysql的參數或者屬性值。
一、mysql中變量的分類
mysql中的變量分為系統變量與狀態變量
系統變量:配置了mysql的運行環境屬性
狀態變量:顯示了mysql運行過程中的狀態信息
系統變量從作用域划分,又可以分為全局變量和會話變量
全局級別的變量:global variables,作用域為整個mysql服務器
會話級別的變量:session variables,作用域為當前會話
我們可以通過修改這些系統變量達到設置mysql屬性的目的
狀態變量也分為全局級別與會話級別,但是用戶無法設置狀態變量,只能查看
二、查看變量
1、配置文件參數
/etc/my.cnf.d/server.cnf
獲取可選參數列表:
mysqld --verbose --help
2、獲取運行中的mysql進程使用各服務器參數及其值
MariaDB [(none)]> show global variables; #全局變量
MariaDB [(none)]> show session variables; #會話變量(或者:show variables;)
note:
其中有些參數支持運行時更改,會立即生效,有些參數不支持,且只能通過修改配置文件,並且重啟服務才能生效;
有些參數作用域是全局的,且不可以改變,有些可以為用戶提供單獨的設置。
3、根據變量名查看變量值
查看所有跟“版本”相關的屬性值:
MariaDB [ren]> show global variables like '%version%'; +-------------------------+----------------------------------+ | Variable_name | Value | +-------------------------+----------------------------------+ | innodb_version | 5.7.27 | | protocol_version | 10 | | slave_type_conversions | | | version | 10.2.26-MariaDB | | version_comment | MariaDB Server | | version_compile_machine | x86_64 | | version_compile_os | Linux | | version_malloc_library | system | | version_ssl_library | OpenSSL 1.0.2k-fips 26 Jan 2017 | | wsrep_patch_version | wsrep_25.24 | +-------------------------+----------------------------------+ 10 rows in set (0.00 sec)
查看字符集相關的全局設置:
MariaDB [ren]> show global variables where variable_name like '%character%'; +--------------------------+----------------------------+ | Variable_name | Value | +--------------------------+----------------------------+ | character_set_client | latin1 | | character_set_connection | latin1 | | character_set_database | latin1 | | character_set_filesystem | binary | | character_set_results | latin1 | | character_set_server | latin1 | | character_set_system | utf8 | | character_sets_dir | /usr/share/mysql/charsets/ | +--------------------------+----------------------------+
查看某些日志是否開啟或關閉: MariaDB [ren]> show global variables where variable_name like '%log%' and value='on'; +-----------------------------------+-------+ | Variable_name | Value | +-----------------------------------+-------+ | binlog_annotate_row_events | ON | | binlog_optimize_thread_scheduling | ON | | innodb_log_checksums | ON | | innodb_log_compressed_pages | ON | | innodb_log_optimize_ddl | ON | | log_slow_admin_statements | ON | | log_slow_slave_statements | ON | | relay_log_purge | ON | | sql_log_bin | ON | +-----------------------------------+-------+
4、另一種查看單個全局系統變量或者會話系統變量的語法(需要准確的指明變量名稱)
格式:SELECT @@[global.|session.]system_var_name
查看全局系統變量pid_file的值:
MariaDB [ren]> select @@global.pid_file; +-------------------------+ | @@global.pid_file | +-------------------------+ | /var/lib/mysql/ren7.pid | +-------------------------+
查看會話變量warning_count的值:
MariaDB [ren]> select @@session.warning_count; +-------------------------+ | @@session.warning_count | +-------------------------+ | 0 | +-------------------------+
5、查詢mysql運行中的統計信息或狀態數據(查看狀態變量)
MariaDB [ren]> show status;
狀態變量:用來保存mysql運行中的統計數據的變量
show global status;
show session status;
三、修改變量值/設定變量值
修改數據庫變量的方法:
1、運行時修改對應的變量:
運行時修改,修改是否立即生效取決於修改的變量類型:
(1)運行時修改global級別的變量,對修改之前建立的會話沒有影響,僅對修改后新建立的會話有效;
(2)運行時修改session級別的變量,僅對當前會話有效,且立即生效;如果想要使設定永久有效,需要設置配置文件。
可以通過set命令,修改運行時的對應的變量:
MariaDB [ren]> select @@session.autocommit; +----------------------+ | @@session.autocommit | +----------------------+ | 1 | +----------------------+ 1 row in set (0.00 sec) MariaDB [ren]> set @@session.autocommit=0; Query OK, 0 rows affected (0.00 sec) MariaDB [ren]> select @@session.autocommit; +----------------------+ | @@session.autocommit | +----------------------+ | 0 | +----------------------+ 1 row in set (0.00 sec)
設置系統變量的語法:
SET GLOBAL var_name=value;
SET @@GLOBAL.var_name-value;
SET SESSION var_name=value;
SET @@SESSION.var_name=value;
不指定級別表示默認設置會話級別的變量:SET var_name=value;
2、通過配置文件修改:需重啟后生效,但是永久有效
四、查看表狀態
MariaDB [ren]> show table status like 'students'\G; *************************** 1. row *************************** Name: students Engine: InnoDB Version: 10 Row_format: Dynamic Rows: 15 Avg_row_length: 1092 Data_length: 16384 Max_data_length: 0 Index_length: 32768 Data_free: 0 Auto_increment: 21 Create_time: 2019-09-01 14:58:39 Update_time: NULL Check_time: NULL Collation: utf8_general_ci Checksum: NULL Create_options: Comment:
標識 說明 Name 表名 Engine 表的存儲引擎類型,在舊版本中,該列的名字叫 Type , 而不是 Engine。 Row_format 行的格式。對於 MyISAM 表,可選的值為 Dynamic、Fixed或者 Compressed。 Dynamic 的長度是可變的,一般包含可變長度的字段,如 VARCHAR 或 BLOB。 Fixed 的行長度則是固定的,只包含固定長度的列,如 CHAR 和 INTEGER。 Compressed 的行則只在壓縮表中存在。 Rows 表中的行數。對於 MyISAM 和其他一些存儲引擎,該值是精確的,但對於 InnoDB,該值是估計值。 Avg_row_length 平均每行包含的字節數 Data_length 表數據大小(以字節為單位) Max_data_length 表數據的最大容量,該值和存儲引擎有關。 Index_length 索引的大小(以字節為單位) Data_free 對於 MyISAM 表,表示已分配但目前沒有使用的空間。這部分空間包括了之前刪除的行,以及后續可以被 INSERT 利用到的空間。 Auto_increment 下一個 AUTO_INCREMENT 的值 Create_time 表的創建時間 Update_time 表數據的最后修改時間 Check_time 使用 CHECK TABLE 命令或者 myisamchk 工具最后一次檢查表的時間。 Collation 表的默認字符集和字符列排列規則 Checksum 如果啟用,保存的是整個表的實時校驗和。 Create_options 創建表時的其他選項 Comment 該列包含了一些其他的額外信息。對於 MyISAM 表,保存的是表在創建時帶的注釋。對於 InnoDB 表,則保存的是 InnoDB 表空間的剩余空間信息。如果是一個視圖,則該列包含 “VIEW” 的文本字樣。 Max_index_length 最大索引長度 Temporary 是否是臨時表