Sobes.tech
Middle+

PostgreSQL және MySQL-де транзакциялар қалай жұмыс істейді?

sobes.tech AI

AI-дан жауап

PostgreSQL және MySQL-дағы транзакциялар атомдылықты, келісімділікті, оқшаулануды және тұрақтылықты (ACID) қамтамасыз етеді.

  • PostgreSQL-да транзакциялар BEGIN-мен басталып, COMMIT немесе ROLLBACK-пен аяқталады. MVCC (көп нұсқалы бәсекелестік) қолдау көрсетіледі, бұл оқуларды блоктамай транзакцияларды оқшауландыруға мүмкіндік береді.

  • MySQL-да мінез-құлық сақтау қозғалтқышына байланысты. Мысалы, InnoDB MVCC және оқшаулану деңгейлерін қолдайды, ал MyISAM — жоқ.

Мысал Go тілінде дерекқорды пайдалана отырып:

import (
    "database/sql"
    _ "github.com/lib/pq" // PostgreSQL үшін
)

func example(db *sql.DB) error {
    tx, err := db.Begin()
    if err != nil {
        return err
    }
    defer tx.Rollback()

    _, err = tx.Exec("INSERT INTO users(name) VALUES($1)", "Alice")
    if err != nil {
        return err
    }

    return tx.Commit()
}

Осылайша, транзакциялар бірнеше операцияны бір бүтін ретінде топтастыруға мүмкіндік береді, ол толық орындалса немесе қате болған жағдайда қайтарылса, орындалады.