More database/sql fixes

This commit is contained in:
Ilya Sinelnikov 2021-04-08 16:41:48 +03:00
parent e1cf5d8de3
commit dab4076625
2 changed files with 17 additions and 17 deletions

View file

@ -8,14 +8,14 @@ import (
_ "github.com/jackc/pgx/v4/stdlib" _ "github.com/jackc/pgx/v4/stdlib"
) )
func IsItAliveQuestionMark() { func IsItAliveQuestionMark(ctx context.Context) {
db, err := sql.Open("pgx", "postgres://pgx_md5:secret@localhost:5432/pgx_test") db, err := sql.Open("pgx", "postgres://pgx_md5:secret@localhost:5432/pgx_test")
if err != nil { if err != nil {
log.Fatal(err) log.Fatal(err)
} }
defer db.Close() defer db.Close()
if err := db.PingContext(context.Background()); err != nil { if err := db.PingContext(ctx); err != nil {
log.Fatal(err) log.Fatal(err)
} }
} }

View file

@ -1,5 +1,5 @@
database/sql database/sql
Лекция 7 Лекция 9
Синельников Илья Синельников Илья
@ -12,8 +12,8 @@ database/sql
- абстракция для работы с SQL базами данных - абстракция для работы с SQL базами данных
- набор интерфейсов для написания драйверов - набор интерфейсов для написания драйверов
- многие драйверы имеют "расширенный" функционал - нет продвинутых возможностей (например, батчинг)
- не умеет некоторые продвинутые возможности (например, батчинг) - драйверы часто имеют расширенный API
.code sql/driver.go /^type Driver/,/^}/ .code sql/driver.go /^type Driver/,/^}/
.code sql/driver.go /^type QueryerContext/,/^}/ .code sql/driver.go /^type QueryerContext/,/^}/
@ -29,12 +29,12 @@ database/sql
* Основные сущности * Основные сущности
- DB - connection pool к базе - DB - connection pool к базе
- Rows - результаты запроса - Rows - результат запроса
- Row - одна строка из результата запроса - Row - одна строка из результата запроса
- Null* - типы для работы с Null значениями - Null* - типы для работы с Null значениями
- Tx - транзакция - Tx - транзакция
- Stmt - подготовленый запрос
- Conn - одно подключение к базе - Conn - одно подключение к базе
- Stmt - подготовленый запрос
* Проверка доступности * Проверка доступности
@ -78,11 +78,11 @@ database/sql
* Null в результатах * Null в результатах
.code nulls/rows.go /^func Results/,/^}/ .code nulls/rows.go /^func Results/,/^}/
* Одно подключение * Работа с конкретным подключением к БД
.code conn/conn.go /^func Conn/,/^}/ .code conn/conn.go /^func Conn/,/^}/
* Транзакции * Работа с транзакциями
.code tx/tx.go /^func Begin/,/^}/ .code tx/tx.go /^func Begin/,/^}/
@ -95,6 +95,7 @@ database/sql
Минусы: Минусы:
- удобство - удобство
- производительность - производительность
- несовместимы с некоторыми режимами работы пулеров коннектов
* Prepare * Prepare
@ -117,32 +118,31 @@ database/sql
* Основные типы граблей * Основные типы граблей
- исчерпание ресурсов - неосвобождение ресурсов
- дедлоки - дедлоки
- комбинация первого и второго
- нюансы каждого отдельного драйвера - нюансы каждого отдельного драйвера
* Context * Context - вечные запросы
.code resources/ctx.go /^func NoContext/,/^}/ .code resources/ctx.go /^func NoContext/,/^}/
* Запросы - исчерпание ресурсов * Запросы - неосвобождение ресурсов
.code resources/rows.go /^func RowsExhaust/,/^}/ .code resources/rows.go /^func RowsExhaust/,/^}/
* Коннекты - исчерпание ресурсов * Коннекты - неосвобождение ресурсов
.code resources/conn.go /^func ConnExhaust/,/^}/ .code resources/conn.go /^func ConnExhaust/,/^}/
* Транзакции - исчерпание ресурсов * Транзакции - неосвобождение ресурсов
.code resources/tx.go /^func TxExhaust/,/^}/ .code resources/tx.go /^func TxExhaust/,/^}/
* Транзакции - deadlock * Транзакции - исчерпание ресурсов приводящее к deadlock
.code resources/tx.go /^func TxDeadlock/,/^}/ .code resources/tx.go /^func TxDeadlock/,/^}/
* Запросы - deadlock * Запросы - исчерпание ресурсов приводящее к deadlock
.code resources/queries.go /^func QueryDeadlock/,/^}/ .code resources/queries.go /^func QueryDeadlock/,/^}/