第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

微服務(wù)使 postgres 連接倍增

微服務(wù)使 postgres 連接倍增

Go
DIEA 2023-05-22 17:04:27
我有一個通過 golang 編寫的服務(wù),它作為消費者工作,它從 kafka 的隊列中獲取數(shù)據(jù)并將其存儲在 PostgreSQL 數(shù)據(jù)庫中。在執(zhí)行某些請求時,golang 開始增加 PG 連接,然后超過它們的限制。我不知道為什么,請幫我解決這個問題。這是代碼:func SaveMessageStatus(msg models.Message) error {db := GetPostgreInstance() // Get *sql.DB instance// Проверяем есть ли записиrows, err := db.Query(`select * from "tNotifStatus" where "NotificationId" = $1`, msg.NotificationID)if err != nil {    CheckError(err, "SLCT status", "")    return err}if rows.Next() {    // Смотрим если запись в таблице уже есть, тогда просто обновляем статусы по сообщению    fsql := `update "tNotifStatus" set "Status" = $1, "Error" = $2, "UpdateTime" = $3 where "NotificationId" = $4`    _, err = db.Exec(fsql, msg.Status, msg.Error, msg.UpdateTime, msg.NotificationID)    if err != nil {        //Логируем        CheckError(err, "UPDT status", "")        return err    }} else {    // Если записей нет, то создаем новую    fsql := `insert into "tNotifStatus" values ($1,$2,$3,$4,$5)`    _, err = db.Exec(fsql, msg.NotificationID, msg.Status, msg.Error, msg.ChannelName, msg.UpdateTime)    if err != nil {        //Логируем        CheckError(err, "INS status", "")        return err    }}return err}
查看完整描述

1 回答

?
慕俠2389804

TA貢獻1719條經(jīng)驗 獲得超6個贊

您需要使用QueryRow(), 因為您既不使用也不期望多行,或者做一個defer rows.Close()(使用時您應(yīng)該始終這樣做.Query

關(guān)閉關(guān)閉行,防止進一步枚舉。如果調(diào)用 Next 并返回 false 并且沒有進一步的結(jié)果集,則 Rows 將自動關(guān)閉并且足以檢查 Err 的結(jié)果。Close 是冪等的,不會影響 Err 的結(jié)果。

如果出于某種原因您退出該循環(huán)——提前返回等——那么行不會關(guān)閉,連接保持打開狀態(tài)。

rows, err := db.Query(`select * from "tNotifStatus" where "NotificationId" = $1`, msg.NotificationID)

if err != nil {

? ? CheckError(err, "SLCT status", "")

? ? return err

}

defer rows.Close()

由于您甚至沒有迭代,所以rows.Next()您基本上永遠不會達到自動關(guān)閉條件,并且總是讓您的連接保持打開狀態(tài)。


查看完整回答
反對 回復(fù) 2023-05-22
  • 1 回答
  • 0 關(guān)注
  • 159 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號