mysql怎么改連接時(shí)間,mysql等待時(shí)間怎么調(diào)

mysql怎么設(shè)置超時(shí)時(shí)間

MYSQL_OPT_READ_TIMEOUT 是 MySQL c api 客戶端中用來設(shè)置讀取超時(shí)時(shí)間的參數(shù)。在 MySQL 的官方文檔中,該參數(shù)的描述是這樣的:

公司主營(yíng)業(yè)務(wù):網(wǎng)站設(shè)計(jì)、成都網(wǎng)站建設(shè)、移動(dòng)網(wǎng)站開發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實(shí)現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競(jìng)爭(zhēng)能力。創(chuàng)新互聯(lián)是一支青春激揚(yáng)、勤奮敬業(yè)、活力青春激揚(yáng)、勤奮敬業(yè)、活力澎湃、和諧高效的團(tuán)隊(duì)。公司秉承以“開放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對(duì)我們的高要求,感謝他們從不同領(lǐng)域給我們帶來的挑戰(zhàn),讓我們激情的團(tuán)隊(duì)有機(jī)會(huì)用頭腦與智慧不斷的給客戶帶來驚喜。創(chuàng)新互聯(lián)推出龍游免費(fèi)做網(wǎng)站回饋大家。

MYSQL_OPT_READ_TIMEOUT (argument type: unsigned int *)The timeout in seconds for each attempt to read from the server. There are retries if necessary, so the total effective timeout value is three times the option value. You can set the value so that a lost connection can be detected earlier than the TCP/IPClose_Wait_Timeout value of 10 minutes.

也就是說在需要的時(shí)候,實(shí)際的超時(shí)時(shí)間會(huì)是設(shè)定值的 3 倍。但是實(shí)際測(cè)試后發(fā)現(xiàn)實(shí)際的超時(shí)時(shí)間和設(shè)置的超時(shí)時(shí)間一致。

而具體什么時(shí)候發(fā)生三倍超時(shí),在文檔中沒有找到。所以對(duì) MySQL 5.7.20 的源碼進(jìn)行了一些分析。

使用 GDB 調(diào)試代碼找了實(shí)際與 mysql server 通信的代碼,如下:

請(qǐng)點(diǎn)擊輸入圖片描述

其中 vio_read() 函數(shù)中,使用 recv 和 poll 來讀取報(bào)文和做讀取超時(shí)。net_should_retry() 函數(shù)只有在發(fā)生 EINTR 時(shí)才會(huì)返回 true。從這段代碼來看是符合測(cè)試結(jié)果的,并沒有對(duì)讀取進(jìn)行三次重試。只有在讀取操作被系統(tǒng)中斷打斷時(shí)才會(huì)重試,但是這個(gè)重試并沒有次數(shù)限制。

從上面代碼的分析可以看出,代碼的邏輯和文檔的描述不符。于是在一頓搜索后,找到了一個(gè) MySQL 的 BUG(Bug #31163)。該 BUG 報(bào)告了在?MySQL?5.0 中,MySQL c api 讀取的實(shí)際超時(shí)時(shí)間是設(shè)置的三倍,與現(xiàn)有文檔描述相符。于是對(duì) MySQL 5.0.96 的代碼又進(jìn)行分析。

同樣使用 GDB 找到了通信部分的代碼。這次找到了重試三次的代碼,如下:

請(qǐng)點(diǎn)擊輸入圖片描述

這個(gè)版本的 MySQL api 的讀寫超時(shí)是直接使用的 setsockopt 設(shè)置的。第一次循環(huán),在 A 點(diǎn)發(fā)生了第一次超時(shí)(雖然注釋寫的非阻塞,但是客戶端的連接始終是阻塞模式的)。然后在 B 點(diǎn)將該 socket 設(shè)置為阻塞模式,C 點(diǎn)這里重置 retry 次數(shù)。由于設(shè)置了 alarm 第二次以后的循環(huán)會(huì)直接進(jìn)入 D 點(diǎn)的這個(gè)分支,并且判斷循環(huán)次數(shù)。作為客戶端時(shí)net-retry_count 始終是 1,所以重試了兩次,共計(jì)進(jìn)行了 3 次 vioread 后從 E 點(diǎn)退出函數(shù)。

由上面的分析可知,MySQL 文檔對(duì)于該參數(shù)的描述已經(jīng)過時(shí),現(xiàn)在的 MYSQL_OPT_READ_TIMEOUT 并不會(huì)出現(xiàn)三倍超時(shí)的問題。而 Bug #31163 中的處理結(jié)果也是將文檔中該參數(shù)的描述更新為實(shí)際讀取超時(shí)時(shí)間是設(shè)定時(shí)間的三倍。也許是 MySQL 的維護(hù)者們?cè)诤罄m(xù)版本更新時(shí)忘記更新文檔吧。

怎么修改mysql的系統(tǒng)時(shí)間

通過mysql命令行模式下動(dòng)態(tài)修改

show variables like "%time_zone%";

查看時(shí)區(qū)

+------------------+--------+

| Variable_name | Value |

+------------------+--------+

| system_time_zone | CST |

| time_zone | SYSTEM |

+------------------+--------+

2 rows in set (0.00 sec)

#time_zone說明mysql使用system的時(shí)區(qū),system_time_zone說明system使用CST時(shí)區(qū)

修改時(shí)區(qū)

set global time_zone = '+8:00'; ##修改mysql全局時(shí)區(qū)為北京時(shí)間,即我們所在的東8區(qū)

set time_zone = '+8:00'; ##修改當(dāng)前會(huì)話時(shí)區(qū)

flush privileges; #立即生效

mysql連接數(shù),緩存區(qū)大小,連接超時(shí)時(shí)間如何設(shè)置呢?

mysql目錄下的 my.ini 可以修改 配置

max_connections=100 表示的是最大連接數(shù)

query_cache_size=0 表示查詢緩存的大小

table_cache=256 表示表格的緩存

tmp_table_size=18M 表示臨時(shí)表的緩存

thread_cache_size=8 表示線程的緩存

超時(shí)時(shí)間可以在連接字符串中寫好 下面給出了一個(gè)實(shí)例

Server=myServerAddress;Database=myDataBase;Uid=myUsername;Pwd=myPassword;default command timeout=20;

其他 連接字符串的實(shí)例給你一個(gè)連接

怎樣修改mysql數(shù)據(jù)中的具體時(shí)間

應(yīng)用場(chǎng)景:

1、在數(shù)據(jù)表中,要記錄每條數(shù)據(jù)是什么時(shí)候創(chuàng)建的,不需要應(yīng)用程序去特意記錄,而由數(shù)據(jù)數(shù)據(jù)庫(kù)獲取當(dāng)前時(shí)間自動(dòng)記錄創(chuàng)建時(shí)間;2、在數(shù)據(jù)庫(kù)中,要記錄每條數(shù)據(jù)是什么時(shí)候修改的,不需要應(yīng)用程序去特意記錄,而由數(shù)據(jù)數(shù)據(jù)庫(kù)獲取當(dāng)前時(shí)間自動(dòng)記錄修改時(shí)間;實(shí)現(xiàn)方式:

1、將字段類型設(shè)為 TIMESTAMP

2、將默認(rèn)值設(shè)為 CURRENT_TIMESTAMP

舉例應(yīng)用:

1、MySQL 腳本實(shí)現(xiàn)用例

--添加CreateTime 設(shè)置默認(rèn)時(shí)間 CURRENT_TIMESTAMPALTER TABLE `table_name`

ADD COLUMN `CreateTime` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '創(chuàng)建時(shí)間' ;--修改CreateTime 設(shè)置默認(rèn)時(shí)間 CURRENT_TIMESTAMPALTER TABLE `table_name`

MODIFY COLUMN `CreateTime` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '創(chuàng)建時(shí)間' ;--添加UpdateTime 設(shè)置 默認(rèn)時(shí)間 CURRENT_TIMESTAMP 設(shè)置更新時(shí)間為 ON UPDATE CURRENT_TIMESTAMPALTER TABLE `table_name`

ADD COLUMN `UpdateTime` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '創(chuàng)建時(shí)間' ;--修改 UpdateTime 設(shè)置 默認(rèn)時(shí)間 CURRENT_TIMESTAMP 設(shè)置更新時(shí)間為 ON UPDATE CURRENT_TIMESTAMPALTER TABLE `table_name`

MODIFY COLUMN `UpdateTime` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '創(chuàng)建時(shí)間' ;2、MySQL工具設(shè)置

網(wǎng)頁(yè)標(biāo)題:mysql怎么改連接時(shí)間,mysql等待時(shí)間怎么調(diào)
網(wǎng)站網(wǎng)址:http://muchs.cn/article30/hcjjpo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供靜態(tài)網(wǎng)站、虛擬主機(jī)品牌網(wǎng)站設(shè)計(jì)、自適應(yīng)網(wǎng)站、App設(shè)計(jì)電子商務(wù)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站網(wǎng)頁(yè)設(shè)計(jì)