Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Warum ist Access langsam und warum SQL-Server schnell? (https://www.delphipraxis.net/18364-warum-ist-access-langsam-und-warum-sql-server-schnell.html)

Solid01 17. Mär 2004 12:11


Warum ist Access langsam und warum SQL-Server schnell?
 
Hallo zusammen,
woran liegt es eigentlich, dass Access so langsam ist und SQL-Server so schnell? Ich mein, was machen die zwei verschiedenen Datenbanken im Hintergrund anders?

Danke schon mal.

Gruß Solid01

Phoenix 17. Mär 2004 12:20

Re: Warum ist Access langsam und warum SQL-Server schnell?
 
Das eine ist eine Datenbank, das andere nicht :-O

Nee, im Ernst: Der SQL - Server ist als produktivdatenbank ausgelegt.
MS Access ist im Grunde nichts weiteres, als ein Frontend(!) für MDB - Daten, über die via ODBC zugegriffen wird. ODBC ist bekanntlich nicht so schnell.

Dazu kommt: MS SQL Server ist ein Service. WIll heissen: Die Datenbank läuft immer (sofern sie gestartet wurde) und kann im Laufe der Zeit Daten über die Verwendung sammeln und entsprechen reagieren (will heissen: Daten cachen und zugriffe optimieren).

Bei Access greift das Frontend bzw. die Applikation auf den MDAC - Treiber zu. MDAC wird in diesem Moment geladen, öffnet die Access Datei (und hat erstmal keinen plan von deren Struktur, muss das alles also laden) und kann dann auf die Datei zugreifen. Das alles geschieht Dateibasiert ohne caching-Mechanismen. Jeder weitere Zugriff eines anderen Clients löst das gleiche Prozedere aus.

Schliesst die Applikation (z.B. Access direkt oder ein Delphi-Programm) die Verbindung zur Access-DB wird der Treiber (MDAC) wieder entladen. Es besteht also auch keine Möglichkeit hier weiter zu laufen, die Nutzung zu analysieren und ggf. Indices zu optimieren etc.

Falls Du auf der Suche nach einer günstigen Möglichkeit bist mit Datenbanken zu arbeiten empfehle ich an der Stelle gerne den kleinen Bruder des SQL-Servers: Die Microsoft Desktop Engine (MSDE). Die unterliegt einem recht einfachen Lizenzmodell und kann unter gewissen Umständen auch kostenlos weitergegeben werden.

Marcel Gascoyne 17. Mär 2004 12:48

Re: Warum ist Access langsam und warum SQL-Server schnell?
 
Access ist ein dateibasiertes DBMS (falls das für sich nicht schon eine Übertreibung ist). Jeder Client muß die physische Datenbank öffnen, benötigt also auch Lese- und Schreibberechtigung auf diese Datei. Der Client arbeitet hierbei auch als DBMS (oder halt der OLE-DB Treiber), da ja ein physischer Zugriff auf die Access Datei erfolgt.

Bei einem SQL-Server läuft ein Server der sich um die Verwaltung der Datenbank(en) kümmert. Der Client greift über Netzwerk auf den Server zu und nicht auf die physische Datenbank. Daher verwaltet auch der Server die Zugriffsrechte auf die Datenbank und nicht das Dateisystem.

Die hohe Performance eines SQL Servers resultiert daraus das dieser Server viele Datenbankseiten im Cache hält. Außerdem werden die Abfragen vom Server vor der Ausführung analysiert und entsprechende Zugriffspfade auf die Daten berechnet (Stichwort: QUERY PLAN).

Desweiteren unterstützt der SQL Server auch so nette Features wie Stores Procedures (Abfragen in Transact-SQL die vorcompiliert in der Datenbank liegen).

Schau Dir einfach mal ein Buch über den SQL Server an...

Gruß,
Marcel

neolithos 17. Mär 2004 16:25

Re: Warum ist Access langsam und warum SQL-Server schnell?
 
@Phonix

ODBC ist die schnellste Art und Weise auf eine SQL-DB zuzugreifen. (PUNKT - da man das überall im Internet nachlesen kann)

Die Geschwindigkeit eine DB wird nur anhand der Transaktionen pro Sekunde gerechnet. Da schneidet übrigens auch der MS SQL Server sau schlecht gegebenüber konkurenten wie Sybase (<- Meiner Meinung nach das Top-Datenbank-System) oder Oracle (<- hab ich leider nie gesehen) ab.

Von Access oder MySQL möchte ich nicht reden.

Berechtigungen:

Hausgebrauch einfacher Zugriff, geringe Änderungsdaten, mittlere Anzahl von Stammdaten - immer Access

Große Datenbanken mit relativ Festen Datensätzen, wenig Änderungsdaten und gerinder Nutzerzahl MS SQL, Sybase

Große Datenbanken mit vielen Änderungsdaten hoher Nutzerzahl, Client Server, Datensicherheit -> bleibt bei mir derzeit nur noch Sybase Anywhere übrig.

Robert_G 17. Mär 2004 16:51

Re: Warum ist Access langsam und warum SQL-Server schnell?
 
Zitat:

Zitat von neolithos
ODBC ist die schnellste Art und Weise auf eine SQL-DB zuzugreifen. (PUNKT - da man das überall im Internet nachlesen kann)

Genau! und ein Trabi braucht von 0 auf 250 km/h nur 5,3 sek. http://www.og4all.de/sip/Totlach.gif

Kleiner Tipp: Schnapp dir mal 'ne Oracle DB und die DOA-Kompos (die kapseln direkt die API des Oracle CLients).
Wenn für dich ODBC schnell ist, dann bleibt dir damit die Spucke weg!

Zum Thema:
"Access" ist keine Datenbank sonder nur eine Oberfläche (sozusagen "MS Jet for dummies" ) der MS Jet engine.
Und da MS Jet entwickelt wurde, damit alle Windows User ihre Kugelschreibersammlung ordnen können (dürfen dann aber auch nicht mehr als 10 werden! :lol: ), ist sie als Datenbank im komerziellen Einsatz vollkommen ungeeignet.
Der SQL Server ist eine "richtige" Datenbank mit allen Schikanen: Statement/Cursor -Cache, Transaktionen ( mit Savepoints!), Stored procedures (zwar im Vergleich zu PL/SQL noch etwas vorzeitlich, aber wenigstens vorhanden) und einem Optimizer für Abfragen & DML.

Der Statement- & Cursor- cache zusammen mit dem Optimizer machen den Geschwindigkeitsvorteil aus.

neolithos 17. Mär 2004 16:58

Re: Warum ist Access langsam und warum SQL-Server schnell?
 
Zitat:

Zitat von Robert_G
Kleiner Tipp: Schnapp dir mal 'ne Oracle DB und die DOA-Kompos (die kapseln direkt die API des Oracle CLients).

Ich habe leider nur den Vergleich zu Sybase und da nimmt soviel ich weis der direkte und der via ODBC überhaupt nix. Man merkt es nicht.

Aber man kann das ODBC schon ausbremsen indem man ineffektiv Programmiert.

Übrigens -> Greife nur noch mit SQLAllocHandle und Co auf SQL-Datenbanken zu, keine DB-Controls von Delphi, da diese blödsinn anstellen den ich nicht brauche.


Und nicht so über den Begleider herziehen, der hatte es nicht einfach. :zwinker:

Lemmy 18. Mär 2004 06:29

Re: Warum ist Access langsam und warum SQL-Server schnell?
 
Zitat:

Zitat von neolithos
Ich habe leider nur den Vergleich zu Sybase und da nimmt soviel ich weis der direkte und der via ODBC überhaupt nix. Man merkt es nicht.

Dann würde ich an Deiner Stelle solche Aussagen lassen, wenn Du nur eine Datenbank zum vergleichen hast.... ;-)

Fakt: ODBC arbeitet vergleichbar wie die BDE: verschiedene Datenbanken werden unterstützt und ein gemeinsamer Zugriffsweg zur Verfügung gestellt. Das führt dazu, dass spezielle Funktionen/Features einer Datenbank nicht verwendet werden können , was wiederum bedeutet, dass dieser Zugriffsweg nicht der beste und schnellste ist. Es mag Datenbanken geben, bei denen ODBC schnell ist, aber schneller oder genauso schnell wie ein Zugriff über die API (oder entsprechender Komponenten die die API kapseln) geht einfach nicht (kann ich mir nur sehr schwer vorstellen).

Zudem: Wenn ODBC wirklich so schnell ist, weshalb hat es Microsoft dann quasi eingestampft und DAO bzw. jetzt ADO(.NET) als Zugriff auf Datenbanken entwickelt???

Grüße
Lemmy

neolithos 18. Mär 2004 08:20

Re: Warum ist Access langsam und warum SQL-Server schnell?
 
ODBC ist nicht eingestampft, es wurde bloß nie erweitert.

Denn ODBC ist eine einfache Schnittstelle, die etwas komplex ist.

Übrigens ODBC wird auch von DAO bzw ADO untstützt. Und auch mit dem FrameWork 1.2 wurde wieder eine ODBC Unterstützung angeboten. --> ODBC ist nicht Tod, bloß ein Standard der sich nicht mehr entwickelt. Wahrscheinlichj wird er aber auf lange Sicht genauso wie DAO und ADO verschwinden.

Zum Vergleichen:

Ich hatte den Vergleich zwischen MS SQL Server und Sybase. An Oracle bin ich derzeit leider noch nicht rangekommen. Und kaufen fällt flach für einmal Anschauen. 1. Oracle kenn ich bloß von hören/sagen, und daraus hat sich diese Erkenntnis herausgebildet! 2. Gebe ich zu das es ein etwas unglicher Kommentar war, ich bin Schuldig.

Bei ODBC/BDE ist es übrigens per Definition wichtig wie der DB-Hersteller es Unterstützt und wie der Programmierer es verwendet. -> Geschwindigkeit!
Bei MS und Sybase wurde dies getan.

Daniel 18. Mär 2004 08:25

Re: Warum ist Access langsam und warum SQL-Server schnell?
 
Oracle bietet kostenlose Downloads für Entwickler an:
http://otn.oracle.com/software/index.html.

Leuselator 18. Mär 2004 08:55

Re: Warum ist Access langsam und warum SQL-Server schnell?
 
[AddMySenfMode=On]
Zur ursprünglichen Frage:
Access ist nicht unbedingt langsam. Zumindest nicht, wenn man es für den ursprünglich konzipierten Zweck einsetzt: als "Desktopdatenbank". Eine solche ist gedacht für den Einsatz auf einem einzigen Rechner und für die Nutzung durch einen einzigen Benutzer. Robert_G hat wohl das mit "Kugelschreiber-DB" im Sinn gehabt.

Insofern ist der Vergleich von SQL-Server und Access sinnfrei, da die beiden völlig unterschiedliche Dinge bezwecken (Niemand käme ernsthaft auf die Idee, einen Fuchsschwanz (Access) mit einer Motorkettensäge (MSSQL) zu vergleichen und Niemand der bei klarem Verstand ist, würde sich eine Motorkettensäge kaufen, um einen einzelnen Ast im Garten abzusägen).

Access wird genau dann extrem langsam, wenn man es als Kettensäge einsetzen will, sprich: im Netzwerk- und Mehrbenutzerbetrieb, da dann nur die Filesharingmethoden des Betriebssystems den gemeinsamen Zugriff der Clients auf die MDB-Files regelt. Solche Dinge wie Sperren auf Satzebene sind dabei halt nicht drinn und sogenannte "Deadlocks" sind dann vorprogrammiert.

Fazit: solange nicht mehrere Benutzer gleichzeitig auf den selben Datenbestand zugreifen müssen, sind Desktopdatenbanken wie Access oder dBase o.k. und Kostengünstig. In allen anderen Fällen macht der Einsatz einer "echten" Datenbank (Kettensäge) Sinn. Welches Kettensägenmodell man wählt hängt vom Budget, Kundenpräferenzen, Performanceforderungen, Anforderungen an Skalierbarkeit und Ausfallsichereit, Kenntnissen der beteiligten Programmierer und anderem ab (will mich nicht an den Glaubenskriegen beteiligen, die zuweilen zwischen den Anhängern der einzelnen Systeme ausgefochten werden).

Hoffe, das trug zur Erhellung bei...
Gruß

Lemmy 18. Mär 2004 09:15

Re: Warum ist Access langsam und warum SQL-Server schnell?
 
Zitat:

Zitat von neolithos
Übrigens ODBC wird auch von DAO bzw ADO untstützt. Und auch mit dem FrameWork 1.2 wurde wieder eine ODBC Unterstützung angeboten. --> ODBC ist nicht Tod, bloß ein Standard der sich nicht mehr entwickelt. Wahrscheinlichj wird er aber auf lange Sicht genauso wie DAO und ADO verschwinden.

Und ich denke, da sind wir uns einig: Wenn etwas nicht weiterentwickelt ist, ist es so gut wie tot....

Zitat:

Zitat von neolithos
Ich hatte den Vergleich zwischen MS SQL Server und Sybase. An Oracle bin ich derzeit leider noch nicht rangekommen. Und kaufen fällt flach für einmal Anschauen. 1. Oracle kenn ich bloß von hören/sagen, und daraus hat sich diese Erkenntnis herausgebildet! 2. Gebe ich zu das es ein etwas unglicher Kommentar war, ich bin Schuldig.

Ah, das hört sich jetz doch anders an! Du hast aber in deinem Posting geschrieben:"... und da nimmt soviel ich weis der direkte und der via ODBC überhaupt nix...." Das habe ich interpretiert mit nix Erfahrung, viel gehört und ich habe dann entsprechen scharf darauf reagiert, sorry...

Aber jetzt würde mich noch interessieren, wie Du den Vergleich zwischen den DB's gemacht hast. Du hast doch dafür ein Client-Proggy benötigt, mit dem Du dann irgendwelche Zeitmessungen vorgenommen hast. Wie hat das Client-Proggy auf die Datenbanken zugegriffen (z.B. Delphi -> BDE -> ODBC -> SQL-Server). Da ich bisher nur sehr schlechte (heißt langsame) Erfahrung mit ODBC gesammelt habe (Datenbanken: Pervasive (BTrieve), Access, MS SQL), würde mich das doch sehr interessieren.


Zitat:

Zitat von neolithos
Bei ODBC/BDE ist es übrigens per Definition wichtig wie der DB-Hersteller es Unterstützt und wie der Programmierer es verwendet. -> Geschwindigkeit! Bei MS und Sybase wurde dies getan.

Ich gebe zu, dass ich in den letzten 2 Jahren praktisch nichts mehr mit BDE/ODBC gemacht habe (bis auf Programmpflege), aber ich meinte zu wissen, dass so Dinge wie Transaktionen von BDE/ODBC nicht unterstützt werden....??

Grüße
Lemmy

Phoenix 18. Mär 2004 09:51

Re: Warum ist Access langsam und warum SQL-Server schnell?
 
Zitat:

Zitat von neolithos
Von Access oder MySQL möchte ich nicht reden.

Schade. Den MySQL hat zumindest mit den Tabellenarten die noch keine Transaktionen unterstützen so ziemlich alle Geschwindigkeitsrekorde gebrochen. Auch ohne Transaktionsunterstützung ist die DB zu etlichem zu gebrauchen, wenn es nicht unbedingt auf eine grössere Client-Server Umgebung hinausläuft.

Ich verwende mit einer nativen Schnittstelle sowohl Oracle (ungeheuer komplex, aber stabil) und MS-SQL Server (klickibunti-Administration, nicht so komplex wie Ora). Die Geschwindigkeit ist in beiden Fällen viel höher als über ODBC, und das war nachgemessen.

Für den Produktiveinsatz (auch bei Einzelplatz) empfehle ich wie gesagt die MSDE (bietet einfach mehr wie Access) und für größere Umgebungen Oracle und MS-SQL Server gleichermassen - je nach vorhandener Infrastruktur und ggf. bereits existierenden Datenbankumgebungen.

Zu Sybase kann ich leider keine Aussagen treffen. Gibts da auch sowas wie eine kostenlose Version für Entwickler?

neolithos 18. Mär 2004 15:17

Re: Warum ist Access langsam und warum SQL-Server schnell?
 
@Lemmy

Schön das wir uns einig sind. Manchmal sagt/schreibt ich etwas was nicht richtig durchdacht ist.

Übrignes, Transaktionen werden von ODBC unterstützt.

Zu dem Test:

Der ist nun leider schon ziemlich lange her. Deshalb kann ich mich nicht mehr an die genauen Zahlen erinnern. Eins weiß ich noch das MS Produkt war weit hinterher. Ich denke mal der Unterschied fällt derzeit bestimmt nicht mehr so krass aus. Wie wir damals erschreckend feststellen mussten.

MS SQL Server 6 (glaube ich)
Sybase Anywhere 6

Gegenstand war aber eine PLZ-Tabelle mit 4 Indizes mit genau 253.370 Datensätzen.

Und darauf mehrere Insert Into's / Update ohne AutoCommit-Modus.

---

Link zur Downloadseite von SQL Anywhere Studio
Übrigens das ist nur der kleine Bruder der großen Datenbank von Sybase

yankee 18. Mär 2004 15:22

Re: Warum ist Access langsam und warum SQL-Server schnell?
 
Was erwartet man von einem Microsoft Produkt???
:mrgreen: :mrgreen: :mrgreen:


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:43 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz