MySQL的一些命令

    記錄一些MySQL的命令,包括一些查看和設置參數之類的命令。注意,這裏使用table_name代表的表名。例如表名是test,則將'table_name'替換成'test',將table_name替換成test。

1、設置隔離級別

SET [SESSION | GLOBAL] TRANSACTION ISOLATION LEVEL {READ UNCOMMITTED | READ COMMITTED | REPEATABLE READ | SERIALIZABLE}

1、範圍:

  • session:會話級別,該設置只在當前會話中生效;
  • global:全局,修改整個庫的配置。

2、級別:

  • READ UNCOMMITTED:讀未提交,可以讀到其他事務沒有提及的數據,可能產生髒讀、不可重複讀、幻讀;
  • READ COMMITTED:讀已提交,也叫不可重複讀。只會讀其他事務提交過的數據,但是如果事務處理過程中,其他事務修改並提交了本事務相關的數據,會出現前後兩次查詢查到不同數據的情況,即不可重複讀。可能產生不可重複讀、幻讀;
  • REPEATABLE READ:可重複讀,MySQL的默認級別,不允許其他事務修改當前事務正在使用的行,所以不會出現不可重複讀的問題,但是可能產生幻讀。但是InnoDB通過MVCC(多版本併發控制)避免了幻讀的問題;
  • SERIALIZABLE:串行化,強制要求全部事務串行執行,但是會導致非常嚴重的鎖爭用問題,併發性能極差。

2、查看錶狀態

SHOW TABLE STATUS LIKE 'table_name'

示例:show table status like 'vendor'

結果及字段說明:

字段名 字段值 說明
Name vendor 表名
Engine InnoDB 存儲引擎
Version 10 版本
Row_format Dynamic 行的格式
Rows 781 表中的行數
Avg_row_length 608 平均每行的字節數
Data_length 475136 表的數據大小,字節數
Max_data_length 0 表數據的最大容量,和存儲引擎有關
Index_length 0 索引的大小,字節數
Data_free 4194304 已分配但未使用的行
Auto_increment 4642 下一個auto_increment的值
Create_time 31/10/2019 17:54:58 表創建時間
Update_time 21/11/2019 18:53:15 表數據最新的更新時間
Check_time   使用check table最後一次檢查的時間
Collation utf8_general_ci 表的默認字符集和字符列排序規則
Checksum   如果啓用,會保整個表的實時校驗和
Create_options   創建表時指定的其他選項
Comment 供應商基礎信息表 備註信息

3、轉換表的引擎

    轉換表的存儲引擎的有2種常見方法:

1、直接修改:

 ALTER TABLE table_name ENGINE = InnoDB;

2、導出數據,創建新表,導入數據:

創建新表時指定引擎:

CREATE TABLE `test_table` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(20) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

4、查看創建表的語句

SHOW CREATE TABLE table_name

5、慢查詢日誌

1、開啓慢查詢日誌:

SET PROFILING = 1;

2、查詢全部日誌:

SHOW PROFILES;

    執行結果:

3、根據變化查詢特定查詢語句的詳情:

SHOW PROFILE FOR QUERY 5;

    結果及部分說明:

Status Duration 字段說明
starting 0.000142  
checking permissions 0.000084 檢查權限;遍歷數據庫下所有的frm文件,並獲取相關信息
Opening tables 0.000103  嘗試打開一個表。這個過程會很快,除非受到干擾,比如實際線程數遠高於表支持的併發數
init 0.000101  
System lock 0.000094 一個線程想請求或者正在等待一個表的內部或者外部的系統鎖
optimizing 0.000085  
statistics 0.000087  
preparing 0.000093  
Creating tmp table 0.000106 創建臨時表
Sorting result 0.000083  
executing 0.000255  
Sending data 0.000141 從這個臨時表,把數據發送給用戶
Creating sort index 0.000134  
end 0.000084  
query end 0.000083  
removing tmp table 0.000087  
query end 0.000089  
closing tables 0.000081  
removing tmp table 0.000082  
closing tables 0.000081  
freeing items 0.000095  
cleaning up 0.000094  

    備註:可能還有些這個查詢不會涉及到的操作沒有展示出來,比如 Coping to tmp table。

4、查詢語句在其他方面的開銷

SHOW PROFILE ALL FOR QUERY 5;
SHOW PROFILE CPU FOR QUERY 5;
SHOW PROFILE BLOCK IO FOR QUERY 5;

    ALL指的是顯示全部信息,這些信息包括:

  • BLOCK IO                           顯示塊IO相關開銷 
  • CONTEXT SWITCHES      上下文切換相關開銷 
  • CPU                                    顯示CPU相關開銷信息 
  • IPC                                      顯示發送和接收相關開銷信息 
  • MEMORY                            顯示內存相關開銷信息 
  • PAGE FAULTS                    顯示頁面錯誤相關開銷信息 
  • SOURCE                            顯示和Source_function,Source_file,Source_line相關的開銷信息 
  • SWAPS                               顯示交換次數相關開銷的信息 

6、查詢計數器

1、查詢當前連接的會話級別的計數器:

SHOW STATUS;

2、查詢服務器級別的從服務啓動開始計時的計數器:

SHOW GLOBAL STATUS;

3、查詢特定的計數器:

SHOW STATUS WHERE Variable_name LIKE 'Com%';
SHOW STATUS LIKE 'Com%';

    兩種寫法都可以。

    show status大部分結果都是計數器,可以統計一些操作(例如讀索引)的頻繁程度,但是無法提供具體的時間。

4、常用的會話級操作:

SHOW  STATUS WHERE Variable_name LIKE 'Handler%' OR Variable_name LIKE 'Created%';

    結果:

Variable_name Value
Created_tmp_disk_tables 0
Created_tmp_files 25500
Created_tmp_tables 0
Handler_commit 0
Handler_delete 0
Handler_discover 0
Handler_external_lock 0
Handler_mrr_init 0
Handler_prepare 0
Handler_read_first 0
Handler_read_key 0
Handler_read_last 0
Handler_read_next 0
Handler_read_prev 0
Handler_read_rnd 0
Handler_read_rnd_next 0
Handler_rollback 0
Handler_savepoint 0
Handler_savepoint_rollback 0
Handler_update 0
Handler_write 0

7、字符集和校對規則

1、查看字符集

show characterset;

2、查看校對規則

show collation;

3、設置字符集

CREATE TABLE my_table(id INT, name char(3)) DEFAULT CHARSET=utf-8;

 

 

 

 

發佈了95 篇原創文章 · 獲贊 15 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章