(OT???): Oracle vs. MS-SQL
Ivan Brezina
ivan na andrea.vc.cvut.cz
Pondělí Červen 18 21:38:57 CEST 2001
Karel Salavec wrote:
> Dne Út, 12 čen 2001 jste napsal(a):
>
>>On Tue, Jun 12, 2001 at 02:25:52PM +0200, Libor Mitrenga wrote:
>>
>>
>>>No já si myslel, že při jakémkoliv zápisu v rámci transakce do tabulky se
>>>"celá" tabulka na MS SQL zamkne až do ukončení transakce.
>>>
>> tzv. "velkolepe MySQL transakce"? :-)
>>
>> Oni transakce jsou primarne o moznosti vratit DB do stavu pred BEGIN,
>>ale pak je tu dalsi vec a to jak se budou chovat konkurujici si operace.
>>
>> Jde to propracovat az tak ze do provedeni COMMITu jsou udrzovany dve
>>verze dat takze jde cist bez cekani a zamku i data ktera nekdo zrovna
>>meneni v nejake transakci. Viz. PostgreSQL a jeho Multi-Version
>>Concurrency Control (MVCC).
>>
>
> dtto Oracle
>
>
>>>To je určitě nevýhoda pro MS SQL server, ale tato vlastnost nemusí "vadit",
>>>když bude aplikace navržena tak, že deadlock nemůže vzniknout. Nemám
>>>zkušenosti s Oracle, ale jeho inteligentní zamykání zase může zpomalovat chod
>>>transakcí, ale nazahltí se server (mohou jet vedle sebe paralelně transakce,
>>>které zapisují do stejných tabulek). Jinak si myslím, že deadlock může jistě
>>>vzniknout i na Oracle, když bude špatně udělaná aplikace.
>>>
>> Jak uz tu nekdo psal deadlock udelate snadno, staci pokud se pokusi dve
>>transakce "krizem" o update stejnych radek ('A' udela update dat 'a',
>>'B' udela update dat 'b', 'A' se pokusi o update dat 'b' a ceka,
>>'B' se pokusi o update dat 'a' a mete deadlock .. ale rozumna DB ho
>>detekuje a udela rollback transakce 'B').
>>
>>
>>>Proto velmi záleží na typu aplikace a na datovém návrhu databáze a na
>>>fukcích, které s těmi daty mají manipulovat. Podle tohoto bych volil DB
>>>server, který je pro mě lepší. Na telefonní seznam je určitě nejlepší MySQL a
>>>vůbec mi nevadí, že nemá transakce, ale jen zamykání.
>>>
>> Zamykani na urovni radku vs. zamykani na urovni tabulek (stranek apod.)
>>tezko budete resit v datovem modelu a funkcich. Je to o tom co vam udela
>>vykon DB pri 100 na jednou pracujicich klientech nad stejnymi daty. Proto
>>napriklad pekelny vykon MySQL jde dost dolu v testech ktere toto testuji.
>>A s tim, ze klient A i B chce udelat update na stejnou tabulku udela datovy
>>model kulove....
>> Pochopitelne, ze tyto zamky na radkach neco stoji, ale celkem brzo se to
>>vyrovna pokud je tam vice konkurujicich si klientu.
>>
>
> Naprosty souhlas.
>
> Dovolil bych si jeste pripodotknout - z praxe vim, ze i pri znacne zatezi (cti
> podstatne vyssi, nez je dimeznovane zelezo) Oracle stale jede. Sice pomalu, lae
> jede. Nechci rikat, co v takovem pripade udela M$ SQL (a davat to pak do kupy
> ... :-((( )
>
> Dalsi, dosud nezohlednene (fuj, to je slovo) hledisko je bezpecnost. Pokud se
> vam nekdo dostane na M$ SQL, ma moznost plne vlady nad strojem (a neda se to
> vypnout!). Oracle vyslovne nuti k tomu, aby db bezela pod neprivilegovanym
> uzivatelem.
Ono to sice tak vypada, ale staci dat unset ORACLE_HOME a spustit dbsnmp,
(to musi bezet bezet pod rootem) ono zmagori, vyhodi log soubor s chybou
a za chvili je z vas root. Pokud to s bezp. myslite vazne odstrante s-bit
vsech programu s root s-bitem v oracle. (dbsnmp a lsnrtlc).
Mozna uz je to opraveny, ale tahle chyba se tahla s oraclem dost dlouho
a na buqtraq si stezovali, ze je oracle ignoruje.
Na druhou stranu je pravda, ze tech exploitu(spatnejch def. nastaveni,
..atd) ma MS daleko vic.
Ivan
Další informace o konferenci Linux