php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > SQL / Datenbanken
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


SQL / Datenbanken Probleme mit SQL? Hier könnt ihr eure Fragen zu SQL (MySQL, PostgreSQL, MS-SQL und andere ANSI-SQL Server) los werden.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 15-01-2008, 17:08
devas
 Registrierter Benutzer
Links : Onlinestatus : devas ist offline
Registriert seit: Nov 2006
Beiträge: 140
devas zeigte ein beschämendes Verhalten in der Vergangenheit
Standard Große DB

Hallo,

ich habe eine Tabelle die immer weiter anwächst und nun bald 1 GB Daten enthält und mehere 100K Datensätze.

Seit geraumer Zeit stelle ich fest das eine Abfrage immer länger dauert.

Meine Frage: Das die Abfrage länger dauert liegt es an der fülle der Daten, der Anzahl der Datensätze oder doch ehr am Server?

Ich weis nicht genau ob die Frage hier hingehört.
Mit Zitat antworten
  #2 (permalink)  
Alt 15-01-2008, 17:13
IchBinIch
 Registrierter Benutzer
Links : Onlinestatus : IchBinIch ist offline
Registriert seit: Apr 2003
Beiträge: 324
IchBinIch ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Das kann man pauschal nie beantworten.

Aber eine Wechselwirkung:
Menge der Daten <=> Serverausrüstung
kann wohl niemand abstreiten.

Mit steigenden Daten sollte natürlich auch der Server gesteigert werden. Somit fällt es schwer zu sagen, was "schuld" ist.

Oft liegt es aber einfach am DB-Layout.
__________________
ICH BIN ICH!!!
Mit Zitat antworten
  #3 (permalink)  
Alt 15-01-2008, 17:15
unset
  Moderator
Links : Onlinestatus : unset ist offline
Registriert seit: Jan 2007
Ort: Düsseldorf
Beiträge: 3.782
unset befindet sich auf einem aufstrebenden Ast
Standard Re: Große DB

Zitat:
Original geschrieben von devas

Meine Frage: Das die Abfrage länger dauert liegt es an der fülle der Daten, der Anzahl der Datensätze oder doch ehr am Server?
Preisfrage: Wo ist der Unterschied zwischen "die Fülle der Daten" und "die Anzahl der Datensätze"?

Jedenfalls: Evtl. ist die Tabelle nicht optimal indiziert. Wenn du zum Beispiel in einer Adressdatensatztabelle einen Index auf die Hausnummer legst, aber stets nach PLZ selectest, ist es kein Wunder, dass es irgendwann mal lange dauert.

Wobei ich natürlich auch nicht ausschließen will, dass es an der Hardware liegt. Vor allem vServer werden da gerne und schnell zickig.
Mit Zitat antworten
  #4 (permalink)  
Alt 15-01-2008, 17:25
devas
 Registrierter Benutzer
Links : Onlinestatus : devas ist offline
Registriert seit: Nov 2006
Beiträge: 140
devas zeigte ein beschämendes Verhalten in der Vergangenheit
Standard

Mit fülle meine ich Menge in KB.

Beispiel:

Taballe hat 100k Zeilen mit insgesammt 500MB Platzbedarf.

Oder Tabelle hat 100k Zeilen mit 100MB Platzbedarf.

Was ist entscheident? Die Anzahl der Zeilen oder der Platzbedarf.




Verstehe ich es richitg das man den Index auf das legen sollte, wonach am meisten selectet wird?
Mit Zitat antworten
  #5 (permalink)  
Alt 15-01-2008, 17:25
arkos
 PHP Senior
Links : Onlinestatus : arkos ist offline
Registriert seit: Feb 2003
Ort: hamburg
Beiträge: 1.015
arkos ist zur Zeit noch ein unbeschriebenes Blatt
Standard

du könntest auch anfangen, deine riesentabelle in mehrere untertabellen zu zerlegen. ist ein gängiges mittel...

zb wenns ne usertabelle ist, nimmst du anfangsbuchstaben. so haste aus einer großen tabelle schon 26 kleine gemacht, was die gezielte abfrage bannig schneller werden lässt...


edit:
Zitat:
Original geschrieben von devas
Verstehe ich es richitg das man den Index auf das legen sollte, wonach am meisten selectet wird?
ja.
__________________
**********
arkos
**********
Mit Zitat antworten
  #6 (permalink)  
Alt 15-01-2008, 17:35
unset
  Moderator
Links : Onlinestatus : unset ist offline
Registriert seit: Jan 2007
Ort: Düsseldorf
Beiträge: 3.782
unset befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Original geschrieben von devas
Verstehe ich es richitg das man den Index auf das legen sollte, wonach am meisten selectet wird?
Genau. Du kannst aber auch mehrere Spalten indizieren. Jetzt komm aber bloß nicht auf die Schnapsidee, jede Spalte zu indizieren, das hat natürlich den selben Effekt, als wäre gar keine indiziert - unter Umständen hast du sogar einen negatven Performanceeffekt.
Mit Zitat antworten
  #7 (permalink)  
Alt 15-01-2008, 17:41
devas
 Registrierter Benutzer
Links : Onlinestatus : devas ist offline
Registriert seit: Nov 2006
Beiträge: 140
devas zeigte ein beschämendes Verhalten in der Vergangenheit
Standard

Wenn ich jetzt, wo die Datenbank gefüllt ist, den index noch setze oder ändere bleibt das ohne Folgeschäden?
Mit Zitat antworten
  #8 (permalink)  
Alt 15-01-2008, 17:44
unset
  Moderator
Links : Onlinestatus : unset ist offline
Registriert seit: Jan 2007
Ort: Düsseldorf
Beiträge: 3.782
unset befindet sich auf einem aufstrebenden Ast
Standard

Um einen Index zu setzen ist AFAIK ein ALTER TABLE notwendig. Das ist auf große Tabellen immer eine langwierige Geschichte. Wenn du am DB-Design rumfummelst solltest du ohnehin unmittelbar vorher ein Backup machen und ggf. Teilbereiche deiner Anwendung, die mit diesen Daten arbeitet nicht zugänglich machen (um Datenverlust weiter zu minimieren). Daraus alleine resultiert also schon, dass du das ganze eher zu einem Zeitpunkt machen solltest, wo deine Applikation kaum oder sogar gar nicht beansprucht wird. IdR also Nachts zwischen 2 und 5 Uhr.

Edit: Jetzt habe ich deine Frage gar nicht beantwortet: Ja, ein ALTER TABLE ist "ohne weiteres" auch möglich, wenn die Tabelle bereits Daten enthält
Mit Zitat antworten
  #9 (permalink)  
Alt 15-01-2008, 17:59
devas
 Registrierter Benutzer
Links : Onlinestatus : devas ist offline
Registriert seit: Nov 2006
Beiträge: 140
devas zeigte ein beschämendes Verhalten in der Vergangenheit
Standard

Nur damit wir von dem selben sprechen.

Wenn ich eine Tabelle erstelle ist das rote dann der festgelegte index auf Datum.

CREATE TABLE `tabelle` (
`id` int(11) NOT NULL auto_increment,
`datum` varchar(50) collate latin1_general_ci NOT NULL,
.
.
.
.
.
.
.
PRIMARY KEY (`id`),
KEY `datum` (`datum`)
)
Mit Zitat antworten
  #10 (permalink)  
Alt 15-01-2008, 19:15
Abraxax
  THE REAL HAXE (Administrator)
Links : Onlinestatus : Abraxax ist offline
Registriert seit: Jul 2002
Ort: neuss.nrw.de
Beiträge: 22.623
Abraxax befindet sich auf einem aufstrebenden Ast
Standard

ja
__________________
INFO: Erst suchen, dann posten! | MANUAL(s): PHP | MySQL | HTML/JS/CSS | NICE: GNOME Do | TESTS: Gästebuch | IM: Jabber.org |


Mit Zitat antworten
  #11 (permalink)  
Alt 16-01-2008, 10:04
arkos
 PHP Senior
Links : Onlinestatus : arkos ist offline
Registriert seit: Feb 2003
Ort: hamburg
Beiträge: 1.015
arkos ist zur Zeit noch ein unbeschriebenes Blatt
Standard

und für bestehende tabellen (wie du sie hast):

Code:
ALTER TABLE `tabelle` ADD INDEX my_index (datum)

zum nachlesen:
http://dev.mysql.com/doc/userguide/e...ter-table.html
__________________
**********
arkos
**********
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre 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 an


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

ebiz-trader 6.0 - Das professionelle PHP Marktplatz Script ansehen ebiz-trader 6.0 - Das professionelle PHP Marktplatz Script

Mit unserer Lösungen können Sie nahezu jeden B2B / B2C Marktplatz betreiben den Sie sich vorstellen können. Ganz egal ob Sie einen Automarktplatz, Immobilenportal oder einfach einen Anzeigenmarkt betreiben möchten. Mit ebiz-trader können Sie Ihre Anforder

11.10.2018 Berni | Kategorie: PHP/ Anzeigenmarkt
PHP Server Monitor

PHP Server Monitor ist ein Skript, das prüft, ob Ihre Websites und Server betriebsbereit sind.

11.09.2018 Berni | Kategorie: PHP/ Security
PHP WEB STATISTIK ansehen PHP WEB STATISTIK

Die PHP Web Statistik bietet Ihnen ein einfach zu konfigurierendes Script zur Aufzeichnung und grafischen und textuellen Auswertung der Besuchern Ihrer Webseite. Folgende zeitlichen Module sind verfügbar: Jahr, Monat, Tag, Wochentag, Stunde Folgende son

28.08.2018 phpwebstat | Kategorie: PHP/ Counter
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 11:51 Uhr.