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 30-10-2007, 22:35
aXu
 Newbie
Links : Onlinestatus : aXu ist offline
Registriert seit: Oct 2007
Ort: CH
Beiträge: 47
aXu ist zur Zeit noch ein unbeschriebenes Blatt
Standard Riesige DB Sortieren

Moin Leute

ich hab n Problem ^^ (welche in wunder)
ich habe eine grosse tabelle mit weit über 20mio einträgen.
Aufbau ist eigentlich ganz simpel. ich hab ne id und dann ein wort welches maximal 8 stellen hat. soweit so gut. Jetzt möchte ich die ganze Tabelle in eine Datei schreiben aber es sollenkein duplikate vorkommen und das ganze soll sortiert sein.
Habe bisher versucht das ganze mittels distinct und sort und mit einem Limit-befehl laufen zu lassen. aber leider funzt das irgendwie nicht
Kannmir da jemand ein paar befehle welche hilfreich sein könnten vorwerfen? dann kann ich googlen und gucken ob ich was rausbekomme ^^

lg aXu

ps: ist ne mysql-DB und das ganze soll dann mit apache und php angesprochen werden.
Mit Zitat antworten
  #2 (permalink)  
Alt 30-10-2007, 22:37
PHP-Desaster
 PHP Expert
Links : Onlinestatus : PHP-Desaster ist offline
Registriert seit: Mar 2006
Beiträge: 3.105
PHP-Desaster befindet sich auf einem aufstrebenden Ast
Standard Re: Riesige DB Sortieren

Zitat:
Habe bisher versucht das ganze mittels distinct und sort und mit einem Limit-befehl laufen zu lassen. aber leider funzt das irgendwie nicht
Ist keine Fehlerbeschreibung, sind aber die richtigen Bordmittel. Kannst ja mal deine Ansätze zeigen!
Mit Zitat antworten
  #3 (permalink)  
Alt 30-10-2007, 22:41
aXu
 Newbie
Links : Onlinestatus : aXu ist offline
Registriert seit: Oct 2007
Ort: CH
Beiträge: 47
aXu ist zur Zeit noch ein unbeschriebenes Blatt
Standard

naja, das problem ist das es einfach viel zu lange dauert.. hab nach einer H abgebrochen. Im Moment versuche ich Mysql 6 zum laufen zu bringen weil das (wen ich das richtig gelesen habe) auch einen dualcore ausnutzen kann.

Angaben zum Sys: Nforce4 Board, 2GB Ram, AMD X2 4600+ dualcore, php 5.2.x
Mit Zitat antworten
  #4 (permalink)  
Alt 30-10-2007, 22:46
ghostgambler
 Master
Links : Onlinestatus : ghostgambler ist offline
Registriert seit: Jul 2004
Ort: DE - NRW
Beiträge: 4.620
ghostgambler ist zur Zeit noch ein unbeschriebenes Blatt
Standard

20 Millionen Einträge sind vollkommener Wahnwitz x_X

Clustering lautet die Devise - irgendein Muster finden, nach dem man die Datensätze auf verschiedene Tabellen aufteilen kann (z.B. dem ersten Buchstaben), dann hat man deutlich kleinere Tabelle die man sortieren muss


btw. Mysql6 ist Beta - willst du ernsthaft eine riesige Tabelle in die Hände von unvollkommener Software legen?!...
Mit Zitat antworten
  #5 (permalink)  
Alt 30-10-2007, 22:52
PHP-Desaster
 PHP Expert
Links : Onlinestatus : PHP-Desaster ist offline
Registriert seit: Mar 2006
Beiträge: 3.105
PHP-Desaster befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
20 Millionen Einträge sind vollkommener Wahnwitz x_X
Das hatte ich auch so gedacht, wollte aber erstmal seine Probleme mit seinem Query erfahren!
Mit Zitat antworten
  #6 (permalink)  
Alt 30-10-2007, 22:53
aXu
 Newbie
Links : Onlinestatus : aXu ist offline
Registriert seit: Oct 2007
Ort: CH
Beiträge: 47
aXu ist zur Zeit noch ein unbeschriebenes Blatt
Standard

sind keine produktive Daten ^^
Okay, das würde dann heissen, das ich die anzahl der Tabellen erhöhen und dabei die Anzahl der Datensätze verringern soll. wäre ne idee. Würde mehr Aufwand beim eintragen ergeben, dafür wäre die Abfrage schneller. muss ich gucken ob ich das realisieren kann. Hab da offenbar dem ganzen etwas zu viel zugemutet ^^
Anfänger halt
Mit Zitat antworten
  #7 (permalink)  
Alt 30-10-2007, 22:59
aXu
 Newbie
Links : Onlinestatus : aXu ist offline
Registriert seit: Oct 2007
Ort: CH
Beiträge: 47
aXu ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Okey, mal den query den ich probeweiser verwendet habe

SELECT DISTINCT liste FROM testdb ORDER BY liste ASC LIMIT 1024
Mit Zitat antworten
  #8 (permalink)  
Alt 30-10-2007, 23:41
ghostgambler
 Master
Links : Onlinestatus : ghostgambler ist offline
Registriert seit: Jul 2004
Ort: DE - NRW
Beiträge: 4.620
ghostgambler ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Kannst versuchen einen Index auf liste zu setzen - mMn ist die Tabelle aber trotzdem zu groß, das ist einfach unpraktikabel.
Die Hardware im Hintergrund skaliert nicht genug, damit man mit so großen Tabellen noch artgerecht hantieren könnte...
Mit Zitat antworten
  #9 (permalink)  
Alt 30-10-2007, 23:48
aXu
 Newbie
Links : Onlinestatus : aXu ist offline
Registriert seit: Oct 2007
Ort: CH
Beiträge: 47
aXu ist zur Zeit noch ein unbeschriebenes Blatt
Standard

schade... was wäre dann ein system welches für solch grosse tabellen geeignet ist?
Mit Zitat antworten
  #10 (permalink)  
Alt 31-10-2007, 00:11
ghostgambler
 Master
Links : Onlinestatus : ghostgambler ist offline
Registriert seit: Jul 2004
Ort: DE - NRW
Beiträge: 4.620
ghostgambler ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von aXu
schade... was wäre dann ein system welches für solch grosse tabellen geeignet ist?
Gar keines.
(Super-Computer[/ironie])

Operationen auf solch große Tabellen dauern einfach und in den meisten/allen Fällen hat man schlichtweg nicht die Zeit um die komplette Applikation für ein paar Tage still zu legen, weil ein ALTER läuft.
Wenn man allerdings 10, oder 20, oder 100, oder 200 kleine Tabellen hat, lassen sich diese deutlich schneller manipulieren.


Die Festplatten skalieren in der Größe schneller nach oben als z.B. der RAM, will heißen während z.B. eine Gigabyte große Tabelle, bei den meisten Datenbank-Servern locker noch in den RAM passt, tut es eine 500 Gigabyte große Tabelle schon nicht mehr.
Mit Zitat antworten
  #11 (permalink)  
Alt 31-10-2007, 02:22
aXu
 Newbie
Links : Onlinestatus : aXu ist offline
Registriert seit: Oct 2007
Ort: CH
Beiträge: 47
aXu ist zur Zeit noch ein unbeschriebenes Blatt
Standard

hm.. komisch.. dem ganzen liegt ein textfile zu grunde.
Wenn ich das mit einem C-Programm sortiere geht das ruckzuck... wenns hoch kommt etwa 15 min...

Also konkret: will man das ganze mit SQl und PHP lösen, muss das System über eine ganze Menge RAM und sehr schneller Festplatten verfügen, dazu müssen möglichst viele Tabellen mit möglichst wenigen Einträgen bestehen. Es scheint mir also, dass das System Mysql nicht besonders Leistungsfähig ist... Schade eigentlich.

Aber ich liege korrekt, das das Mysql 5 keine multiprozessorunterstützung hat?
Mit Zitat antworten
  #12 (permalink)  
Alt 31-10-2007, 08:43
ghostgambler
 Master
Links : Onlinestatus : ghostgambler ist offline
Registriert seit: Jul 2004
Ort: DE - NRW
Beiträge: 4.620
ghostgambler ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von aXu
hm.. komisch.. dem ganzen liegt ein textfile zu grunde.
Wenn ich das mit einem C-Programm sortiere geht das ruckzuck... wenns hoch kommt etwa 15 min...
Kann ich nichts zu sagen, ohne mir C-Programm, Textfile, Datenbank und Query genauer anzusehen und dafür habe ich keine unbezahlte Zeit~
Mal abgesehen davon, dass MySQL z.B. auch noch so tolle Variablen wie sort_buffer bereit stellt, die man für den eigenen Zweck und für den einen Query mal erhöhen könnte.

Zitat:
Aber ich liege korrekt, das das Mysql 5 keine multiprozessorunterstützung hat?
Nein, nicht wirklich. Multiprozessorunterstützung bietet MySQL auf jeden Fall seit 5.0, die allerdings teilweise nicht einwandfrei skaliert, vor allem in Bezug auf InnoDB und deren Mutex-Spielereien gibt es häufiger mal komische Messergebnisse bei bestimmten Queries.

Du kannst es natürlich trotzdem einfach mal mit innodb probieren (wenn du bisher myisam verwendet hast - oder auch umgekehrt), vielleicht skaliert die jeweils andere Engine besser für deinen Zweck~
Oder auch einfach mal mit einer HEAP/MEMORY-Tabelle den kompletten Inhalt in den RAM zwingen, sofern der ausreicht.
Mit Zitat antworten
  #13 (permalink)  
Alt 31-10-2007, 13:42
Benutzerbild von onemorenerd onemorenerd
  Moderator
Links : Onlinestatus : onemorenerd ist offline
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.471
onemorenerd wird schon bald berühmt werdenonemorenerd wird schon bald berühmt werden
Standard

http://www.mysqlperformanceblog.com/...-large-tables/

Kannst du bitte noch ein paar weitere Infos posten?
- Schema inkl. Spaltenformate, Schlüssel und Constraints
- Verteilung der Daten über den möglichen Wertebereich (grob)
- sonstige Anfrage auf diese Tabelle (nur den Zweck nennen, die Queries selbst sind unwichtig)
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

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
Affilinator - Affilinet XML Produktlisten Skript

Die Affilinator Affilinet XML Edition ist ein vollautomatisches Skript zum einlesen und darstellen der Affili.net (Partnerprogramm Netzwerk) Produktlisten und Produktdaten. Im Grunde gibt der Webmaster seine Affilinet PartnerID ein und hat dann unmittelb

27.08.2018 freefrank@ | Kategorie: PHP/ Partnerprogramme
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 19:42 Uhr.