wiki-framework-Transaction

Transaction

Konu başlıkları

 

 Transaction Nedir

Transaction , veri tabanında yapılacak ekleme , silme , güncelleme işlemleri esnasında elektrik kesilmesi , programın crash olması , hafızanın taşması, … gibi durumlarda veri ve işlem kaybını engeller. Veri tabanında yapılacak operasyonların yapıldığının veya yapılmadığının garantisi verir.

Transaction Çalışma Mantığı

Transaction , bu veri kayıplarını kendi içerisindeki 3 aşamalı mekanizma ile engellemektedir.

  • Birinci aşamada , programcıdan yapmak istediği operasyonları alır.

 

 

 

TRANSACTION_ASAMA_1

 

 

 

  • İkinci aşamada transaction bu bilgileri hemen veri tabanından silinmez.SQL motoru , veri tabanında programcının yapmak istediği operasyonlara ait tüm bilgileri saklar ve diske yazar.

 

 

 

TRANSACTION_ASAMA_2

 

 

 

  • Üçüncü aşamada ise operasyon bilgilerine bakarak operasyonlar veri tabanında gerçekleştirilir.

 

 

 

TRANSACTION_ASAMA_3

 

 

 

Transaction , bu aşamalardan üçüncü aşamaya geleceğe kadar , hiç bir şekilde veri tabanındaki verilere dokunmaz.Birinci veya ikinci aşamalarda bir engel oluştuğunda , transaction operasyonları iptel eder.Üçüncü aşamada ise ne olursa olsun operasyonlar veri tabanında yapılır. Böylelikle veri tabanında operasyon güvenliği sağlanır , yani yapılmak istenen operasyonların yapıldığı veya yapılmadığı garanti altına alınmış olur.

 Transaction Fonksiyonları
 START_TRANSACTION
  • Transaciton mekanizmasını çalıştırır.
  • Bu fonksiyon çağırıldıktan sonra programcı yapacağı tüm veri tabanı operasyonlarını yapar.
  • Transaction'ın programcıdan operasyonları aldığı aşama yani birinci aşamadır.
COMMIT_TRANSACTION
  • Bu fonksiyon , programcı yapacağı yapacağı operasyonları aldıktan sonra , birinci aşamadan ikinci aşamaya geçildiği bölümdür.
  • Veri tabanında yapılacak operasyonlar programcıdan alınarak , operasyonlar SQL motoruna devredilir.
  • SQL motoru bu fonksiyondan sonra , operasyon bilgilerini diske kaydeder ve üçüncü aşamaya geçerek operasyonları gerçekleştirir.
 CANCEL_TRANSACTION
  • Bu fonksiyon transaction'ı sonlandırır. Fonksiyon , sadece start_transaction ve commit_transaction fonksiyonları arasında çalışır.
  • Transaction tamamen sonlanır , transaction ile yapılmak istenen tüm operasyonlar iptal edilir.
  • commit_transaction fonksiyonundan sonra engellenemeyen işlemler başlatılır.Çünkü operasyonların kontrolü programcıdan çıkar.Sql motoru devreye girer.
 Transaction Örneği
  • Transaction başlatıldı.Programcı veri tabanında güncelleme operasyonu yapmak istiyor.Programcıdan , güncelleme operasyonu bilgileri alındı ve commit_transaction fonksiyonu ile kontrol SQL motoruna bırakıldı. Artık SQL motoru , operasyon bilgilerine bakarak veri tabanında kayıtları güncelleyecektir.
   DB->START_TRANSACTION();
   SQL_QUERY sql_query ( DB );
   sql_query.PREPARE_UPDATE ( "k9_sabit_degerler","sabit_deger_id","adr_mail_server_adi,"
                             "adr_mail_port,adr_mail_baglanti_guvenligi","" );
   sql_query.SET_VALUE    ( ":adr_mail_server_adi",        m_ui->lineEdit_mail_server->text() );
   sql_query.SET_VALUE    ( ":adr_mail_port",              m_ui->lineEdit_port->text());
   sql_query.SET_VALUE    ( ":adr_mail_baglanti_guvenligi", m_ui->comboBox_mail_baglanti_guvenligi->currentText() );
   sql_query.UPDATE();
   DB->COMMIT_TRANSACTION();