Avatar billede Lasse Novice
30. juni 2003 - 16:58 Der er 8 kommentarer og
3 løsninger

Oracle vs. Ms SQL

Dette er saadanne set mere en diskussion end et spg. Jeg ved at Oracle ikke laaser tabeller selvom de er under en transaction - Ms sql laaser tabellerne indtil transactionen er faerdig. Da en transaction sagtens kan tage lang tid(bare se paa en pengeautomat), kan denne laase tid godt blive uacceptabel. Jeg kunne godt taenke mig at hoere om der er en anden alternativ maade i mssql hvorpaa man stadig kan uddrive den data der ligger i de tabeller.

Et andet spg men i samme kat. er hvad goer man i den virkelige verden med f.eks. penge. Bare fordi at en bruger staar ved sin haeveautomat og bruger den, saa skal alle andre i verden vel ikke vente paa ham? Bruger man Oracle(eller tilsvarende med samme funktionalitet), og bruger man overhovedet Ms Sql i sammenhaenge med laengevarende transaktioner?
Avatar billede arne_v Ekspert
30. juni 2003 - 17:12 #1
Man bruger næppe TABLE locking i ret mange rigtige database
applikationer.

Gamle versioner af MS SQLServer (før 7.0 tror jeg) kunne kun
PAGE locking og derved kunne der være en del blocking.

Men nye versioner af MS SQLServer (7.0 og nyere tror jeg)
understøtter ROW locking.

Og så er det slet ikke noget problem.
Avatar billede Lasse Novice
30. juni 2003 - 17:22 #2
Ok, det er sikkert mig der ikke helt har forstaaet det saa.

Jeg kan godt se at netop dette eksempel jeg kommer med nu, ikke kan overfoeres til penge automater.
Hvis jeg er i gang med at lave en transaction, og jeg laver en select * from tabelnavn, saa har jeg en ventetid indtil transaktionen er faerdig. Det ved jeg at ikke ville have med oracle, da jeg ser det "gamle view" med det samme(skal ikke vente til at evt. transactioner skal blive faerdige). Men dette er maaske ogsaa logik, eftersom jeg jo proever at kigge i de rows de nu engang bliver aendret.
Avatar billede arne_v Ekspert
30. juni 2003 - 18:49 #3
SELECT er ikke en transaktion da den ikke ændrer noget.

Og hvordan en SELECT * forholder sig til samtidige UPDATE/INSERT/DELETE
kan muligvis godt afhænge af databasen, men vil ihvertfald også
afhænge af det "transaction isolation level" man har valgt.
Avatar billede bjornicle Nybegynder
30. juni 2003 - 18:49 #4
I MSSQl mener jeg der er maader du kan lave et "Dirty read", dvs. som du siger, laese mens en anden transaction er igang. Du kan evt. finde mere om det i "Books Online"
Avatar billede arne_v Ekspert
30. juni 2003 - 18:54 #5
Mere præcist - se under:

SET TRANSACTION ISOLATION LEVEL
Avatar billede arne_v Ekspert
30. juni 2003 - 18:55 #6
Det må være:
  READ UNCOMMITTED
du leder efter.
Avatar billede janus_007 Nybegynder
30. juni 2003 - 19:30 #7
Ja eller nolock hint...

SELECT * FROM Table WITH(NOLOCK) WHERE bla....
Avatar billede bennytordrup Nybegynder
01. juli 2003 - 08:38 #8
En anden mulighed er readpast. Dette locking hint får SQL Server til at springe de poster over, som er låst af transactions.

I eksemplet med pengeautomaten vil denne være god, da sandsynligheden for, at der forsøges to hævninger på samme konti fra to automater er ret lille.
Avatar billede Lasse Novice
01. juli 2003 - 15:38 #9
hold da fest, der er en masse forskellige maader man kan loese dette paa. Jeg vil gaa i laese seance, og komme tilbage naar jeg er blevet lidt klogere paa det. Tak for alle svar indtil nu.
Avatar billede arne_v Ekspert
11. juli 2003 - 19:43 #10
Kommet videre ?
Avatar billede arne_v Ekspert
22. juli 2003 - 22:38 #11
??
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester