MySQL查看數(shù)據(jù)庫(kù)狀態(tài)命令詳細(xì)講解
前言
數(shù)據(jù)查詢語(yǔ)言(DQL: Data Query Language):其語(yǔ)句,也稱為“數(shù)據(jù)檢索語(yǔ)句”,用以從表中獲得數(shù)據(jù),確定數(shù)據(jù)怎樣在應(yīng)用程序給出。保留字SELECT是DQL(也是所有SQL)用得最多的動(dòng)詞,其他DQL常用的保留字有WHERE,ORDER BY,GROUP BY和HAVING。這些DQL保留字常與其它類型的SQL語(yǔ)句一起使用。
show status
使用SHOW STATUS語(yǔ)句能夠獲取MySQL服務(wù)器的一些狀態(tài)信息,這些狀態(tài)信息主要是MySQL數(shù)據(jù)庫(kù)的性能參數(shù)。SHOW STATUS語(yǔ)句的語(yǔ)法格式如下:
SHOW [SESSION | GLOBAL] STATUS LIKE 'status_name';
其中,SESSION表示獲取當(dāng)前會(huì)話級(jí)別的性能參數(shù),GLOBAL表示獲取全局級(jí)別的性能參數(shù),并且SESSION和GLOBAL可以省略,如果省略不寫,默認(rèn)為SESSION。status_name表示查詢的參數(shù)值。熟練掌握這些參數(shù)的使用,能夠更好地了解SQL語(yǔ)句的執(zhí)行頻率。SHOW STATUS語(yǔ)句支持的參數(shù)值
Not_flushed_key_blocks 在鍵緩存中已經(jīng)改變但是還沒(méi)被清空到磁盤上的鍵塊。 Not_flushed_delayed_rows mysql> show status; +-----------------------------------------------+--------------------------------------------------+ | Variable_name | Value | +-----------------------------------------------+--------------------------------------------------+ | Aborted_clients | 1 由于客戶沒(méi)有正確關(guān)閉連接已經(jīng)死掉,已經(jīng)放棄的連接數(shù)量| | Aborted_connects | 0 嘗試已經(jīng)失敗的MySQL服務(wù)器的連接的次數(shù) | | Binlog_cache_disk_use | 0 該狀態(tài)表示有多少個(gè)事務(wù)使用了臨時(shí)文件 | | Binlog_cache_use | 1 有多少個(gè)事物使用了ache_size來(lái)緩存未提交的事物日志 | | Binlog_stmt_cache_disk_use | 0 | | Binlog_stmt_cache_use | 0 | | Bytes_received | 248 從客戶處已經(jīng)接收到的字節(jié)數(shù) | | Bytes_sent | 185 已經(jīng)發(fā)送給所有客戶的字節(jié)數(shù) | | Com_statement | 0 每一個(gè)變量語(yǔ)句對(duì)應(yīng)的次數(shù) | | Connections | 41472 試圖連接MySQL服務(wù)器的次數(shù) | | Created_tmp_disk_tables | 0 服務(wù)器執(zhí)行語(yǔ)句時(shí)在硬盤上自動(dòng)創(chuàng)建的臨時(shí)表的數(shù)量 | | Created_tmp_files | 5 mysqld創(chuàng)建的臨時(shí)文件個(gè)數(shù) | | Created_tmp_tables | 0 當(dāng)執(zhí)行語(yǔ)句時(shí),已經(jīng)被創(chuàng)造了的隱含臨時(shí)表的數(shù)量 | | Delayed_errors | 0 用INSERT DELAYED寫入的發(fā)生某些錯(cuò)誤(可能重復(fù)鍵值)的行數(shù) | | Delayed_insert_threads | 0 正在使用的延遲插入處理器線程的數(shù)量 | | Delayed_writes | 0 用INSERT DELAYED寫入的行數(shù) | | Flush_commands | 17 執(zhí)行FLUSH命令的次數(shù) | | Handler_commit | 0 內(nèi)部COMMIT命令的個(gè)數(shù) | | Handler_delete | 0 請(qǐng)求從一張表中刪除行的次數(shù) | | Handler_discover | 0 MySQL服務(wù)器可以問(wèn)NDB CLUSTER存儲(chǔ)引擎是否知道某一名字的表 | | Handler_external_lock | 0 | | Handler_mrr_init | 0 | | Handler_prepare | 0 兩階段提交操作準(zhǔn)備階段的計(jì)數(shù)器 | | Handler_read_first | 0 請(qǐng)求讀入表中第一行的次數(shù) | | Handler_read_key | 0 請(qǐng)求數(shù)字基于鍵讀行 | | Handler_read_last | 0 | | Handler_read_next | 0 請(qǐng)求讀入基于一個(gè)鍵的一行的次數(shù) | | Handler_read_prev | 0 按照索引的順序讀取前面一行數(shù)據(jù)的請(qǐng)求的個(gè)數(shù) | | Handler_read_rnd | 0 請(qǐng)求讀入基于一個(gè)固定位置的一行的次數(shù) | | Handler_read_rnd_next | 0 讀取數(shù)據(jù)文件中下一行數(shù)據(jù)的請(qǐng)求的個(gè)數(shù) | | Handler_rollback | 0 內(nèi)部ROLLBACK命令的數(shù)量 | | Handler_savepoint | 0 在一個(gè)存儲(chǔ)引擎放置一個(gè)保存點(diǎn)的請(qǐng)求數(shù)量 | | Handler_savepoint_rollback | 0 在一個(gè)存儲(chǔ)引擎的要求回滾到一個(gè)保存點(diǎn)數(shù)目 | | Handler_update | 0 請(qǐng)求更新表中一行的次數(shù) | | Handler_write | 0 請(qǐng)求向表中插入一行的次數(shù) | | Innodb_buffer_pool_dump_status | Dumping of buffer pool not started | | Innodb_buffer_pool_load_status | Buffer pool(s) load completed at 220224 21:04:35 | | Innodb_buffer_pool_resize_status | | | Innodb_buffer_pool_pages_data | 32422 | | Innodb_buffer_pool_bytes_data | 531202048 | | Innodb_buffer_pool_pages_dirty | 0 | | Innodb_buffer_pool_bytes_dirty | 0 | | Innodb_buffer_pool_pages_flushed | 235 | | Innodb_buffer_pool_pages_free | 97929 | | Innodb_buffer_pool_pages_misc | 705 | | Innodb_buffer_pool_pages_total | 131056 | | Innodb_buffer_pool_read_ahead_rnd | 0 | | Innodb_buffer_pool_read_ahead | 23377 | | Innodb_buffer_pool_read_ahead_evicted | 0 | | Innodb_buffer_pool_read_requests | 330362716 InnoDB已經(jīng)完成的邏輯讀請(qǐng)求數(shù) | | Innodb_buffer_pool_reads | 9004 | | Innodb_buffer_pool_wait_free | 0 | | Innodb_buffer_pool_write_requests | 3783 | | Innodb_data_fsyncs | 47 | | Innodb_data_pending_fsyncs | 0 | | Innodb_data_pending_reads | 0 | | Innodb_data_pending_writes | 0 | | Innodb_data_read | 530813440 | | Innodb_data_reads | 33379 | | Innodb_data_writes | 279 | | Innodb_data_written | 4193792 至此已經(jīng)寫入的數(shù)據(jù)量(字節(jié)) | | Innodb_dblwr_pages_written | 20 | | Innodb_dblwr_writes | 10 | | Innodb_log_waits | 0 我們必須等待的時(shí)間 | | Innodb_log_write_requests | 9 日志寫請(qǐng)求數(shù) | | Innodb_log_writes | 15 向日志文件的物理寫數(shù)量 | | Innodb_os_log_fsyncs | 22 向日志文件完成的fsync()寫數(shù)量 | | Innodb_os_log_pending_fsyncs | 0 掛起的日志文件fsync()操作數(shù)量 | | Innodb_os_log_pending_writes | 0 掛起的日志文件寫操作 | | Innodb_os_log_written | 12288 寫入日志文件的字節(jié)數(shù) | | Innodb_page_size | 16384 編譯的InnoDB頁(yè)大小(默認(rèn)16KB) | | Innodb_pages_created | 42 創(chuàng)建的頁(yè)數(shù) | | Innodb_pages_read | 32380 讀取的頁(yè)數(shù) | | Innodb_pages_written | 235 寫入的頁(yè)數(shù) | | Innodb_row_lock_current_waits | 0 當(dāng)前等待的待鎖定的行數(shù) | | Innodb_row_lock_time | 0 行鎖定花費(fèi)的總時(shí)間,單位毫秒 | | Innodb_row_lock_time_avg | 0 行鎖定的平均時(shí)間,單位毫秒 | | Innodb_row_lock_time_max | 0 行鎖定的最長(zhǎng)時(shí)間,單位毫秒 | | Innodb_row_lock_waits | 0 一行鎖定必須等待的時(shí)間數(shù) | | Innodb_rows_deleted | 6 從InnoDB表刪除的行數(shù) | | Innodb_rows_inserted | 2193 插入到InnoDB表的行數(shù) | | Innodb_rows_read | 351814064 從InnoDB表讀取的行數(shù) | | Innodb_rows_updated | 0 InnoDB表內(nèi)更新的行數(shù) | | Innodb_num_open_files | 136 | | Innodb_truncated_status_writes | 0 | | Innodb_available_undo_logs | 128 | | Key_blocks_not_flushed | 0 鍵緩存內(nèi)已經(jīng)更改但還沒(méi)有清空到硬盤上的鍵的數(shù)據(jù)塊數(shù)量| | Key_blocks_unused | 53585 鍵緩存內(nèi)未使用的塊數(shù)量 | | Key_blocks_used | 3 用于關(guān)鍵字緩存的塊的數(shù)量 | | Key_read_requests | 6 請(qǐng)求從緩存讀入一個(gè)鍵值的次數(shù) | | Key_reads | 3 從磁盤物理讀入一個(gè)鍵值的次數(shù) | | Key_write_requests | 0 請(qǐng)求將一個(gè)關(guān)鍵字塊寫入緩存次數(shù) | | Key_writes | 0 將一個(gè)鍵值塊物理寫入磁盤的次數(shù) | | Last_query_cost | 0.000000 | | Last_query_partial_plans | 0 | | Locked_connects | 0 | | Max_execution_time_exceeded | 0 | | Max_execution_time_set | 0 | | Max_execution_time_set_failed | 0 | | Max_used_connections | 330 同時(shí)使用的連接的最大數(shù)目 | | Max_used_connections_time | 2022-02-24 22:07:44 | | Not_flushed_delayed_rows | 0 在INSERT DELAY隊(duì)列中等待寫入的行的數(shù)量 | | Ongoing_anonymous_transaction_count | 0 | | Open_files | 5 打開文件的數(shù)量 | | Open_streams | 0 打開流的數(shù)量(主要用于日志記載) | | Open_table_definitions | 11 緩存的.frm文件數(shù) | | Open_tables | 78 打開表的數(shù)量 | | Opened_files | 7925 系統(tǒng)打開過(guò)的文件總數(shù) | | Opened_table_definitions | 0 已緩存的.frm文件數(shù) | | Opened_tables | 0 已經(jīng)打開的表的數(shù)量 | | Qcache_free_blocks | 1 查詢緩存內(nèi)自由內(nèi)存塊的數(shù)量 | | Qcache_free_memory | 1031832 用于查詢緩存的自由內(nèi)存的數(shù)量 | | Qcache_hits | 0 查詢緩存被訪問(wèn)的次數(shù) | | Qcache_inserts | 0 加入到緩存的查詢數(shù)量 | | Qcache_lowmem_prunes | 0 由于內(nèi)存較少?gòu)木彺鎰h除的查詢數(shù)量 | | Qcache_not_cached | 236889 非緩存查詢數(shù) | | Qcache_queries_in_cache | 0 登記到緩存內(nèi)的查詢的數(shù)量 | | Qcache_total_blocks | 1 查詢緩存內(nèi)的總塊數(shù) | | Queries | 561204 被服務(wù)器執(zhí)行的語(yǔ)句個(gè)數(shù) | | Questions | 2 發(fā)往服務(wù)器的查詢的數(shù)量 | | Select_full_join | 0 | | Select_full_range_join | 0 | | Select_range | 0 | | Select_range_check | 0 | | Select_scan | 0 | | Slave_open_temp_tables | 0 | | Slow_launch_threads | 0 | | Slow_queries | 0 要花超過(guò)long_query_time時(shí)間的查詢數(shù)量 | | Sort_merge_passes | 0 | | Sort_range | 0 | | Sort_rows | 0 | | Sort_scan | 0 | | Ssl_*** | 0 用于SSL連接的變量 | | Table_locks_immediate | 123 立即獲得的表的鎖的次數(shù) | | Table_locks_waited | 0 不能立即獲得的表的鎖的次數(shù) | | Tc_log_max_pages_used | 0 日志使用的最大頁(yè)數(shù) | | Tc_log_page_size | 0 用于XA恢復(fù)日志的內(nèi)存映射實(shí)現(xiàn)的頁(yè)面大小 | | Tc_log_page_waits | 0 對(duì)于恢復(fù)日志的內(nèi)存映射實(shí)現(xiàn) | | Threads_cached | 2 線程的緩存值 | | Threads_connected | 328 當(dāng)前打開的連接的數(shù)量 | | Threads_created | 330 創(chuàng)建用來(lái)處理連接的線程數(shù) | | Threads_running | 2 不在睡眠的線程數(shù)量 | | Uptime | 42686 服務(wù)器工作了多少秒 | | Uptime_since_flush_status | 42686 最近一次使用FLUSH STATUS 的時(shí)間(以秒為單位)| # 狀態(tài)信息查詢語(yǔ)句 --查看試圖連接到MySQL(不管是否連接成功)的連接數(shù) show status like 'connections'; --查看線程緩存內(nèi)的線程的數(shù)量。 show status like 'threads_cached'; --查看當(dāng)前打開的連接的數(shù)量。 show status like 'threads_connected'; --查看查詢時(shí)間超過(guò)long_query_time秒的查詢的個(gè)數(shù)。 show status like 'slow_queries'; --查看線程數(shù) show status like 'Threads%'; Threads_connected : 這個(gè)數(shù)值指的是打開的連接數(shù). Threads_running : 這個(gè)數(shù)值指的是激活的連接數(shù),這個(gè)數(shù)值一般遠(yuǎn)低于connected數(shù)值. Threads_connected 跟show processlist結(jié)果相同,表示當(dāng)前連接數(shù)。準(zhǔn)確的來(lái)說(shuō),Threads_running是代表當(dāng)前并發(fā)數(shù) Threads_created 表示創(chuàng)建過(guò)的線程數(shù),通過(guò)查看Threads_created就可以查看MySQL服務(wù)器的進(jìn)程狀態(tài)。(MySQL服務(wù)器的線程數(shù)需要在一個(gè)合理的范圍之內(nèi),這樣才能保證MySQL服務(wù)器健康平穩(wěn)地運(yùn)行) 如果我們?cè)贛ySQL服務(wù)器配置文件中設(shè)置了thread_cache_size,當(dāng)客戶端斷開之后,服務(wù)器處理此客戶的線程將會(huì)緩存起來(lái)以響應(yīng)下一個(gè)客戶而不是銷毀(前提是緩存數(shù)未達(dá)上限)。Threads_created表示創(chuàng)建過(guò)的線程數(shù),如果發(fā)現(xiàn)Threads_created值過(guò)大的話,表明MySQL服務(wù)器一直在創(chuàng)建線程,這也是比較耗資源,可以適當(dāng)增加配置文件中thread_cache_size值,查詢服務(wù)器thread_cache_size的值: show variables like 'thread_cache_size'; # 通常mysql的最大連接數(shù)默認(rèn)是100, 最大可以達(dá)到16384。 show variables like '%max_connection%'; 查看最大連接數(shù) set global max_connections=200 SET GLOBAL innodb_lru_scan_depth=256; 影響對(duì)InnoDB緩沖池進(jìn)行刷新操作的算法和啟發(fā)式的參數(shù)。性能專家對(duì)調(diào)優(yōu)I/ o密集型工作負(fù)載感興趣。它指定了每個(gè)緩沖池實(shí)例,在緩沖池LRU頁(yè)面下列出頁(yè)面清潔線程掃描以查找要刷新的臟頁(yè)的距離。這是每秒執(zhí)行一次的后臺(tái)操作。`小于默認(rèn)值的設(shè)置通常適用于大多數(shù)工作負(fù)載`。如果值遠(yuǎn)高于必要值,可能會(huì)影響性能。只有在典型工作負(fù)載下有空閑I/O容量時(shí),才考慮增加該值。相反,如果寫密集的工作負(fù)載使I/O容量飽和,則減少該值,特別是在使用大型緩沖池的情況下。調(diào)優(yōu)innodb_lru_scan_depth時(shí),從一個(gè)較低的值開始,向上配置,目標(biāo)是很少看到零空閑頁(yè)面。另外,當(dāng)改變緩沖池實(shí)例數(shù)時(shí),可以考慮調(diào)整innodb_lru_scan_depth,因?yàn)閕nnodb_lru_scan_depth * innodb_buffer_pool_instances定義了頁(yè)面清理線程每秒執(zhí)行的工作量。
show processlist;
show full processlist; 或 show processlist(默認(rèn)只列出前100); //顯示哪些線程正在運(yùn)行
id #ID標(biāo)識(shí),要kill一個(gè)語(yǔ)句的時(shí)候很有用 user #當(dāng)前連接用戶 host #顯示這個(gè)連接從哪個(gè)ip的哪個(gè)端口上發(fā)出 db #數(shù)據(jù)庫(kù)名 command #連接狀態(tài),一般是休眠(sleep),查詢(query),連接(connect) time #連接持續(xù)時(shí)間,單位是秒 state #顯示當(dāng)前sql語(yǔ)句的狀態(tài) info #顯示這個(gè)sql語(yǔ)句
show slave status \G;
MySQL同步功能由3個(gè)線程(master上1個(gè),slave上2個(gè))來(lái)實(shí)現(xiàn)。執(zhí)行 DE>START SLAVEDE> 語(yǔ)句后,slave就創(chuàng)建一個(gè)I/O線程。I/O線程連接到master上,并請(qǐng)求master發(fā)送二進(jìn)制日志中的語(yǔ)句。master創(chuàng)建一個(gè)線程來(lái)把日志的內(nèi)容發(fā)送到slave上。這個(gè)線程在master上執(zhí)行 DE>SHOW PROCESSLISTDE> 語(yǔ)句后的結(jié)果中的 DE>Binlog DumpDE> 線程便是。slave上的I/O線程讀取master的 DE>Binlog DumpDE> 線程發(fā)送的語(yǔ)句,并且把它們拷貝到其數(shù)據(jù)目錄下的中繼日志(relay logs)中。第三個(gè)是SQL線程,slave用它來(lái)讀取中繼日志,然后執(zhí)行它們來(lái)更新數(shù)據(jù)。
用于提供有關(guān)從屬服務(wù)器線程的關(guān)鍵參數(shù)的信息
Slave_IO_State: ID線程的狀態(tài),如果master 的所有變更都已經(jīng)收到這個(gè)狀態(tài)會(huì)顯示為 Waiting for master to send event Master_Log_File: IO線程正在讀取的master binlog 文件名 Read_Master_Log_Pos: IO線程已經(jīng)讀完的位置 Relay_Master_Log_File: SQL線程正在讀取的master binlog 文件名 Exec_Master_Log_Pos: SQL線程已經(jīng)讀取完的位置 Slave_IO_State: SHOW PROCESSLIST輸出的State字段的拷貝。 SHOW PROCESSLIST用于從屬I/O線程。如果線程正在試圖連接到主服務(wù)器,正在等待來(lái)自主服務(wù)器的時(shí)間或正在連接到主服務(wù)器等,本語(yǔ)句會(huì)通知您
日志
日志類型 | 寫入日志的信息 |
---|---|
錯(cuò)誤日志 | 記錄在啟動(dòng),運(yùn)行或停止mysqld時(shí)遇到的問(wèn)題 |
通用查詢?nèi)罩?/td> | 記錄建立的客戶端連接和執(zhí)行的語(yǔ)句 |
二進(jìn)制日志 | 記錄更改數(shù)據(jù)的語(yǔ)句 |
中繼日志 | 從復(fù)制主服務(wù)器接收的數(shù)據(jù)更改 |
慢查詢?nèi)罩?/td> | 記錄所有執(zhí)行時(shí)間超過(guò) long_query_time 秒的所有查詢或不使用索引的查詢 |
DDL日志(元數(shù)據(jù)日志) | 元數(shù)據(jù)操作由DDL語(yǔ)句執(zhí)行 |
# mysqlbinlog [options] logfile1 logfile2 ... mysqlbinlog的選項(xiàng) -d, --database=name 僅顯示指定數(shù)據(jù)庫(kù)的轉(zhuǎn)儲(chǔ)內(nèi)容。 -o, --offset=# 跳過(guò)前N行的日志條目。 -r, --result-file=name 將輸入的文本格式的文件轉(zhuǎn)儲(chǔ)到指定的文件。 -R, --read-from-remote-server 指示mysqlbinlog命令從遠(yuǎn)程服務(wù)器讀取日志文件 -s, --short-form 使用簡(jiǎn)單格式(只顯示SQL語(yǔ)句)。 --server-id 指定mysql服務(wù)器,確保是由給定服務(wù)器id的mysql服務(wù)器所生成的日志。 --set-charset=name 在轉(zhuǎn)儲(chǔ)文件的開頭增加'SET NAMES character_set'語(yǔ)句。 --start-datetime=name 轉(zhuǎn)儲(chǔ)日志的起始時(shí)間。 --stop-datetime=name 轉(zhuǎn)儲(chǔ)日志的截止時(shí)間。 -j, --start-position=# 轉(zhuǎn)儲(chǔ)日志的起始位置。 --stop-position=# 轉(zhuǎn)儲(chǔ)日志的截止位置。 -v, --verbose 用行事件重構(gòu)偽sql語(yǔ)句。 -vv 顯示sql語(yǔ)句加字段類型。
查看日志
mysqlbinlog --no-defaults --database=qq --start-datetime='2022-02-11 18:00:00' --stop-datetime='2022-02-11 20:00:00' --base64-output=decode-rows -v mysql-bin.000052 >18-20.log
增加 --base64-output=decode-rows –v 選項(xiàng)解析(目的:變成人類可以讀懂的SQL語(yǔ)句了)
使用base64-output選項(xiàng),可以控制輸出語(yǔ)句何時(shí)是輸出base64編碼的BINLOG語(yǔ)句。以下是base64輸出設(shè)置的可能值:
never //它將在輸出中顯示base64編碼的BINLOG語(yǔ)句 always //只要有可能,它將只顯示BINLOG項(xiàng) decode-rows //將把基于行的事件解碼成一個(gè)SQL語(yǔ)句 auto(默認(rèn)) //僅為某些事件類型打印BINLOG項(xiàng),例如基于行的事件和格式描述事件
總結(jié)
到此這篇關(guān)于MySQL查看數(shù)據(jù)庫(kù)狀態(tài)命令的文章就介紹到這了,更多相關(guān)MySQL查看數(shù)據(jù)庫(kù)狀態(tài)命令內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
淺談MySQL中g(shù)roup_concat()函數(shù)的排序方法
下面小編就為大家?guī)?lái)一篇淺談MySQL中g(shù)roup_concat()函數(shù)的排序方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-12-12阿里云配置MySQL-server?8.0遠(yuǎn)程登錄的實(shí)現(xiàn)
我們經(jīng)常會(huì)碰到需要遠(yuǎn)程訪問(wèn)數(shù)據(jù)庫(kù)的場(chǎng)景,本文主要介紹了阿里云配置MySQL-server?8.0遠(yuǎn)程登錄的實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下2023-08-08

解決修改mysql的data_dir所引發(fā)的錯(cuò)誤問(wèn)題

MySql獲取某個(gè)字段存在于哪個(gè)表的sql語(yǔ)句

MYSQL每隔10分鐘進(jìn)行分組統(tǒng)計(jì)的實(shí)現(xiàn)方法

安裝MySQL phpMyAdmin cpolar實(shí)現(xiàn)遠(yuǎn)程訪問(wèn)連接的操作步驟