Rumah  >  Artikel  >  pangkalan data  >  Ciri-ciri ACID dan kaedah pelaksanaan transaksi pangkalan data hubungan MySQL

Ciri-ciri ACID dan kaedah pelaksanaan transaksi pangkalan data hubungan MySQL

PHPz
PHPzke hadapan
2023-05-28 17:01:271674semak imbas

1. Ciri-ciri ACID terperinci urus niaga

ASID ialah empat ciri yang mesti dimiliki untuk memastikan sesuatu transaksi adalah betul dan boleh dipercayai:

  • Atomicity: Operasi dalam transaksi berjaya atau gagal pada masa yang sama.

  • Ketekalan: Transaksi pangkalan data tidak boleh memusnahkan integriti data dan ketekalan logik perniagaan.

  • Pengasingan: Transaksi tidak menjejaskan operasi transaksi lain.

  • Ketahanan: Selepas urus niaga selesai, pengubahsuaian yang dibuat oleh urus niaga harus diteruskan dalam pangkalan data dan tidak akan ditarik balik.

Ambil A memindahkan 100 yuan kepada B sebagai contoh:

  • Atomicity: A Kerugian 100 yuan berlaku pada masa yang sama dengan penerimaan 100 yuan B.

  • Ketekalan: Akaun A tidak boleh negatif selepas kehilangan 100 yuan.

  • Pengasingan: Jika akaun A kehilangan 1 yuan dengan melaksanakan transaksi B semasa melaksanakan transaksi ini, maka ia sepatutnya kehilangan 101 yuan antara satu sama lain.

  • Kegigihan: Akaun A tidak boleh mendapatkannya semula selepas kehilangan 100 yuan.

2. Pelaksanaan transaksi MySQL

Transaksi MySQL dilaksanakan oleh enjin storan InnoDB.

Anda boleh memulakan transaksi secara eksplisit dengan arahan berikut:

start transaction / (Begin);
#一条或多条sql语句
Commit;

Selain itu, dalam mod autokomit, setiap SQL yang kami laksanakan Penyata adalah transaksi bebas; jika mod autokomit dimatikan, semua penyata SQL berada dalam satu transaksi sehingga komit atau rollback dilaksanakan, urus niaga tamat dan transaksi lain bermula.

Ciri-ciri ACID urus niaga MySQL dilaksanakan oleh mekanisme berikut:

  • Atomicity: batal log, log logik , rekod maklumat berkaitan pelaksanaan SQL. Apabila pemulangan berlaku, InnoDB akan melakukan perkara yang bertentangan dengan kerja sebelumnya berdasarkan kandungan log buat asal

  • Kegigihan: buat semula log, yang akan dipanggil apabila urus niaga dilakukan Antara muka fsync mengepam log buat semula.

  • Pengasingan: Mekanisme kunci dan MVCC.

  • Ketekalan: Reka bentuk pangkalan data itu sendiri.

3. Penggunaan transaksi Gorm

Go language Gorm menyediakan sokongan untuk operasi transaksi:

db.Transaction(func(tx *gorm.DB) error {
  // 在事务中执行一些 db 操作(从这里开始,您应该使用 'tx' 而不是 'db')
  if err := tx.Create(&Animal{Name: "Giraffe"}).Error; err != nil {
    // 返回任何错误都会回滚事务
    return err
  }

  if err := tx.Create(&Animal{Name: "Lion"}).Error; err != nil {
    return err
  }

  // 返回 nil 提交事务
  return nil
})

Selain itu, sebagai serta operasi seperti transaksi bersarang dan transaksi manual, anda boleh merujuk kepada dokumen Cina: Pengenalan terperinci kepada transaksi Go GORM

4. Penggunaan transaksi Spring

public class AClass {

    @Transactional(rollbackFor = Exception.class)
    public void aFunction() {
        //todo: 数据库操作A(增,删,该)
    }
}

@Anotasi transaksi mesti ditambah. kepada kaedah awam , kaedah persendirian dan dilindungi adalah tidak sah.

Secara amnya, adalah disyorkan untuk menambah anotasi @Transactional pada kaedah, kerana @Transactional ditambahkan terus pada kelas atau antara muka dan anotasi @Transactional akan berkesan untuk semua kaedah awam dalam kelas atau antara muka , yang akan menjejaskan prestasi .

Atas ialah kandungan terperinci Ciri-ciri ACID dan kaedah pelaksanaan transaksi pangkalan data hubungan MySQL. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam