MySql中的常用參數(shù)查詢
目錄
- 1、超時(shí)時(shí)間
- 2、查看最大連接數(shù)
- 3、查看當(dāng)前數(shù)據(jù)庫(kù)狀態(tài)
- 總結(jié)
1、超時(shí)時(shí)間
以下這些配置項(xiàng)單位都是秒,在mysql命令行中可以使用show global variables like '變量名';可查詢配置值。
mysql> show global variables like "%timeout%"; +-----------------------------+----------+ | Variable_name ? ? ? ? ? ? ? | Value ? ?| +-----------------------------+----------+ | connect_timeout ? ? ? ? ? ? | 10 ? ? ? | | delayed_insert_timeout ? ? ?| 300 ? ? ?| | have_statement_timeout ? ? ?| YES ? ? ?| | innodb_flush_log_at_timeout | 1 ? ? ? ?| | innodb_lock_wait_timeout ? ?| 50 ? ? ? | | innodb_rollback_on_timeout ?| OFF ? ? ?| | interactive_timeout ? ? ? ? | 28800 ? ?| | lock_wait_timeout ? ? ? ? ? | 31536000 | | net_read_timeout ? ? ? ? ? ?| 30 ? ? ? | | net_write_timeout ? ? ? ? ? | 60 ? ? ? | | rpl_stop_slave_timeout ? ? ?| 31536000 | | slave_net_timeout ? ? ? ? ? | 60 ? ? ? | | wait_timeout ? ? ? ? ? ? ? ?| 28800 ? ?| +-----------------------------+----------+
connect_timeout
:連接響應(yīng)超時(shí)時(shí)間。服務(wù)器端在這個(gè)時(shí)間內(nèi)如未連接成功,則會(huì)返回連接失敗。wait_timeout
:連接空閑超時(shí)時(shí)間。與服務(wù)器端無(wú)交互狀態(tài)的連接,直到被服務(wù)器端強(qiáng)制關(guān)閉而等待的時(shí)間。可以認(rèn)為是服務(wù)器端連接空閑的時(shí)間,空閑超過(guò)這個(gè)時(shí)間將自動(dòng)關(guān)閉。interactive_timeout
:連接空閑超時(shí)時(shí)間。與服務(wù)器端無(wú)交互狀態(tài)的連接,直到被服務(wù)器端強(qiáng)制關(guān)閉而等待的時(shí)間。interactive_timeout
和wait_timeoutu
意義雖然相同,但是有使用對(duì)象有本質(zhì)的區(qū)別。interactive_timeout針對(duì)交互式連接(比如通過(guò)mysql客戶端連接數(shù)據(jù)庫(kù)),wait_timeout針對(duì)非交互式連接(比如一般在PHP中使用PDO連接數(shù)據(jù)庫(kù),當(dāng)然你可以設(shè)置CLIENT_INTERACTIVE選項(xiàng)來(lái)改變)。所謂的交互式連接,即在mysql_real_connect()函數(shù)中使用了CLIENT_INTERACTIVE選項(xiàng)。net_read_timeout
:數(shù)據(jù)讀取超時(shí)時(shí)間。在終止讀之前,從一個(gè)連接獲得數(shù)據(jù)而等待的時(shí)間秒數(shù);當(dāng)服務(wù)正在從客戶端讀取數(shù)據(jù)時(shí),net_read_timeout控制何時(shí)超時(shí)。即客戶端執(zhí)行數(shù)據(jù)讀取,等待多少秒仍未執(zhí)行成功時(shí)自動(dòng)斷開(kāi)連接。net_write_timeout
:數(shù)據(jù)庫(kù)寫(xiě)超時(shí)時(shí)間。和net_read_timeout意義類似,在終止寫(xiě)之前,等待多少秒把block寫(xiě)到連接;當(dāng)服務(wù)正在寫(xiě)數(shù)據(jù)到客戶端時(shí),net_write_timeout控制何時(shí)超時(shí)。slave-net-timeout
:從庫(kù)延后同步的時(shí)間,當(dāng)slave認(rèn)為連接master的連接有問(wèn)題時(shí),就等待N秒,然后斷開(kāi)連接,重新連接master
slave-net-timeout在主從同步時(shí)從庫(kù)上起作用;connect_timeout:在獲取連接階段起作用;interactive_timeout和wait_timeout:在連接空閑階段起作用;net_read_timeout和net_write_timeout:則是在連接執(zhí)行時(shí)起作用。
MySQL連接超時(shí)設(shè)置的問(wèn)題。默認(rèn)的wait_timeout 是28800,8個(gè)小時(shí)。
解決辦法有兩種,
方法一,將連接池中的超時(shí)時(shí)間設(shè)置的短于這個(gè)值(本項(xiàng)目用的spring boot data jpa,默認(rèn)連接,設(shè)置后不起作用);
方法二,把mysql的這個(gè)值設(shè)大一些:在[mysqld]下加wait_timeout = 86400。此時(shí)是設(shè)置的全局設(shè)定,可通過(guò)命令 show global variables like “%timeout%”;看到變化,而show variables like “%timeout%”;和show session variables like “%timeout%”;仍為原值。
這個(gè)值設(shè)置為多大應(yīng)根據(jù)應(yīng)用使用情況來(lái)定。太小會(huì)導(dǎo)致頻繁超時(shí),太多會(huì)導(dǎo)致連接長(zhǎng)時(shí)間不釋放,也會(huì)出錯(cuò)。所以一方面調(diào)整好這個(gè)數(shù)值,一方面采用更好的連接池方案。
2、查看最大連接數(shù)
mysql> show global status like "Max_used_connections"; +----------------------+-------+ | Variable_name ? ? ? ?| Value | +----------------------+-------+ | Max_used_connections | 4 ? ? | +----------------------+-------+ 1 row in set (0.00 sec) ? mysql> show variables like "max_connections%"; +-----------------+-------+ | Variable_name ? | Value | +-----------------+-------+ | max_connections | 10000 | +-----------------+-------+ 1 row in set (0.01 sec)
通常max_connections的大小應(yīng)該設(shè)置為比Max_used_connections狀態(tài)值大,Max_used_connections狀態(tài)值反映服務(wù)器連接在某個(gè)時(shí)間段是否有尖峰,如果該值大于max_connections值,代表客戶端至少被拒絕了一次,可以簡(jiǎn)單地設(shè)置為符合以下條件:Max_used_connections/max_connections=0.8
3、查看當(dāng)前數(shù)據(jù)庫(kù)狀態(tài)
mysql> status; -------------- mysql ?Ver 14.14 Distrib 5.7.14, for linux-glibc2.5 (x86_64) using ?EditLine wrapper ? Connection id:?? ??? ?17318 Current database:?? ? Current user:?? ??? ?root@localhost SSL:?? ??? ??? ?Not in use Current pager:?? ??? ?stdout Using outfile:?? ??? ?"" Using delimiter:?? ?; Server version:?? ??? ?5.7.14-log MySQL Community Server (GPL) Protocol version:?? ?10 Connection:?? ??? ?Localhost via UNIX socket Server characterset:?? ?utf8 Db ? ? characterset:?? ?utf8 Client characterset:?? ?utf8 Conn. ?characterset:?? ?utf8 UNIX socket:?? ??? ?/tmp/mysql.sock Uptime:?? ??? ??? ?20 hours 2 min 14 sec ? Threads: 5 ?Questions: 118037 ?Slow queries: 0 ?Opens: 1743 ?Flush tables: 1 ?Open tables: 916 ?Queries per second avg: 1.636 --------------
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持。
