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"
)
func IsItAliveQuestionMark() {
func IsItAliveQuestionMark(ctx context.Context) {
db, err := sql.Open("pgx", "postgres://pgx_md5:secret@localhost:5432/pgx_test")
if err != nil {
log.Fatal(err)
}
defer db.Close()
if err := db.PingContext(context.Background()); err != nil {
if err := db.PingContext(ctx); err != nil {
log.Fatal(err)
}
}

View file

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