Re: Langsame Query



Klaus Herzberg wrote:
Axel Schwenke wrote:
Klaus Herzberg wrote:
Hallo,
ich habe eine Tabelle "global_accesslog" zum Loggen von Zugriffen:

id int(11) auto_increment
time int(11)
useragent varchar(255)
referer varchar(255)
address varchar(255)
host varchar(255)
uri varchar(255)
querystring varchar(255)

LOL. Fehlt nur noch, daß das alles utf8 ist.

Nein, ist es nicht, aber erklaere doch mal, warum LOL?

Obiges offenbart ein typisches Denkmuster: "Ich habe keine Ahnung wie groß
meine Felder sind. Ich will auch gar nicht darüber nachdenken. Also nehme
ich einfach die längsten VARCHAR()s die ich bekommen kann."

Mittlerweile hat die Tabelle ca. 1.5 Mio Eintraege und ist ca. 400 MB
gross (laut phpMyAdmin).
...
Einen Indes verwende ich fuer die Tabelle nicht.

LOL^2

Keyname Type Cardinality Field
PRIMARY PRIMARY 1462068 id
time INDEX 1462068 time

Was bringt hier der Index? Oder habe ich das Prinzip der Indizes falsch
verstanden? Aber ansonsten, bitte erklaere mir das LOL^2.

Ohne passenden Index macht deine Abfrage einen Tablescan, liest also die
ganzen 400MB jedes Mal (modulo Caches) von vorn bis hinten. Kein Wunder, daß
das langsam ist.

Kardinalität ist irrelevant. In einem Telefonbuch sind (Name, Vorname,
Adresse) und (Telefonnummer) auch jeweils unique. Trotzdem nutzt dir ein
alphabetisch sortiertes Telefonbuch nichts, um Teilnehmer zu finden, deren
Telefonnummer größer als 47110815 ist.

Schreib deine Logs in Files, wie alle vernünftigen Menschen. Nur
Verkäufer
von Hardware kommen auf die Idee, eine SQL-Datenbank als Backend zur
Speicherung von HTTP Zugriffslogs zu verwenden.

Ja, dies mag auf den ersten Blick so erscheinen. Allerdings gibt es noch
2 weitere Tabellen, wo die Zugriffe auf einzelne Firmendaten geloggt
werden. Darueber werden dann ein paar wenige Statistiken erstellt. Es
erschien mir einfacher dies einheitlich ueber gemeinsame Scripte zu
realisieren, als die globalen Logs in Files und andere Logs in die DB zu
schreiben.

Dann schreib doch einfach alles in *ein* Logfile. Und laß meinetwegen einmal
am Tag ein Skript drüber laufen und schreib die Ergebnisse in die
Datenbank. Aber für Rohdaten ist die Datenbank zu schade. Es sei denn, du
hast Hardware übrig, die du unbedingt beschäftigen willst.

Denn: Es handelt sich um momentan 23.000 Firmen. Da haette
ich die Moeglichkeit, alles in ein File zu schreiben bzw. fuer jede
Firma ein File zu erzeugen.

Normalisierung hast du also auch nicht verstanden.

<seufz>


XL
--
In der klassischen Kryptographie verschlüsselt Alice Nachrichten an Bob um
sie vor Carol zu schützen. Bei DRM sind Bob und Carol die gleiche Person.
.



Relevant Pages

  • Re: Datenbank vom anderen Server klappt nicht
    ... Diese liegt als Bak File vor. ... > wollte ich diese auf SQL Server B wiederherstellen. ... > über alle Tasks Datenbank wiederherstellen den File eingespielt. ...
    (microsoft.public.de.sqlserver)
  • Re: Dokumentenverwaltung mit MS SQL?
    ... mit einem eigenen Tool zu zerlegen und binär in das MEMO Feld einer Tabelle ... File lokal erstellen und mit entsprechenden Anwendung öffnen. ... würde ich aber das File wieder zerlegen, in die MS SQL Datenbank speichern ... Microsoft SQL Server MVP ...
    (microsoft.public.de.sqlserver)
  • F.: Image aus ASP.net Page in eine Datenbank speichern......?
    ... FileUpload-Control hoch geladen, dargestellt und als File auf dem Server ... Bisher weiss ich, das man einen Memorystream mit den Rohdaten des Images erzeugen kann, und diesen dann in die Datenbank schreibt. ... Allersingsklappt das nicht anscheinend nicht so einfach mit dem Image-Webcontrol. ... Kann mir jemand helfen und einen Tipp geben wie ich die Rohdaten im richtigen Format aus dem Image-Webcontrol auslesen kann um sie dann in die Datenbank zu schreiben? ...
    (microsoft.public.de.german.entwickler.dotnet.asp)
  • Re: innerhalb der Tabelle suchen - mit UserForm
    ... daher kann ich dir das Forum von www.herber.de und dann ins ... da kannst du ganz leicht dein File hochladen. ... erkläre ich mal den bisherigen Aufbau der UserForm und der Datenbank. ... Markiert er jedoch 5 Buchungen und nur eine Bemerkung, ...
    (microsoft.public.de.excel)