Mysql: рд╕рдВрджрд░реНрдн рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреНрд╡реЗрд░реА рд░рджреНрдж рдХрд░рдиреЗ рдХреЗ рд╕рд╛рде рдЕрдЬреАрдм рд╡реНрдпрд╡рд╣рд╛рд░

рдХреЛ рдирд┐рд░реНрдорд┐рдд 2 рдЕрдХреНрддреВре░ 2018  ┬╖  19рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: go-sql-driver/mysql

рд╕рд░реНрд╡рд░: MySQL 5.6

рд╕рдВрдЧреНрд░рд╣рд┐рдд рдкреНрд░рдХреНрд░рд┐рдпрд╛:

DELIMITER //
CREATE PROCEDURE slowInsert(IN t int)
BEGIN       
       SELECT SLEEP(t);
       INSERT INTO `table_x` (message) VALUES (UUID());
END //
DELIMITER ;

рдЧреЛ рдХреЛрдб:

package main

import (
    "context"
    "database/sql"
    "time"

    _ "github.com/go-sql-driver/mysql"
)

func main() {
    db, err := sql.Open("mysql", "<url>")
    if err != nil {
        panic(err)
    }
    db.SetConnMaxLifetime(9 * time.Second)
    db.SetMaxIdleConns(12)
    db.SetMaxOpenConns(12)

    ctx := context.Background()
    ctx, cancel := context.WithTimeout(ctx, time.Duration(3)*time.Second)
    defer cancel()

    _, err = db.ExecContext(ctx, "call slowInsert( 10 )") // context will cancel before insert occurs
    if err != nil {
        panic(err)
    }
}

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рд╣рдо рд╕рд╣реА рдХреНрд╡реЗрд░реА рдХреЗ рд▓рд┐рдП KILL рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП SHOW FULL PROCESSLIST рдФрд░ KILL рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред

рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ рдЗрд╕реЗ рдбреНрд░рд╛рдЗрд╡рд░ рд╕реНрддрд░ рдкрд░ рдЖрд╕рд╛рдиреА рд╕реЗ рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕рдХреЗ рд▓рд┐рдП рджреВрд╕рд░реЗ рдХрдиреЗрдХреНрд╢рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА рдЬрд┐рд╕ рдкрд░ рдбреНрд░рд╛рдЗрд╡рд░ рдЗрди рдЖрджреЗрд╢реЛрдВ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдпрд╛ рддреЛ рдПрдХ рд╕рд╛рдЭрд╛ "рдкреНрд░рдмрдВрдзрди рдХрдиреЗрдХреНрд╢рди" рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдпрд╛ рдорд╛рдВрдЧ рдкрд░ рдЦреЛрд▓реЗ рдЧрдП рдХрдиреЗрдХреНрд╢рди рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдпрд╣ рдбреНрд░рд╛рдЗрд╡рд░ рдХреЛ рдФрд░ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рдмрдирд╛ рджреЗрдЧрд╛ред рдЕрднреА рд╕рддреНрд░реЛрдВ рдФрд░ рдХрдиреЗрдХреНрд╢рдиреЛрдВ рдХреА рд╕рднреА рд╣реИрдВрдбрд▓рд┐рдВрдЧ database/sql рдкреИрдХреЗрдЬ рджреНрд╡рд╛рд░рд╛ рдХреА рдЬрд╛рддреА рд╣реИ, рди рдХрд┐ рдбреНрд░рд╛рдЗрд╡рд░ рджреНрд╡рд╛рд░рд╛, рдЬреЛ рд╕рд┐рд░реНрдл рдПрдХ рдирдпрд╛ рдХрдиреЗрдХреНрд╢рди рдЖрджрд┐ рдЦреЛрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдп рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред

рд▓реЗрдХрд┐рди рдЗрд╕рд╕реЗ рднреА рдЕрдзрд┐рдХ рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рд╣реА рд╕рд░реНрд╡рд░ рдЦреЛрдЬрдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИ (рдЬрдм рддрдХ рдХрд┐ рдХреЗрд╡рд▓ рдПрдХ рд╣реА рди рд╣реЛ)ред рдбреНрд░рд╛рдЗрд╡рд░ рдХреЛ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ mysql рд▓реЛрдб-рдмреИрд▓реЗрдВрд╕рд┐рдВрдЧ рдкреНрд░реЙрдХреНрд╕реА рдХреЗ рд╕рд╛рде рддреИрдирд╛рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЙрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдпрд╣ рд╕рдВрднрд╡ рд╣реИ рдХрд┐ рд╣реИрдЯ SHOW FULL PROCESSLIST рдЧрд▓рдд рд╕рд░реНрд╡рд░ рдкрд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реЛ рдФрд░ рд╣рдореЗрдВ рдХреНрд╡реЗрд░реА рдирд╣реАрдВ рдорд┐рд▓ рд░рд╣реА рд╣реЛред

рд╕рднреА 19 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рд╣рдо рдЕрдЬреАрдм рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВред
рдЬрдм рд╣рдо mysql рдХреНрд▓рд╛рдЗрдВрдЯ рдкрд░ slowInsert( 10 ) рдЪрд▓рд╛рддреЗ рд╣реИрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕реАрдХреНрд╡рд▓ рдкреНрд░реЛ), рддреЛ рд╕рдореНрдорд┐рд▓рди рд╕реЗ рдкрд╣рд▓реЗ 10 рд╕реЗрдХрдВрдб рдХреЗ рдЗрдВрддрдЬрд╛рд░ рдХрд╛ рд╕рдореНрдорд╛рди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдпрд╣ рдорд╛рдирдиреЗ рдХрд╛ рдХреЛрдИ рдХрд╛рд░рдг рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╕рдВрдЧреНрд░рд╣рд┐рдд рдЦрд░реАрдж рдЧрд▓рдд рдпрд╛ рдЕрдорд╛рдиреНрдп рд╣реИред

рдЬрдм рд╣рдо рдКрдкрд░ рджрд┐рдП рдЧрдП рдЧреЛ рдХреЛрдб рдХреЛ рдЪрд▓рд╛рддреЗ рд╣реИрдВ, рддреЛ рд╕рдВрджрд░реНрдн 3 рд╕реЗрдХрдВрдб рдХреЗ рдмрд╛рдж рд░рджреНрдж рд╣реЛ рд░рд╣рд╛ рд╣реИ - рд╕рдм рдареАрдХ рд╣реИред
... рд▓реЗрдХрд┐рди рддреБрд░рдВрдд рд╕рдореНрдорд┐рд▓рди рд╣реЛрддрд╛ рд╣реИред (рдпрд╣ 10 рд╕реЗрдХрдВрдб рдкреНрд░рддреАрдХреНрд╖рд╛ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ)ред

рдЕрдм, рдЕрдЧрд░ рд╣рдо рд╕рдВрдЧреНрд░рд╣рд┐рдд рдЦрд░реАрдж рдХреЛ рдмрджрд▓рддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рдпрд╣ рд╣реЛ:

DELIMITER //
CREATE PROCEDURE slowInsert(IN t int)
BEGIN       
       SELECT SLEEP(t/2); // <---- The change
       SELECT SLEEP(t/2); // <---- The change
       INSERT INTO `table_x` (message) VALUES (UUID());
END //
DELIMITER ;

рдЧреЛ рдХреЛрдб рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдФрд░ рдХреНрд╡реЗрд░реА рдХреЛ рд░рджреНрдж рдХрд░ рджреЗрддрд╛ рд╣реИ (рдпрд╛рдиреА рдХреЛрдИ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ)ред
рджреЛрдиреЛрдВ рд╣реА рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рд╣рдорд╛рд░рд╛ mysql рдХреНрд▓рд╛рдЗрдВрдЯ (рд╕реАрдХреНрд╡рд▓ рдкреНрд░реЛ) рдкреНрд░рддреАрдХреНрд╖рд╛ рдЕрд╡рдзрд┐ рдХрд╛ рд╕рдореНрдорд╛рди рдХрд░рддрд╛ рд╣реИ рдЗрд╕рд▓рд┐рдП рджреЛрдиреЛрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдкреНрд░реЛрд╕реЗрд╕ рд╕рдорд╛рди рд╣реИрдВред

рд▓реЗрдХрд┐рди рд╣рдорд╛рд░реЗ рдЧреЛ рдХреЛрдб рдореЗрдВ, рджреВрд╕рд░рд╛ рд╕рдВрдЧреНрд░рд╣рд┐рдд рдкреНрд░реЛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдкрд╣рд▓рд╛ рдирд╣реАрдВ - рд╣рдорд╛рд░реЗ рд╡рд┐рд╢реНрд╡рд╛рд╕ рдХреЗ рд▓рд┐рдП рдЕрдЧреНрд░рдгреА рд╣реИ рдХрд┐ рдбреНрд░рд╛рдЗрд╡рд░ рдореЗрдВ рдХреБрдЫ рдЕрдЬреАрдм рдмрдЧ рд╣реИред

@ рдПрд▓реЗрд╕рд┐рдпреЛ-рдкрд╛рд▓реБрдореНрдмреЛ

рдпрд╣ рдХреЛрдИ рдмрдЧ рдирд╣реАрдВ рд╣реИред рд╣рдо рдЕрднреА рддрдХ рдХреНрд╡реЗрд░реА рд░рджреНрдж рдХрд░рдиреЗ рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред
рдФрд░ SLEEP() рдмрд╣реБрдд рд╣реА рдЦрд╛рд╕ рдХреНрд╡реЗрд░реА рд╣реИред рдпрд╣ рдЬрд╛рдБрдЪрддрд╛ рд╣реИ рдХрд┐ рдХрдиреЗрдХреНрд╢рди рдЬреАрд╡рд┐рдд рд╣реИ рдпрд╛ рдирд╣реАрдВред
рд╕рд╛рдорд╛рдиреНрдп рд╕реНрдерд┐рддрд┐ рдореЗрдВ, MySQL рдХреНрд╡реЗрд░реА рд╕рдорд╛рдкреНрдд рд╣реЛрдиреЗ рддрдХ рдХрдиреЗрдХреНрд╢рди рдХреА рдЬрд╛рдВрдЪ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

рд░реАрдбрдореА: https://github.com/go-sql-driver/mysql#contextcontext -support

Go 1.8 added database/sql support for context.Context. This driver supports query timeouts and cancellation via contexts. See context support in the database/sql package for more details.

рдареАрдХ рд╣реИ, рд░реАрдбрдореА рднреНрд░рд╛рдордХ рд╣реИред рдпрд╣ рд╕рд┐рд░реНрдл "рдкреНрд░рддреАрдХреНрд╖рд╛" рдХреНрд╡реЗрд░реА рдкрд░рд┐рдгрд╛рдо рдХреЛ рд░рджреНрдж рдХрд░ рд░рд╣рд╛ рд╣реИ, рдХреНрд╡реЗрд░реА рдирд┐рд╖реНрдкрд╛рджрди рдирд╣реАрдВред

MySQL рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреНрд╡реЗрд░реА рдирд┐рд╖реНрдкрд╛рджрди рдХреЛ рд░рджреНрдж рдХрд░рдиреЗ рдХрд╛ рд╕реБрд░рдХреНрд╖рд┐рдд рддрд░реАрдХрд╛ рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред
рдХреБрдЫ рд╕реАрдПрд▓рдЖрдИ рд░рджреНрдж рдХрд░рдиреЗ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдХреБрдЫ рдкрд░реНрдпрд╛рд╡рд░рдг рдкрд░ рд╕реБрд░рдХреНрд╖рд┐рдд/рд╕реНрдерд┐рд░ рдирд╣реАрдВ рд╣реИред

рдзрдиреНрдпрд╡рд╛рдж

рдЖрдкрдХреЛ рдХреНрдпрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рд▓реЗрдирджреЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдкреНрд░рддрд┐рдмрджреНрдз рдирд╣реАрдВ рд╣реИрдВ, рддреЛ рдпрд╣ рд░реЛрд▓рдмреИрдХ рд╣реЛ рдЧрдпрд╛ рд╣реИред
рдЗрд╕рд▓рд┐рдП рд▓реЗрди-рджреЗрди рд╕реБрд░рдХреНрд╖рд┐рдд рд╣реЛрдиреЗ рдкрд░ рдЯрд╛рдЗрдордЖрдЙрдЯред

@andizzle @alexclifford @edwardhutchison

рдЯрд╛рдЗрдордЖрдЙрдЯ рдХреЗ рдмрд╛рдж рдкрд╣рд▓реЗ рд╕реНрдЯреЛрд░рдкреНрд░реЛрдХ рдХреНрдпреЛрдВ рдбрд╛рд▓рд╛ рдЬрд╛рддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рджреВрд╕рд░рд╛ рд╕реНрдЯреЛрд░рдкреНрд░реЛрдХ рд╕рдореНрдорд┐рд▓рд┐рдд рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЗ рдХрдерди рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдпрд╣ рдпрд╛ рддреЛ рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд░рддрд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВред рдпрджрд┐ рдбреНрд░рд╛рдЗрд╡рд░ рдХреНрд╡реЗрд░реА рдирд┐рд╖реНрдкрд╛рджрди рдХреЛ рд░рджреНрдж рдХрд░рдиреЗ рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдРрд╕рд╛ рдХреНрдпреЛрдВ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдирд┐рд╖реНрдкрд╛рджрди рд░рджреНрдж рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ?

рдпрд╣ MySQL рд╡реНрдпрд╡рд╣рд╛рд░ рд╣реИред рдореИрдВ рдЬреНрдпрд╛рджрд╛ рдирд╣реАрдВ рдЬрд╛рдирддрд╛ред рд▓реЗрдХрд┐рди рдХрдиреЗрдХреНрд╢рди рдмрдВрдж рд╣реЛрдиреЗ рдкрд░ SLEEP() рдореЗрдВ рдмрд╣реБрдд рдЕрдЬреАрдм рд╡реНрдпрд╡рд╣рд╛рд░ рд╣реЛрддрд╛ рд╣реИред

@julienschmidt рдЖрдк рдЗрд╕ рд╡рд┐рдЪрд╛рд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛ рд╕реЛрдЪрддреЗ рд╣реИрдВ: https://github.com/src-d/gitbase-web/issues/241#issuecomment -427740194

рд╣рдо рд╕рд╣реА рдХреНрд╡реЗрд░реА рдХреЗ рд▓рд┐рдП KILL рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП SHOW FULL PROCESSLIST рдФрд░ KILL рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред

рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ рдЗрд╕реЗ рдбреНрд░рд╛рдЗрд╡рд░ рд╕реНрддрд░ рдкрд░ рдЖрд╕рд╛рдиреА рд╕реЗ рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕рдХреЗ рд▓рд┐рдП рджреВрд╕рд░реЗ рдХрдиреЗрдХреНрд╢рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА рдЬрд┐рд╕ рдкрд░ рдбреНрд░рд╛рдЗрд╡рд░ рдЗрди рдЖрджреЗрд╢реЛрдВ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдпрд╛ рддреЛ рдПрдХ рд╕рд╛рдЭрд╛ "рдкреНрд░рдмрдВрдзрди рдХрдиреЗрдХреНрд╢рди" рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдпрд╛ рдорд╛рдВрдЧ рдкрд░ рдЦреЛрд▓реЗ рдЧрдП рдХрдиреЗрдХреНрд╢рди рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдпрд╣ рдбреНрд░рд╛рдЗрд╡рд░ рдХреЛ рдФрд░ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рдмрдирд╛ рджреЗрдЧрд╛ред рдЕрднреА рд╕рддреНрд░реЛрдВ рдФрд░ рдХрдиреЗрдХреНрд╢рдиреЛрдВ рдХреА рд╕рднреА рд╣реИрдВрдбрд▓рд┐рдВрдЧ database/sql рдкреИрдХреЗрдЬ рджреНрд╡рд╛рд░рд╛ рдХреА рдЬрд╛рддреА рд╣реИ, рди рдХрд┐ рдбреНрд░рд╛рдЗрд╡рд░ рджреНрд╡рд╛рд░рд╛, рдЬреЛ рд╕рд┐рд░реНрдл рдПрдХ рдирдпрд╛ рдХрдиреЗрдХреНрд╢рди рдЖрджрд┐ рдЦреЛрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдп рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред

рд▓реЗрдХрд┐рди рдЗрд╕рд╕реЗ рднреА рдЕрдзрд┐рдХ рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рд╣реА рд╕рд░реНрд╡рд░ рдЦреЛрдЬрдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИ (рдЬрдм рддрдХ рдХрд┐ рдХреЗрд╡рд▓ рдПрдХ рд╣реА рди рд╣реЛ)ред рдбреНрд░рд╛рдЗрд╡рд░ рдХреЛ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ mysql рд▓реЛрдб-рдмреИрд▓реЗрдВрд╕рд┐рдВрдЧ рдкреНрд░реЙрдХреНрд╕реА рдХреЗ рд╕рд╛рде рддреИрдирд╛рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЙрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдпрд╣ рд╕рдВрднрд╡ рд╣реИ рдХрд┐ рд╣реИрдЯ SHOW FULL PROCESSLIST рдЧрд▓рдд рд╕рд░реНрд╡рд░ рдкрд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реЛ рдФрд░ рд╣рдореЗрдВ рдХреНрд╡реЗрд░реА рдирд╣реАрдВ рдорд┐рд▓ рд░рд╣реА рд╣реЛред

рдХреНрдпрд╛ рдЖрдк рдХрд┐рд╕реА рдХреНрд╡реЗрд░реА рдХреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд░рджреНрдж рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП database/sql рдореЗрдВ рдЬреЛ рдХреБрдЫ рднреА рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдЙрд╕реЗ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЧреЛ 2 рдкреНрд░рд╕реНрддрд╛рд╡ рдмрдирд╛рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдВрдЧреЗ?

рдореИрдВ рдИрдорд╛рдирджрд╛рд░реА рд╕реЗ рд╕реЛрдЪрддрд╛ рд╣реВрдВ рдХрд┐ database/sql рдпрд╛ рдпрд╣ рдбреНрд░рд╛рдЗрд╡рд░ рдпрд╣рд╛рдВ рд╕рдорд╕реНрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рд░рд▓ MySQL рд╕реНрд╡рдпрдВ рд╣реИ, рдЬреЛ рдЪрд▓ рд░рд╣реА рдХреНрд╡реЗрд░реА рдХреЛ рд░рджреНрдж рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рдкреНрд░рджрд╛рди

рдПрдХ рдЕрдЪреНрдЫреА рд╢реБрд░реБрдЖрдд рддрдм рд╣реЛрдЧреА рдЬрдм рд╕рд░реНрд╡рд░ рдХреЛ рднреЗрдЬреЗ рдЧрдП рдкреНрд░рд╢реНрдиреЛрдВ рдХреЗ

рдПрдХрд▓ рд╕рд░реНрд╡рд░ рд╕реЗрдЯрдЕрдк рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдо рдкреЛрд╕реНрдЯрдЧреНрд░реЗрдЬ рдХреЗ рд╕рдорд╛рди рддрд░реАрдХреЗ рд╕реЗ рдкреНрд░рд╢реНрдиреЛрдВ рдХреЛ рд░рджреНрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ: рдПрдХ рдирдпрд╛ рдХрдиреЗрдХреНрд╢рди рдЦреЛрд▓реЗрдВ рдФрд░ рддреБрд░рдВрдд KILL рдХрдорд╛рдВрдб рднреЗрдЬреЗрдВред

рдХреБрдЫ рдкреНрд░реЙрдХреНрд╕реА рдХреЗ рд╕рд╛рде рдорд╛рдорд▓рд╛ рдЕрдзрд┐рдХ рдХрдард┐рди рд╣реИред рдЕрднреА рдРрд╕реЗ рдкреНрд░реЙрдХреНрд╕реА рдбреНрд░рд╛рдЗрд╡рд░ рдХреЗ рд▓рд┐рдП рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдкрд╛рд░рджрд░реНрд╢реА рд╣реИрдВред рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдХрд┐рд╕реА рдЕрдиреНрдп рдореМрдЬреВрджрд╛ рдХрдиреЗрдХреНрд╢рди рдХреЗ рд╕рдорд╛рди рдмреИрдХрдПрдВрдб рдХреЗ рд▓рд┐рдП рдПрдХ рдХрдиреЗрдХреНрд╢рди рдЦреЛрд▓рд╛ рдЧрдпрд╛ рд╣реИ, рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреА рд╡реНрдпрд╡рд╕реНрдерд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред

рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рд╕рдорд╛рди рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд▓рд┐рдП рдПрдХ рдЦреБрд▓рд╛ рдкреАрдЖрд░ рд╣реИ (рдПрдХрд▓ рд╕рд░реНрд╡рд░ рд╕реЗрдЯрдЕрдк рдорд╛рдорд▓реЗ рдХреЗ рд▓рд┐рдП) рдкрд╣рд▓реЗ рд╕реЗ рд╣реА: https://github.com/go-sql-driver/mysql/pull/791

рдореИрдВ MySQL рдХреЗ рд╕рд╛рде рдПрдХ рдлреАрдЪрд░ рдЕрдиреБрд░реЛрдз рд╕рдмрдорд┐рдЯ рдХрд░рдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реВрдВред рдЕрдЧрд░ рдореИрдВ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдЖрдИрдбреА рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╢реНрди рдкреВрдЫрддрд╛ рд╣реВрдВ, рддреЛ рдХреНрдпрд╛ рдпрд╣ рдПрдХ рдкрд┐рдЫрдбрд╝рд╛-рдЕрд╕рдВрдЧрдд рдкрд░рд┐рд╡рд░реНрддрди рдкреИрджрд╛ рдХрд░реЗрдЧрд╛ рдЬрд┐рд╕рд╕реЗ рд╡реЗ рдЗрдирдХрд╛рд░ рдХрд░ рджреЗрдВрдЧреЗ?

рдпрд╣ рдХреЗрд╡рд▓ рд░рджреНрдж рдХрд░рдиреЗ рдХреА рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИред рдХреБрдЫ рдФрд░ рдореБрджреНрджреЗ рд╣реИрдВред
рдкреГрдереНрд╡реА рдкрд░ рдХреЛрдИ "рд░рд┐рдореЛрдЯ рдкрд░ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд░рджреНрдж" рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдирд╣реАрдВ рд╣реИред
рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреЗрд╡рд▓ рдХреБрдЫ CPU рдХреЛ рдмрдЪрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

рд╡реИрд╕реЗ рднреА, рдЗрд╕ рдореБрджреНрджреЗ рдХрд╛ рдХреНрдпрд╛ рдорддрд▓рдм рд╣реИ?
рд░рджреНрджреАрдХрд░рдг рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рд╕реЗ рдЕрдЬреАрдм рд╡реНрдпрд╡рд╣рд╛рд░ рд╕реЗ рдмрдЪрд╛ рдирд╣реАрдВ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдЖрдк рдирд╣реАрдВ рдЬрд╛рди рд╕рдХрддреЗ рдХреНрд╡реЗрд░реА "рд╕рдВрджрд░реНрдн рджреНрд╡рд╛рд░рд╛ рд░рджреНрдж" рдХреЛ MySQL рд╕рд░реНрд╡рд░ рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдпрд╛ рд░рджреНрдж рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдпрд╣ рдЯрд╛рдЗрдорд┐рдВрдЧ рдХрд╛ рдорд╕рд▓рд╛ рд╣реИред
рдХреЗрд╡рд▓ рдЖрдк рд╣реА рд▓реЗрди-рджреЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ; рд╕рднреА рдХреНрд╡реЗрд░реА рдХреЛ рд╡рд╛рдкрд╕ рд░реЛрд▓ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рдпрджрд┐ рд╣рдореЗрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ "рдХреИрдВрд╕рд┐рд▓рд┐рдВрдЧ рдХреНрд╡реЗрд░реА рд▓рд╛рдЧреВ рдХрд░реЗрдВ" рдХреЗ рд▓рд┐рдП рд╕рдорд╕реНрдпрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдПрдХ рдирдпрд╛ рдореБрджреНрджрд╛ рджрд░реНрдЬ рдХрд░реЗрдВ рдФрд░ рдЗрд╕реЗ рдмрдВрдж рдХрд░реЗрдВред

рдпрд╣рд╛рдБ рдореЗрд░рд╛ рд╕рдорд╛рдзрд╛рди рд╣реИ: https://medium.com/@rocketlaunchr.cloud/canceling -mysql-in-go-827ed8f83b30

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕