MySql中的常用參數(shù)查詢
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è)參考,也希望大家多多支持腳本之家。
相關(guān)文章
MySQL數(shù)據(jù)庫(kù)基礎(chǔ)入門(mén)之常用命令小結(jié)
這篇文章主要介紹了MySQL數(shù)據(jù)庫(kù)基礎(chǔ)入門(mén)之常用命令,結(jié)合實(shí)例形式分析了MySQL數(shù)據(jù)庫(kù)管理、備份、日志常用操作命令與使用注意事項(xiàng),需要的朋友可以參考下2020-05-05Windows安裝MySQL后怎么開(kāi)啟root的網(wǎng)絡(luò)訪問(wèn)權(quán)限
Windows安裝MySQL后默認(rèn)只能本機(jī)訪問(wèn),怎么開(kāi)啟網(wǎng)絡(luò)訪問(wèn),本文給大家介紹介紹了Windows安裝MySQL后怎么開(kāi)啟root的網(wǎng)絡(luò)訪問(wèn)權(quán)限,需要的朋友可以參考下2023-08-08mysql占用CPU超過(guò)100%的詳細(xì)解決過(guò)程
前段時(shí)間我的一個(gè)網(wǎng)站經(jīng)常打不開(kāi),通過(guò)檢查發(fā)現(xiàn)服務(wù)器cpu占用超過(guò)100%,通過(guò)top命令發(fā)現(xiàn)是mysql占用cpu特別高導(dǎo)致的,下面這篇文章主要給大家介紹了關(guān)于mysql占用CPU超過(guò)100%的詳細(xì)解決過(guò)程,需要的朋友可以參考下2023-10-10mysql之過(guò)濾分組的具體實(shí)現(xiàn)
在MySQL中過(guò)濾分組數(shù)據(jù)通常使用GROUP BY結(jié)合HAVING子句和WHERE子句,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2024-08-08MySql存儲(chǔ)過(guò)程和游標(biāo)的使用實(shí)例
我們?cè)趯?shí)際的開(kāi)發(fā)中會(huì)遇到一些統(tǒng)計(jì)的業(yè)務(wù)功能,如果我實(shí)時(shí)的去查詢的話有時(shí)候會(huì)很慢,此時(shí)我們可以寫(xiě)一個(gè)存儲(chǔ)過(guò)程來(lái)實(shí)現(xiàn),下面這篇文章主要給大家介紹了關(guān)于MySql存儲(chǔ)過(guò)程和游標(biāo)使用的相關(guān)資料,需要的朋友可以參考下2022-04-04