AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Warum ist Access langsam und warum SQL-Server schnell?
Thema durchsuchen
Ansicht
Themen-Optionen

Warum ist Access langsam und warum SQL-Server schnell?

Ein Thema von Solid01 · begonnen am 17. Mär 2004 · letzter Beitrag vom 18. Mär 2004
Antwort Antwort
Seite 1 von 2  1 2      
Solid01

Registriert seit: 5. Nov 2003
23 Beiträge
 
#1

Warum ist Access langsam und warum SQL-Server schnell?

  Alt 17. Mär 2004, 13:11
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
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.640 Beiträge
 
#2

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

  Alt 17. Mär 2004, 13:20
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.
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
Benutzerbild von Marcel Gascoyne
Marcel Gascoyne

Registriert seit: 18. Nov 2003
Ort: Uetersen
271 Beiträge
 
Delphi 2005 Architect
 
#3

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

  Alt 17. Mär 2004, 13:48
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
Marcel Gascoyne
  Mit Zitat antworten Zitat
neolithos

Registriert seit: 31. Jul 2003
Ort: Dresden
1.386 Beiträge
 
Delphi 7 Architect
 
#4

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

  Alt 17. Mär 2004, 17:25
@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.
- ciao neo -
Es gibt niemals dumme Fragen, sondern nur dumme Antworten!
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#5

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

  Alt 17. Mär 2004, 17:51
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! ), 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.
  Mit Zitat antworten Zitat
neolithos

Registriert seit: 31. Jul 2003
Ort: Dresden
1.386 Beiträge
 
Delphi 7 Architect
 
#6

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

  Alt 17. Mär 2004, 17:58
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.
- ciao neo -
Es gibt niemals dumme Fragen, sondern nur dumme Antworten!
  Mit Zitat antworten Zitat
Lemmy

Registriert seit: 8. Jun 2002
Ort: Berglen
2.380 Beiträge
 
Delphi 10.3 Rio
 
#7

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

  Alt 18. Mär 2004, 07:29
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
  Mit Zitat antworten Zitat
neolithos

Registriert seit: 31. Jul 2003
Ort: Dresden
1.386 Beiträge
 
Delphi 7 Architect
 
#8

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

  Alt 18. Mär 2004, 09:20
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.
- ciao neo -
Es gibt niemals dumme Fragen, sondern nur dumme Antworten!
  Mit Zitat antworten Zitat
Daniel
(Co-Admin)

Registriert seit: 30. Mai 2002
Ort: Hamburg
13.920 Beiträge
 
Delphi 10.4 Sydney
 
#9

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

  Alt 18. Mär 2004, 09:25
Oracle bietet kostenlose Downloads für Entwickler an:
http://otn.oracle.com/software/index.html.
Daniel R. Wolf
mit Grüßen aus Hamburg
  Mit Zitat antworten Zitat
Benutzerbild von Leuselator
Leuselator

Registriert seit: 18. Mär 2003
Ort: Berlin
589 Beiträge
 
Delphi 8 Architect
 
#10

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

  Alt 18. Mär 2004, 09:55
[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ß
Tim Leuschner
Programmierer = moderner Sysiphos: stets wenn er meint, den Stein seiner Dummheit auf den Berg des Wissens gewuchtet zu haben, erblickt er einen völlig neuen Aspekt und der Dummfels poltert mit Getöse zurück ins Tal der Unwissenheit...
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:26 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz