Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Commit Sorunu
#1
Arkadaşlar
Delphi 10.2 , firebird 2.5 ve FireDac Kullanıyorum
Çok kullanıcılır bir sistemim var

Database kayıt sistemim aşağıdaki gibidir

try
  Connection.StartTransection
  Sql.Cumleciği
  ExecSql 
  Connection.Commit
except
  Connection.Rollback
end


connection nesnemde isolation = xiReadCommitted

Arkadaşlar sorun çok kullanıcılı sistem A kullanıcısı bir kayıt yapıyor B kullanıcısı bu kaydı A kullanıcısı programdan çıkmadığı sürece göremiyor.
Daha önce IBSql Kullanıyordum FireDac a geçince bu sorunu yaşamaya başladım sebebi nedir.
Cevapla
#2
"commitretaining" denermisiniz
WWW
Cevapla
#3
esistem'e cevabı için tşk ederim ama hiç işe yaramadı, hep karıştı hatta lock a sebeb oldu

Gerçekten çok ciddi bir sorun bu eskide IB Nesleri ile hiç karşılaşmadığım bir sorun yaşıyorum fireDAC hiçte anlatıldığı gibi düzgün çalışmıyor. ve çok çorbaya çevirmişler transection,commit ve rolback işlerini Database nesnesinin üzerine taşımışlar, Transection nesnesi işe yarayacağı tam belli değil ne yapmaya çalışmışlar anlamış değilim.
kayıt bazen commit oluyor bazen olmuyor ne zaman nasıl olduğunu bir türlü çözemedim karşılaşan hocalarımız varsa lütfen bilgilerini bizimle paylaşırsa çok sevinirim. Çok kullanıcılı sistemdem bahsediyorum lokal kullanımda sorun çıkmıyor ama ağ üzerinde sorun büyük.
Cevapla
#4
bir kullancı 1 faturaya girdi ise başka kullancı aynı faturaya girmesine engeleme şeklinde sorunu çözebilirsin. aynı kayda 1 kişi düzenleme ve kayıt işlemi yapabilir.
Cevapla
#5
(26-11-2021, Saat: 23:42)muratsenocak Adlı Kullanıcıdan Alıntı: esistem'e cevabı için tşk ederim ama hiç işe yaramadı, hep karıştı hatta lock a sebeb oldu

Gerçekten çok ciddi bir sorun bu eskide IB Nesleri ile hiç karşılaşmadığım bir sorun yaşıyorum fireDAC hiçte anlatıldığı gibi düzgün çalışmıyor. ve çok çorbaya çevirmişler transection,commit ve rolback işlerini Database nesnesinin üzerine taşımışlar, Transection nesnesi işe yarayacağı tam belli değil ne yapmaya çalışmışlar anlamış değilim.
kayıt bazen commit oluyor bazen olmuyor ne zaman nasıl olduğunu bir türlü çözemedim karşılaşan hocalarımız varsa lütfen bilgilerini bizimle paylaşırsa çok sevinirim. Çok kullanıcılı sistemdem bahsediyorum lokal kullanımda sorun çıkmıyor ama ağ üzerinde sorun büyük.

Şu an sistemimde FireDac Kurulu değil ama Kullanıdğın Query componentinde sanırım AutoCommit gibi boolean bir özellik olması gerekiyor bunun true olduğundan emin olmanı tavsiye ederim.
Cevapla
#6
Size "transaction isolation levels" gibi bir arama sonucunu dikkatlice okumanızı önerebilirim. Bahsettiğiniz sorun ne FireDAC'ın ne de FireBird'ün sorunu. Henüz commit edilmemiş verilerin başka sessionlar tarafından görüntülenebilmesine Read Uncomiitted isolation level adı verilir. Ama bu izolasyon seviyesinin kendince bir kısım sıkıntıları da vardır. Size basit bir örnek vereyim:

Read Uncomitted bir transaction isolation level'de aşağıdaki senaryoda bir sıkıntı oluşur.

1- Update Maaslar SET Maas = 2000 WHERE ID = 1453; (A Kullanıcısı bu işi transaction içinde yapıyor)
2- SELECT Maas FROM Maaslar WHERE ID = 1453; (B Kullanıcısı bu arada maaş bilgisini çekti. Maas = 2000)
3- ROLLBACK TRANSACTION (A kullanıcısı bir nedenden ötürü tüm işlemleri iptal etti, dolayısı ile Maas bilgisi tekrar 1000 TL'ye geri döndü)

Yukarıdaki senaryoda B kullanıcısı henüz commit edilmemiş verileri okuyabildiği için; elinde yanlış bir kayıt olacak. Buna benzer başka sıkıntılarda mevcut hayalet kayıtlar gibi.

Bu nedenle transaction isolation levels ile ilgili okumalar yapmanız oldukça faydalı olacaktır.
Mal sahibi, mülk sahibi
Hani bunun ilk sahibi ?
Mal da yalan mülk de yalan
Var biraz da sen oyalan...
WWW
Cevapla
#7
(28-11-2021, Saat: 00:10)Tuğrul HELVACI Adlı Kullanıcıdan Alıntı: Size "transaction isolation levels" gibi bir arama sonucunu dikkatlice okumanızı önerebilirim. Bahsettiğiniz sorun ne FireDAC'ın ne de FireBird'ün sorunu. Henüz commit edilmemiş verilerin başka sessionlar tarafından görüntülenebilmesine Read Uncomiitted isolation level adı verilir. Ama bu izolasyon seviyesinin kendince bir kısım sıkıntıları da vardır. Size basit bir örnek vereyim:

Read Uncomitted bir transaction isolation level'de aşağıdaki senaryoda bir sıkıntı oluşur.

1- Update Maaslar SET Maas = 2000 WHERE ID = 1453; (A Kullanıcısı bu işi transaction içinde yapıyor)
2- SELECT Maas FROM Maaslar WHERE ID = 1453; (B Kullanıcısı bu arada maaş bilgisini çekti. Maas = 2000)
3- ROLLBACK TRANSACTION (A kullanıcısı bir nedenden ötürü tüm işlemleri iptal etti, dolayısı ile Maas bilgisi tekrar 1000 TL'ye geri döndü)

Yukarıdaki senaryoda B kullanıcısı henüz commit edilmemiş verileri okuyabildiği için; elinde yanlış bir kayıt olacak. Buna benzer başka sıkıntılarda mevcut hayalet kayıtlar gibi.

Bu nedenle transaction isolation levels ile ilgili okumalar yapmanız oldukça faydalı olacaktır.

Tuğrul hocam cevabınız için çok tşk ederim. ama sorun tam bu şekilde değil 

A client Yukarıda bahsettiğim yöntemle kayıt yapıyor. B kullanıcı bu kayda henüz erişmemiş durumda bu esnada sonra  B client girilen kaydı kontrol ettiğinde kaydı hiç yapılmamış veya değişiklik yapılmamış halini görüyor A kullanısı programı kapattığında B kullanıcısı A kullanıcısının yapmış olduğu değişiklikleri görebiliyor. yanı firedac sanki kayıtları biryerde biriktirip sonradan programı kapatınca commit ediyormuş gibi bir durum oluyor yanlız bu herseferinde bu şekilde değil günde birkaç kez tekrar ediyor sebebini bir türlü bulamıyorum
Cevapla
#8
Ben daha önce buna benzer bir sorun yaşamıştım. Forumda arkadaşlar sağ olsun yardımcı olmuştular. Bu konu işinize yarar belki.

https://www.delphican.com/showthread.php?tid=5875
Cevapla
#9
(24-11-2021, Saat: 15:23)muratsenocak Adlı Kullanıcıdan Alıntı: Arkadaşlar
Delphi 10.2 , firebird 2.5 ve FireDac Kullanıyorum
Çok kullanıcılır bir sistemim var

Database kayıt sistemim aşağıdaki gibidir

try
  Connection.StartTransection
  Sql.Cumleciği
  ExecSql 
  Connection.Commit
except
  Connection.Rollback
end


connection nesnemde isolation = xiReadCommitted

Arkadaşlar sorun çok kullanıcılı sistem A kullanıcısı bir kayıt yapıyor B kullanıcısı bu kaydı A kullanıcısı programdan çıkmadığı sürece göremiyor.
Daha önce IBSql Kullanıyordum FireDac a geçince bu sorunu yaşamaya başladım sebebi nedir.

               //------------------------------------------------------------------------------------
               //-Farkli Client yada App'larda yapilan degisikligin digerlerinde hemen gorulmemesi hatası
               //-FireBird de asagidaki sekilde cozuldu
               //------------------------------------------------------------------------------------
               //-Aslinda db ye kayit yapiliyor fakat diger client nedense gormuyor cozumu
               //-FdConnection ayarlari-------
               //-1-FdConnection.Transaction = nil
               //-2-FdConnection.UpdateTransaction = FdTransaction1
               //-3-FdConnection.Isolation = xiReadCommited   olacak  (transaction yoksa )
               //-4-FdConnection da Transaction ve UpdateTransaction her ikisini kullanmasanda olur biri yani UpdateTransaction tercih et
               //-Connectionda yapilacaklar 4 maddede bunlar
               //------------------------------------------------------------------------------------
               //-FdTransaction Nesne ayarlari---------------------------
               //-1-FDTransaction.Isolation = xiReadCommited olacak
               //-2-FDTransaction diger ayarlar defaultta kalsin
               //-------FDTransaction.Isolation = xiReadCommited farkli db turlerinde uyum saglamayabilir FireBird de olumlu.
               //------------------------------------------------------------------------------------
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  dbeaver da tbaloda auto increment sorunu sadikacar60 2 1.111 04-11-2021, Saat: 10:02
Son Yorum: sadikacar60
  Firebird Ondalık Sorunu sunbeki 9 3.164 20-03-2021, Saat: 21:34
Son Yorum: ozcanm
  Firebird 3 kurulum ve çalışma sorunu Ahmet İPEKÇİ 5 3.412 02-12-2020, Saat: 05:42
Son Yorum: Ahmet İPEKÇİ
  Firebird BLOB SUB_TYPE TEXT Sorunu MuhammedYasir 3 1.939 20-10-2020, Saat: 21:55
Son Yorum: bibilen
  Çözüldü-store procedurde değişken kullanma sorunu sadikacar60 2 2.385 06-05-2019, Saat: 07:54
Son Yorum: sadikacar60



Konuyu Okuyanlar: 1 Ziyaretçi