SORU
27 EYLÜL 2009, Pazar


SQL Server ile GÜNCELLEMEK İÇİN SEÇİN

İzolasyon seviyesi READ_COMMITTED READ_COMMITTED_SNAPSHOT=ON Microsoft SQL Server 2005 veritabanı kullanıyorum.

Şimdi kullanmak istiyorum:

SELECT * FROM <tablename> FOR UPDATE

...diğer veritabanı bağlantıları aynı satır erişmeye çalışırken blok yani "GÜNCELLEŞTİRME".

Denedim:

SELECT * FROM <tablename> WITH (updlock) WHERE id=1

...ama bu diğer tüm bağlantıları engeller bile bir kimliği dışında seçme "1".

SELECT FOR UPDATE yapmak için doğru bir ipucu Oracle olarak bilinen, DB2, MySql mi?

2009-10-03 DÜZENLEME:

Bu tablo ve dizin oluşturmak için ifadeleri

CREATE TABLE example ( Id BIGINT NOT NULL, TransactionId BIGINT, 
    Terminal BIGINT, Status SMALLINT );
ALTER TABLE example ADD CONSTRAINT index108 PRIMARY KEY ( Id )
CREATE INDEX I108_FkTerminal ON example ( Terminal )
CREATE INDEX I108_Key ON example ( TransactionId )

Paralel süreçleri çok bu SELECT:

SELECT * FROM example o WITH (updlock) WHERE o.TransactionId = ?

2009-10-05 DÜZENLEME:

Daha iyi bir bakış için aşağıdaki tabloyu tüm çözümleri denedim yazdım:

mechanism              | SELECT on different row blocks | SELECT on same row blocks
----------------------- -------------------------------- --------------------------
ROWLOCK                | no                             | no
updlock, rowlock       | yes                            | yes
xlock,rowlock          | yes                            | yes
repeatableread         | no                             | no
DBCC TRACEON (1211,-1) | yes                            | yes
rowlock,xlock,holdlock | yes                            | yes
updlock,holdlock       | yes                            | yes
UPDLOCK,READPAST       | no                             | no

I'm looking for        | no                             | yes

CEVAP
30 EYLÜL 2009, ÇARŞAMBA


Son zamanlarda Sql Server daha sonra (sayfa) gerekli kilitler deadlock problem ettim. Gerçekten ona karşı hiçbir şey yapamazsın. Şimdi kilitlenme özel alıcı... ve Oracle yerine keşke.

Edit: Birçok çözer bu arada anlık görüntü yalıtım kullanarak, ama tüm sorunları değiliz. Ne yazık ki, anlık görüntü yalıtım kullanabilmek için müşterilerin gereksiz sorunlara neden olabilecek veritabanı sunucusu, site izin verilmeli. Şimdi sadece kilitlenme istisnalar hala, tabii ki oluşabilir), ama aynı zamanda anlık eşzamanlılık sorunları arka plan işlemleri kullanıcı tarafından tekrarlanamaz) işlemleri tekrar yakalamak kolay değildir. Ama bu yine de eskisinden çok daha iyi bir performans sergiliyor.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • MultiPlayStationMan

    MultiPlaySta

    17 Aralık 2009
  • NCIX Tech Tips

    NCIX Tech Ti

    2 Ocak 2007
  • ParryGripp

    ParryGripp

    12 AĞUSTOS 2006