ASPNL logo (1 kb)
Tuesday, September 07, 2010




Microsoft MVP

.NET Codewise Community
<< vorige | overzicht | volgende >>

De snelste database verbinding

Door Michiel van Otegem
1 december 2000

Hoe sneller je database verbinding, hoe meer gegevens je er per seconde uit kan halen. Het is dus belangrijk om een zo snel mogelijke database verbinding in je applicaties te gebruiken, zeker als je veel gebruikers op je site hebt. Er zijn meerdere manieren om een database verbinding te maken met ASP, of eigenlijk ADO (ActiveX Data Objects). Eigenlijk zijn er hiervan slechts drie de moeite waard om te gebruiken: ODBC via DSN, ODBC zonder DSN en OLEDB (zonder DSN).

De langzaamste van de drie is ODBC via DSN. ODBC staat voor Open DataBase Connectivety en is een standaard voor database verbindingen, vrijwel elke database ondersteunt ODBC. In Windows kun je zogenaamde DSNs aanmaken met de ODBC manager (Configuratiescherm). De DSN bevat de benodigde informatie om een database van een bepaald type te openen. Voor de gebruiker maakt het niet uit welke database, want alles gaat via de ODBC standaard. De database is eenvoudig te openen in ADO met
objConn.Open "DSN=Databasenaam;Uid=Admin;Pwd=;"

of als er geen username en password nodig zijn
objCn.Open "Databasenaam"

De bovenstaande verbinding is langzaam door de overhead van ODBC en omdat ADO telkens de gegevens van de DSN uit de registry moet halen. Je kunt ook een zogenaamde DSN-less connection maken. Dit kan met ODBC door de volgende code:
objCn.Open "Driver={Microsoft Access Driver (*.mdb)};Dbq=db.mdb;Uid=Admin;Pwd=;"

Hierbij wordt eerst de ODBC database driver voor de betreffende database gespecificeerd (in dit geval Access), daarna het pad naar de database en vervolgens weer username en password.
Voordeel van deze methode is dat je geen DSN hoeft aan te maken en dat je dat dus ook niet kunt vergeten. Deze verbinding maakt echter nog steeds gebruik van ODBC, hetgeen relatief langzaam is, omdat het niet direct met de database praat, maar via een extra laag.

De snelste methode om een database verbinding op te zetten is via OLEDB. OLEDB is vergelijkbaar met ODBC, maar dan nieuwer, flexibeler en sneller. Nadeel is dat er veel minder databases zijn waarvoor er OLEDB ondersteuning is. De belangrijkste waarvoor dit wel het geval is zijn Access, SQL Server en Oracle.
Voor OLEDB ziet de connection string er weer een beetje anders uit:
objCn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=db.mdb;User Id=admin;Password=;"

Omdat Provider nogal uiteenlopende waarden kan hebben (wat bij ODBC minder het geval is), is het moeilijk te bepalen hoe je connection string eruit ziet met verschillende databases. Op http://www.able-consulting.com/ado_conn.htm vindt je een compleet overzicht van connection strings.

OLEDB is veruit de snelste manier om een databaseverbinding op te zetten. Dit gaat op voor het opzetten van de verbinding zelf, die bij SQL Server tot 4x sneller kan zijn, en voor het ophalen van gegevens. Bij Access kan dit bijna 10x (!) sneller zijn. Zie voor meer informatie het artikel OLEDB for me op 4 Guys From Rolla.

<< vorige | ^ naar boven | overzicht | volgende >>
copyright 2000-2007 ASPNL