最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Mysql的timeout以及python重連方式

 更新時(shí)間:2024年07月18日 08:59:37   作者:有人找你  
這篇文章主要介紹了Mysql的timeout以及python重連方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

 問(wèn)題

近期使用多線程對(duì)數(shù)據(jù)庫(kù)操作報(bào)錯(cuò):

(2013, 'Lost connection to MySQL server during query')

 解決方案

1. 更改timeout參數(shù)

出現(xiàn)這個(gè)問(wèn)題順便就了解了一下mysql中的timeout都有什么:

mysql> show 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    |
+-----------------------------+----------+
13 rows in set (0.06 sec)

很多參數(shù),網(wǎng)上對(duì)于connection lost這個(gè)問(wèn)題有說(shuō)改wait_timout也有說(shuō)net_read_timeout和net_write_timeout的。

那么他們之間到底有什么區(qū)別呢?

簡(jiǎn)單來(lái)說(shuō):

  • wait_timeout代表的是前一個(gè)sql操作和下一個(gè)sql操作的間隔。
  • net_read_timeout和net_write_timeout涉及到網(wǎng)絡(luò)傳輸中的包的問(wèn)題。通常情況下,一個(gè)sql語(yǔ)句由多個(gè)包組成??蛻舳藢⒁粋€(gè)一個(gè)包傳給服務(wù)端,然后在服務(wù)端再將包組合起來(lái)變?yōu)閟ql語(yǔ)句執(zhí)行。如果網(wǎng)絡(luò)情況太差,導(dǎo)致包遲遲不全,無(wú)法組成一個(gè)完整的可執(zhí)行語(yǔ)句,mysql服務(wù)端就會(huì)放棄這個(gè)語(yǔ)句的執(zhí)行。而這個(gè)等待時(shí)間就是net_read/write_timeout。
  • read是服務(wù)器從客戶端讀取;write是服務(wù)器向客戶端寫。
  • 這兩個(gè)參數(shù)都是session level的,可以在每次連接的時(shí)候?qū)ζ溥M(jìn)行更改。
  • 此外,需要注意的是,如果問(wèn)題出在傳輸執(zhí)行一個(gè)sql的過(guò)程中時(shí),使用ping是無(wú)法解決的。Mysql協(xié)議不允許客戶端在一次性數(shù)據(jù)沒有傳輸完畢的時(shí)候,向服務(wù)器傳輸其他的請(qǐng)求。(python里面的處理就是,如果使用了ping就自動(dòng)斷開了本次的執(zhí)行操作)

This for example typical cause of aborted connections while using Sphinx with large data sets and large buffers. While indexing Sphinx performs sorts and flushes buffers to the disk every so often which can take long enough to trigger default net_write_timeout on the server side.

You could ask why server does not do any flow control and can’t find out client just is just busy and it is not network issue – well this comes from simplicity of MySQL protocol which does not allow client to talk to the server until full result set is fetched. This is also the reason why you can’t stop fetching for ordinary statements and mysql_free_result will have to complete the fetch internally.

Is there any way to tell the server you need more time besides increasing net_write_timeout ? Not what I know of. You can’t use something like mysql_ping because connection is in the stage of getting the data. You can’t even fetch couple of rows every few seconds to show you’re fetching data because there is buffering happening inside MySQL client library so you never know when real network read will happen.

具體改什么還要視自己的情況而定:

詳細(xì)的net write timeout和wait timeout的比較

2. 測(cè)試連接,并將斷開的連接重新連接

還有另一個(gè)辦法,python使用ping()方法測(cè)試連接。

但是要注意ping方法不能在使用流式游標(biāo)進(jìn)行迭代獲取數(shù)據(jù)的過(guò)程中用,

否則會(huì)報(bào)錯(cuò):

UserWarning: Previous unbuffered result was left incomplete warnings.warn("Previous unbuffered result was left incomplete")

ping()應(yīng)用于兩個(gè)sql語(yǔ)句執(zhí)行之間進(jìn)行查詢,

這個(gè)檢查是為了應(yīng)付由于超出wait_timeout(而非net_read/write_timeout)服務(wù)器自動(dòng)斷開鏈接的。

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 你知道m(xù)ysql中空值和null值的區(qū)別嗎

    你知道m(xù)ysql中空值和null值的區(qū)別嗎

    這篇文章主要給大家介紹了關(guān)于mysql中空值和null值區(qū)別的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • MySQL數(shù)據(jù)庫(kù)連接異常匯總(值得收藏)

    MySQL數(shù)據(jù)庫(kù)連接異常匯總(值得收藏)

    這篇文章主要介紹了MySQL數(shù)據(jù)庫(kù)連接異常匯總,幫助大家更好的理解和學(xué)習(xí)mysql,感興趣的朋友可以了解下
    2020-08-08
  • MySQL中的視圖特性和用戶權(quán)限管理詳解

    MySQL中的視圖特性和用戶權(quán)限管理詳解

    文章詳細(xì)介紹了MySQL視圖和用戶管理與權(quán)限控制,本文結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2026-05-05
  • 解決Navicat遠(yuǎn)程連接MySQL出現(xiàn) 10060 unknow error的方法

    解決Navicat遠(yuǎn)程連接MySQL出現(xiàn) 10060 unknow error的方法

    這篇文章主要介紹了解決Navicat遠(yuǎn)程連接MySQL出現(xiàn) 10060 unknow error的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12
  • MySQL四種事務(wù)隔離級(jí)別詳解

    MySQL四種事務(wù)隔離級(jí)別詳解

    這篇文章主要為大家詳細(xì)介紹了MySQL四種事務(wù)隔離級(jí)別的相關(guān)資料,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-06-06
  • php mysql localhost,127.0.0.1和ip區(qū)別

    php mysql localhost,127.0.0.1和ip區(qū)別

    localhost與127.0.0.1的區(qū)別是什么?相信有人會(huì)說(shuō)是本地ip,曾有人說(shuō),用127.0.0.1比localhost好,可以減少一次解析??磥?lái)這個(gè)入門問(wèn)題還有人不清楚,其實(shí)這兩者是有區(qū)別的
    2014-05-05
  • mysql 正確清理binlog日志的兩種方法

    mysql 正確清理binlog日志的兩種方法

    這篇文章主要介紹了mysql 正確清理binlog日志的相關(guān)資料,需要的朋友可以參考下
    2017-07-07
  • mysql嵌套查詢和聯(lián)表查詢優(yōu)化方法

    mysql嵌套查詢和聯(lián)表查詢優(yōu)化方法

    本文描述了mysql嵌套查詢和聯(lián)表查詢優(yōu)化的方法,有些情況可以使用這種優(yōu)化方法,而有些情況,這種方法就無(wú)能為力了
    2013-02-02
  • Windows平臺(tái)下MySQL常用操作與命令

    Windows平臺(tái)下MySQL常用操作與命令

    Windows平臺(tái)下MySQL常用操作與命令,學(xué)習(xí)mysql的朋友可以參考下。
    2011-09-09
  • 如何解決MySQL5升級(jí)為MySQL8遇到的問(wèn)題my.ini

    如何解決MySQL5升級(jí)為MySQL8遇到的問(wèn)題my.ini

    這篇文章主要介紹了如何解決MySQL5升級(jí)為MySQL8遇到的問(wèn)題my.ini,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-12-12

最新評(píng)論

郧西县| 古田县| 怀柔区| 安乡县| 澜沧| 荆州市| 辽阳市| 湖北省| 景泰县| 前郭尔| 遂川县| 且末县| 高雄市| 任丘市| 万宁市| 浪卡子县| 黄山市| 舟曲县| 林芝县| 隆化县| 滕州市| 临城县| 鹰潭市| 西青区| 玉门市| 花莲市| 龙川县| 樟树市| 麦盖提县| 清涧县| 广丰县| 巴彦县| 河津市| 鹿邑县| 卢氏县| 高尔夫| 永胜县| 舞阳县| 文成县| 筠连县| 甘洛县|