mysql基礎之數據庫變量(參數)管理


數據庫的數據存放路徑:
[
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                 的行長度則是固定的,只包含固定長度的列,如 CHARINTEGER。 
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            是否是臨時表

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM