sql >> Database >  >> RDS >> Oracle

SQL Server en Oracle, welke is beter qua schaalbaarheid?

Zowel Oracle als SQL Server zijn databases met gedeelde schijven, zodat ze worden beperkt door schijfbandbreedte voor query's die in tabellen grote hoeveelheden gegevens scannen. Producten zoals Teradata , Netezza of DB/2 Parallel Edition zijn 'niets gedeeld' architecturen waarbij de database horizontale partities op de individuele knooppunten opslaat. Dit type architectuur geeft de beste prestaties voor parallelle query's, aangezien de lokale schijven op elk knooppunt niet worden beperkt door een centraal knelpunt op een SAN.

Gedeelde schijfsystemen (zoals Oracle Real Application Clusters of Geclusterde SQL Server installaties vereisen nog steeds een gedeeld SAN , die de bandbreedte voor streaming heeft beperkt. Op een VLDB kan dit de haalbare prestaties bij het scannen van tabellen ernstig beperken. De meeste datawarehouse-query's voeren tabel- of bereikscans uit over grote blokken gegevens. Als de query meer dan een paar procent van de rijen bereikt, is een enkele tabelscan vaak het optimale queryplan.

Meerdere lokale direct-attach schijfarrays op knooppunten geven meer schijfbandbreedte.

Dat gezegd hebbende, ken ik een Oracle DW-winkel (een grote Europese telco) die een op orakel gebaseerd datawarehouse heeft dat 600 GB per dag laadt, dus de gedeelde schijfarchitectuur lijkt geen onoverkomelijke beperkingen op te leggen.

Tussen MS-SQL en Oracle zijn er enkele verschillen. IMHO Oracle heeft om de volgende redenen betere VLDB-ondersteuning dan SQL-server:

  • Oracle heeft native ondersteuning voor bitmapindexen , een indexstructuur die geschikt is voor snelle datawarehouse-query's. Ze doen in wezen een CPU voor I/O-afweging, omdat ze gecodeerd zijn op runlengte en relatief weinig ruimte gebruiken. Aan de andere kant beweert Microsoft dat Index Intersection is niet merkbaar langzamer.

  • Oracle heeft betere faciliteiten voor het partitioneren van tabellen dan SQL Server. IIRC De tabelpartitionering in SQL Server 2005 kan alleen op een enkele kolom worden gedaan.

  • Oracle kan worden uitgevoerd op enigszins groter hardware dan SQL Server, hoewel men SQL-server kan uitvoeren op een aantal vrij respectvol groot systemen.

  • Oracle heeft meer volwassen ondersteuning voor Materialized views en Query herschrijven om relationele vragen te optimaliseren. SQL2005 heeft enige mogelijkheid om query's te herschrijven, maar het is slecht gedocumenteerd en ik heb het niet in een productiesysteem gebruikt. Microsoft raadt u echter aan om Analysis Services , die eigenlijk niets-gedeelde configuraties ondersteunt.

Tenzij u werkelijk bijbelse datavolumes heeft en kiest tussen Oracle en een gedeelde niets-architectuur zoals Teradata, zult u waarschijnlijk weinig praktisch verschil zien tussen Oracle en SQL Server. Vooral sinds de introductie van SQL2005 worden de partitioneringsfaciliteiten in SQL Server als goed genoeg beschouwd en zijn er voldoende van voorbeelden van multi-terabyte systemen die er met succes op zijn geïmplementeerd.



  1. Proberen om een ​​Oracle te exporteren via PL/SQL geeft een datum van 0000-00-00

  2. Efficiënte manier om een ​​mysql-database bij te werken/te vullen met externe XML

  3. Outer Join uitvoeren op> 2 tabellen (Oracle)

  4. Synchrone mysql in Node.js