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-08-2007, 22:38
mithril
 Newbie
Links : Onlinestatus : mithril ist offline
Registriert seit: Aug 2007
Beiträge: 4
mithril ist zur Zeit noch ein unbeschriebenes Blatt
Standard [MySQL 4.1] Große Tabelle auf unique reduzieren

Hallo,

hab ein Problem und würde mich freuen, wenn mir hier jemand etwas weiter helfen könnte, da mySQL für mich quasi ein buch mit sieben siegeln ist:

hab eine table mit ca. 600MB größe und 6 mill einträgen. Nun sind diese jedoch nicht alle unique, wobei für mich wichtig ist, daß 2 spalten, nämlich id und keyw unique sind (während es bei den anderen egal ist).

Daher dachte ich am einfachsten wird es sein, die tabelle einfach in ne neue einzufügen bei der ich das feld id und keyw auf unique setze.

Hab somit das versucht:
insert into new_table select * from old_table

bekomme aber immer den fehler:
#1062 - Duplicate entry 'cellvalue' for key 2

Scheint wohl so zu sein, daß mysql sich selbst stoppt wenn der erste nicht-unique value auftritt.

Hat irgendeiner ne Idee wie ich das beheben kann? Und hat eventuell noch jemand ne idee wie ich während des Übertragens bei werten in der spalte keyw die einen Bindestrich enthalten, diesen durch ein leerzeichen ersetzen kann?

Zu guter letzt noch: Hab das ganze mit einer php-lösung versucht (weil ich eben nicht weiß wie man obig angeführtes Ersetzen über mysql macht) und das ist so was von langsam, da mysql so sehr lahmt, doch eigentlich sollten doch 600 MB nicht so tragisch sein, oder? Ich mein das ganze läuft auf einem AMD 3,8 Dual Core mit 2 GB Ram unter Debian und der server arbeitet rein dafür (soll heißen es geschieht sonst gar nichts am server ausser dem script). Hat irgendwer tips wie man das verbessern könnte?

Danke im Voraus
Mit Zitat antworten
  #2 (permalink)  
Alt 15-08-2007, 22:58
penizillin
 PHP Guru
Links : Onlinestatus : penizillin ist offline
Registriert seit: Feb 2004
Beiträge: 10.166
penizillin ist zur Zeit noch ein unbeschriebenes Blatt
Standard

1. schau mal unter http://dev.mysql.com/doc/refman/5.0/en/delete.html nach "remove duplicates" in den user comments. mit den gleichen suchbegriffen http://free.netartmedia.net/Databases/Databases8.html, etwas auführlicher.

2.
Zitat:
Und hat eventuell noch jemand ne idee wie ich während des Übertragens bei werten in der spalte keyw die einen Bindestrich enthalten, diesen durch ein leerzeichen ersetzen kann?
REPLACE() nach dem übertragen.

3.
Zitat:
... da mysql so sehr lahmt, doch eigentlich sollten doch 600 MB nicht so tragisch sein, oder?
etwas ungünstig aufgebaute datenbank kann schnell dazu führen, aber sobald php ins spiel kommt und man keine erfahrung mit leistungsoptimierung hat, wird's schnell langsam (tm). hatte mal eine datenbank mit wenigen hundert tausend einträgen verarbeiten müssen und erst mal mit php auf die schnelle zusammengeschrieben. wurde mir zu langsam, habe abgebrochen, das selbe in java implementiert, lief ca. 4 mal schneller. also - keine pauschalantwort möglich.
Mit Zitat antworten
  #3 (permalink)  
Alt 16-08-2007, 00:36
mithril
 Newbie
Links : Onlinestatus : mithril ist offline
Registriert seit: Aug 2007
Beiträge: 4
mithril ist zur Zeit noch ein unbeschriebenes Blatt
Standard

danke für die tips das erstellen der unique DB hat geklappt mit alter ignore...

aber die table ist noch immer so extrem langsam... was ich auch nicht verstehe, wenn ich über putty->top die load anschaue geht die hoch auf 4 wobei sowohl cpu als auch ram nicht annähernd ausgelastet erscheinen...

Tasks: 88 total, 1 running, 85 sleeping, 2 stopped, 0 zombie
Cpu(s): 0.0% us, 0.3% sy, 0.0% ni, 99.7% id, 0.0% wa, 0.0% hi, 0.0% si
Mem: 2075352k total, 892136k used, 1183216k free, 17444k buffers
Swap: 2096440k total, 0k used, 2096440k free, 758504k cached

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
324 root 15 0 0 0 0 S 0.3 0.0 0:03.09 kjournald
1 root 16 0 1864 628 1660 S 0.0 0.0 0:00.91 init
2 root RT 0 0 0 0 S 0.0 0.0 0:00.00 migration/0
3 root 34 19 0 0 0 S 0.0 0.0 0:00.00 ksoftirqd/0
4 root 5 -10 0 0 0 S 0.0 0.0 0:00.12 events/0
5 root 15 -10 0 0 0 S 0.0 0.0 0:00.00 khelper
6 root 15 -10 0 0 0 S 0.0 0.0 0:00.00 kacpid
44 root 5 -10 0 0 0 S 0.0 0.0 0:00.02 kblockd/0
55 root 16 0 0 0 0 S 0.0 0.0 0:00.21 pdflush
57 root 5 -10 0 0 0 S 0.0 0.0 0:00.00 aio/0
56 root 25 0 0 0 0 S 0.0 0.0 0:00.00 kswapd0
193 root 25 0 0 0 0 S 0.0 0.0 0:00.00 kseriod
211 root 10 -10 0 0 0 S 0.0 0.0 0:00.00 xfslogd/0
212 root 10 -10 0 0 0 S 0.0 0.0 0:00.00 xfsdatad/0
213 root 15 0 0 0 0 S 0.0 0.0 0:00.00 xfsbufd
219 root 9 -10 0 0 0 S 0.0 0.0 0:00.00 ata/0
220 root 25 0 0 0 0 S 0.0 0.0 0:00.00 scsi_eh_0
Mit Zitat antworten
  #4 (permalink)  
Alt 16-08-2007, 00:43
penizillin
 PHP Guru
Links : Onlinestatus : penizillin ist offline
Registriert seit: Feb 2004
Beiträge: 10.166
penizillin ist zur Zeit noch ein unbeschriebenes Blatt
Standard

zeig mal den dump der tabellenstruktur und erkläre, was mit der tabelle gemacht wird.
musst schon selbst mit messungen herausfinden, welche anforderung die datenbank belastet.
Mit Zitat antworten
  #5 (permalink)  
Alt 16-08-2007, 10:26
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

Das Ding hat 2 GB Ram und gerade mal ein GB an Ram wird verbraucht, auch wenn das ein solo-mysql-Server ist?
Das Programm mysqlreport gibt Auskunft darüber zu wie viel der Key-Cache genutzt ist, wenn das bei 100% liegt freut sich key_buffer_size über größere Werte~

Ansonsten ist EXPLAIN immer eine gute Hilfe (zumindest für uns xP)
Mit Zitat antworten
  #6 (permalink)  
Alt 17-08-2007, 20:07
mithril
 Newbie
Links : Onlinestatus : mithril ist offline
Registriert seit: Aug 2007
Beiträge: 4
mithril ist zur Zeit noch ein unbeschriebenes Blatt
Standard

ok danke, werd ich gleich mal machen und dann hier posten.
Mit Zitat antworten
  #7 (permalink)  
Alt 17-08-2007, 20:29
mithril
 Newbie
Links : Onlinestatus : mithril ist offline
Registriert seit: Aug 2007
Beiträge: 4
mithril ist zur Zeit noch ein unbeschriebenes Blatt
Standard

hab das probiert in putty:

/usr/bin/perl mysqlreport --user meinusername --password meinpasswort --host localhost --all

und bekomme die fehlermeldung
Can't locate DBI.pm in @INC (@INC contains: /etc/perl /usr/local/lib/perl/5.8.8 /usr/local/share/perl/5.8.8 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.8 /usr/share/perl/5.8 /usr/local/lib/site_perl .) at mysqlreport line 24.
BEGIN failed--compilation aborted at mysqlreport line 24.


Hab ich irgendwas an der Abfrage falsch gemacht? Wie soll ich die Abfrage durchführen?
Mit Zitat antworten
  #8 (permalink)  
Alt 17-08-2007, 20:51
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

Ich würde sagen deine Perl-Installation ist unkomplett/fehlerhaft ... aber ich kann kein Perl, Google nach der Fehlermeldung, oder nutze den Hinweis hier: http://hackmysql.com/mysqlreportdoc "If mysqlreport breaks, send me a message with the error."
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 05:28 Uhr.