Transaction.

Slides:



Advertisements
Benzer bir sunumlar
ÖRNEK BİR VERİTABANI TASARIMI VE NORMALİZASYONU
Advertisements

T sql-diğer komutlar Metin Akbulut.
III.Oturum: SQL ile Verileri İşlemek
VERİ TABANI YÖNETİMİ Ders 11: PL/SQL’e Giriş
VERİ TABANI II- 4.HAFTA ALT SORGULAR Türetilmiş ve İLİntİlİ tablolar
SQL de Değişken Tanımlama
SQL Komutlar 5 Sibel SOMYÜREK.
EkoPC Bilişim Ltd. Eğitim Hizmetleri
VERİ TABANI ve YÖNETİMİ
Alt Sorgular Veritabanı 2.
Veri Tabanı Yönetim Sistemleri
Tek Tablo İçinde Sorgulamalar
Veritabanı Yönetim Sistemleri Hızlı ve Kısa Giriş
T-SQL-2.Konu Akış Kontrolleri.
VERİ TABANI ve YÖNETİMİ
Transaction.
VeriTabanı Uygulama. Tabloları yaratmak için MySQL komutları.
Tetikleyici. Nedir? Bir tablo üzerinde Ekleme silme ve güncellemeye bağlı olarak tetiklenip çalışan SQL kodlarıdır. Genel amacı veri bütünlüğünü korumaktır.
SQL (STRUCTURED QUERY LANGUAGE)
1.  Bazı durumlarda, birden fazla işlem bir bütünün parçasıdır. Bu işlemlerden biri bile gerçekleşmese bütün işlemler anlamsız kalabilir  Bu türden.
VERİ TABANI ve YÖNETİMİ
VIEW (BAKIŞ) OLUŞTURMA
VIEW lerle çalışmak 11.BÖLÜM.
ÖRNEKLER. musteri Id adi soyadi mus_satis Id barkod adet Urunlar barkod urun_adi kodu fiyati Stok_hareket tarih barkod gelen giden.
SQL Dili ve MySQL Komutları
SQL’e Giriş ve SELECT Komutu
SQL de Değişken Tanımlama
VeriTabanı Uygulama.
SQL Sibel SOMYÜREK.
SQL Komutları (2) Uzm. Murat YAZICI.
Veritabanı Yedekleme (BACKUP)
Bilgisayar Mühendisliği Bölümü
GRANT RESOURCE TO ayse; GRANT CONNECT TO ayse;
SQL’ e Giriş Uzm. Murat YAZICI.
Bilgisayar Mühendisliği Bölümü
Bölüm 4: İleri SQL.
Bölüm 8: SQL’de Yetkilendirmeler (Veri Kontrol Dili – DCL)
Update UPDATE tablo_ismi SET sutun1=‘deger1’ WHERE sutun=deger.
GÜVENL İ K. Sunucu Seviyesinde Güvenlik Master Veritabanı (Kullanıcının gerekli yetkileri var mı?) Authentication Mod ◦ Windows Authentication Mod  Varsayılan.
Yeni Veritabanı Oluşturma
Veri Tabanı Yönetimi Dersi 7. Laboratuvarı Arş. Gör. Pınar CİHAN.
S ORGU / DML / DDL KOMUTLARı İbrahim Onur Sığırcı.
Yapısal Sorgulama Dili SQL VTYS Giriş Hafta 5 Ders Notu.
Sunum Planı 2 Veri Temelleri Veri & Bilgi Dijital Veri & Sayısallaştırma Dijital Veri Saklama Veritabanı Veri Saklama VTYS SQL Veri Yönetimi Veri Ambarı.
View View’ler select ifadesi ile tanımlanmış sanal tablolardır. Temel amacı base tabloların içerisinden veri kümesi getirip ortaya çıkan sonucu sanal.
Veri Tabanı Yönetimi Dersi 1. Laboratuvarı Arş. Gör. Pınar CİHAN.
 Stored Procedure kısaca SQL sorgularını isteğimize göre hazırlayıp kullanıma hazır veri tabanı nesnesine çeviren bir araçtır.  Stored Procedure, Türkçeye.
Öğretim Görevlisi Alper Talha Karadeniz Veri Tabanı 2
Veri Tabanı Yönetimi Dersi 1. Laboratuvarı
© Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi
ÖRNEK BİR VERİTABANI TASARIMI VE NORMALİZASYONU
© Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi
VIEW lerle çalışmak 11.BÖLÜM.
Transaction ve Örnekler
© Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi
TETİKLEYİCİ ( Trigger)
TETİKLEYİCİLER ve HATA KONTROLÜ
14.DERS Örnekler, Sorular BUKET DOĞAN.
SQL SERVER STORED PROCEDURE
VERİ TABANI SQL (STRUCTURED QUERY LANGUAGE) SAVAŞ TUNÇER.
Öğretim Görevlisi Alper Talha Karadeniz Veri Tabanı 1
© Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi
Sorgu / dml / ddl komutları
SQL (STRUCTURED QUERY LANGUAGE)
Stored Procedure Öğr.Gör.Metin Akbulut.
SQL Server - Triggers.
VERİ TABANI II- 4.HAFTA ALT SORGULAR Türetilmiş ve İLİntİlİ tablolar
SQL Server - Stored Procedures
SQL Server - Views.
SQL VIEW.
Sunum transkripti:

Transaction

Giriş Veritabanı sistemlerini yüzeysel kullanan geliştiriciler için çok basit gelen işlemler aslında mimari olarak geri planda bir çok iş sürecinin doğru yürütülmesiyle meydana gelmektedir. Bu iş süreçleri veritabanı motoru tarafından yönetilir. Ancak, depoladığımız veriyle ilgili işlemlerin bütünlüğü tamamen bize, yani geliştiriciye aittir.

Giriş Örneğin, birbiriyle ilişkili bir sorgu yapısı var ve biz bu kodların tamamının doğru çalışması halinde başarılı bir işlem gerçekleştirmiş olacak isek, bu durumda herhangi bir parça işlemin başarısız olması halinde diğer yapılan tüm işlemlerin geri alınması mantıklı olacaktır.

Transaction Bir veya daha fazla SQL ifadesinden meydana gelen tek bir işlemdir. SQL ifadelerin tamamı bir bütün olarak düşünülür ve daha küçük iş parçalarına ayrılamaz. Bir transaction içerdiği SQL ifadelerini tamamını gerçekleştirir veya hiçbirini gerçekleştirmez. İşlemlerin tamamı gerçekleşmediği sürece işlemlerin hiçbiri gerçekleşmemiş sayılır.

Şekilde görüldüğü gibi tüm işlemlerin gerçekleşip "commit" komutunun çalıştırılabilmesi için hepsinin başarılı olması gerekmektedir. Bir tanesi bile hatalı olduğunda "rollback" komutu çalışır ve gerçekleştirilmesi istenilen tüm işlemler iptal edilir.

Örnek Bir banka örneği ile transaction yapısını açıklayalım. Bir müşteri kendi hesabından başka bir hesaba 1500 TL para transferi yapıyor. Bu işlemin iki adımı vardır. İlk adım kişinin hesabından transfer edilcek para, ikinci adım ise diğer kişinin hesabına transfer edilecek olan tutarın eklenmesidir. Bu işlemleri gerçekleştircek SQL ifadeleri: update hesaplar set bakiye=bakiye-1500 where hesap_no=1453 update hesaplar set bakiye=bakiye+1500 where hesap_no=1454

Örnek(Devamı) Bu işlemlerden birincisi gerçekleştikten sonra herhangi bir sorundan dolayı ikinci işlem gerçekleşmezse hesapla ilgili ciddi sorunlar yaşanabilir. Bu tür sorunları engellemek için transaction yapıları kullanılır.Transaction her iki işlemide tek bir işlem olarak ele alacağı için herhangi birisi gerçekleşmediği zaman diğer gerçekleşen işlemleride yok sayacaktır. Yani gerçekleşen işlem geri alınacaktır(Bu işlem rollback olarak adlandırılır.). Eğer işlemlerin tamamı sorunsuz bir şekilde gerçekleşirse tüm işlemleri kalıcı hale getirecektir. (Bu işlem commit olarak adlandırılır. )

begin tran declare @bakiye int select @bakiye=Bakiye from banka where hesapno='001' update banka set Bakiye=Bakiye-1000 where hesapno='001' update banka set Bakiye=Bakiye+1000 where hesapno='002' if @bakiye>=1000 commit else rollback tran select * from banka

Transaction Transaction yapıları transaction logları adı verilen yöntemi kullanılır. Bu yöntemle bir transaction başladıktan sonra SQL ifadeleri için kullanılan verileri tutan sayfalar diskten hafızaya aktarılır ve SQL ifadesiyle istenilen değişiklikler hafıza üzerindeki bilgilerde yapılır. Daha sonra yapılan değişikliklerin aynısını içeren transaction logları diske yazılır. Transaction işlemi başarılı ise COMMIT ifadesi ile değişiklikler kalıcı hale getirilir. Eğer işlemler esnasında bir sorun olmuşsa ROLLBACK ifadesi ile veriler ilk baştaki değişiklik yapılmış haline geri döner.

Transaction hazırlanırken dikkat edilcek hususlar : Transaction içerisindeki SQL ifadeleri veriler üzerinde değişiklik yapabileceği için veritabanı yöneticisi kullanıcılar için gerekli izinleri vermelidir. Transaction işlemi veri veya veritabanı nesneleri üzerinde değişiklik yapacak SQL ifadeleri içerebilir. (INSERT, UPDATE, DELETE, CREATE, ALTER, DROP) Bir veritabanı yönetim sisteminin veri kurtarma mekanizması transaction'lara bağlıdır. Bir VTYS başarısızlık sonrasında verileri geri alacağı zaman tüm transaction'ların veritabanına aktarılıp aktarılmadığını tespit etmek için transaction loglarını kontrol eder.

Transaction hazırlanırken dikkat edilecek hususlar : VTYS yedekleme ve geri yükleme işlemlerini transaction logları üzerinden gerçekleştirir. Çeşitli nedenlerden dolayı veritabanını ve ona ait transaction logları ayrı bir disk üzerinden tutulmalıdır.

Transaction Başlatma ve Bitirme Transaction ya hep ya hiç mantığıyla çalıştığı için başlangıç ve bitiş noktaları belirlenmelidir. Transaction BEGIN TRANSACTION ifadesiyle başlar ve COMMIT veya ROLLBACK ifadesiyle son bulur.

Örnek: Kütüphane veritabanı içinde bulunan kitaplar tablosu için örnek bir transaction işlemi gerçekleştireceğiz. Update ifadesi kitapların tamamının sayfa sayısını sıfır(0) yapacaktır. Daha sonra SELECT ile tablonun son durumunu listeleyecektir. Sonraki slaytta her adımdan sonra tablodaki değişimler gösterilmiştir.

Örnek: begin transaction update kitaplar set s_sayisi=0 Tablonun ilk hali Örnek: ISBN Kitap_adi Yayin_tarihi S_sayisi 123 Algoritma 1.1.2010 300 312 Programlama 2.1.2010 200 begin transaction update kitaplar set s_sayisi=0 update kitaplar set kitap_adi='deneme' select * from kitaplar rollback ISBN Kitap_adi Yayin_tarihi S_sayisi 123 Algoritma 1.1.2010 312 Programlama 2.1.2010 ISBN Kitap_adi Yayin_tarihi S_sayisi 123 deneme 1.1.2010 300 312 2.1.2010 200 ISBN Kitap_adi Yayin_tarihi S_sayisi 123 Algoritma 1.1.2010 300 312 Programlama 2.1.2010 200

Save Transaction Uzun transaction işlemleri için transaction kendi içerisinde savepoint adı verilen küçük parçalara ayrılır. Her bir bölüm commit ile veritabanına aktarılabilir veya rollback ile işlem geri alınabilir. Kullanım şu şekildedir. Save transaction savepoint_ismi (sql cümleleri) Commit (yada) rollback transaction savepoint_ismi

Örnek : Kitaplar tablosu için aşağıda örnek bir transaction işlemi verilmiştir. Verilen kodlar içerisinde ROLLBACK ve ROLLBACK savepoint işlemlerine örnek teşkil etmektedir.

Örnek : Tablonun ilk hali ISBN Kitap_adi Yayin_tarihi S_sayisi 123 Algoritma 1.1.2010 300 312 Programlama 2.1.2010 200 begin transaction save transaction deneme update kitaplar set s_sayisi=0 select * from kitaplar rollback transaction deneme update kitaplar set kitap_adi='deneme' rollback ISBN Kitap_adi Yayin_tarihi S_sayisi 123 Algoritma 1.1.2010 312 Programlama 2.1.2010 ISBN Kitap_adi Yayin_tarihi S_sayisi 123 Algoritma 1.1.2010 300 312 Programlama 2.1.2010 200 ISBN Kitap_adi Yayin_tarihi S_sayisi 123 deneme 1.1.2010 300 312 2.1.2010 200 ISBN Kitap_adi Yayin_tarihi S_sayisi 123 Algoritma 1.1.2010 300 312 Programlama 2.1.2010 200

Örnek : Kodlar incelendiğinde transaction işlemi başladığında değişiklik yapılmamış durumu deneme noktası olarak oluşturulmuştur. Daha sonra kitapların sayfa sayısı sıfır yapılmıştır. Sonra rolback savepoint deneme komut satırı ile yapılan değişiklikler iptal edilmiş olup sayfa sayısı bilgisi ilk haline gelmiştir. Sonra kitap isimleri deneme olarak değiştirilmiştir. Sonra rollback satırı bu işlemde geri alınmıştır. Önceki slaytta her adımdan sonra tablodaki değişimler gösterilmiştir.