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.
|