php.de

Zurück   php.de > Webentwicklung > Datenbanken

Datenbanken SQL und Co

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 07.04.2005, 07:30  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 146
Hakima befindet sich auf einem aufstrebenden Ast
Standard Datenbanküberlastung

Hallo,

ich habe bei der Konfiguration mysql nicht viel Erfahrung, daher bin ich um jeden Tip zu folgender Thematik dankbar:

Ich habe grössere DB-Tabellen (40-80MB je Tabelle). Der grösste Teil sind hier die Daten. Es gibt Probleme beim Import in die mysql-DB. Kann es auch sein, dass die Vielzahl der Befehle (Vielzahl der Datensätze) Probleme verursacht?

Parameter der php.ini habe ich angepasst: execution time höher gesetzt, post max time höher gesetzt.

Auch buffer size habe ich auf einen Wert von 64K gesetzt (habe es auch mit 64M getestet...). Die Maschine hat 256 MB RAM. Die DB sollte als Testumgebung (momentan wampp) laufen. Eine Linux-Umgebung ist geplant. Allerdings sollte es doch auch unter wampp laufen?

Allerdings tut sich nichts, d.h. die Datenbank ist überlastet und bringt auch keine Fehlermeldung beim Import einer Tabelle dieser Grössenordnung. Bei kleineren Tabellen (ab 2,6 MB) gibt es die Fehlermeldung "Kein SQL-Befehl!", was eigentlich nicht sein kann. Bis zu einer Grösse von 2 MB lassen sich problemlos Tabellen importieren.

Wo oder wie kann ich den Parameter bdb cache size ändern (falls es hieran liegen sollte)?

Meine Einstellungen sehen folgendermassen aus:

back log 50 50
basedir \wampp2\mysql\ \wampp2\mysql\
bdb cache size 8388572 8388572
bdb log buffer size 32768 32768
bdb home \wampp2\mysql\data\ \wampp2\mysql\data\
bdb max lock 10000 10000
bdb logdir
bdb shared data OFF OFF
bdb tmpdir \wampp2\tmp\ \wampp2\tmp\
bdb version Sleepycat Software: Berkeley DB 3.2.9a: (March 15, 2003) Sleepycat Software: Berkeley DB 3.2.9a: (March 15, 2003)
binlog cache size 32768 32768
bulk insert buffer size 8388608 8388608
character set latin1 latin1
character sets latin1 big5 czech euc_kr gb2312 gbk latin1_de sjis tis620 ujis dec8 dos german1 hp8 koi8_ru latin2 swe7 usa7 cp1251 danish hebrew win1251 estonia hungarian koi8_ukr win1251ukr greek win1250 croat cp1257 latin5 latin1 big5 czech euc_kr gb2312 gbk latin1_de sjis tis620 ujis dec8 dos german1 hp8 koi8_ru latin2 swe7 usa7 cp1251 danish hebrew win1251 estonia hungarian koi8_ukr win1251ukr greek win1250 croat cp1257 latin5
concurrent insert ON ON
connect timeout 5 5
convert character set
datadir \wampp2\mysql\data\ \wampp2\mysql\data\
delay key write ON ON
delayed insert limit 100 100
delayed insert timeout 300 300
delayed queue size 1000 1000
flush OFF OFF
flush time 1800 1800
ft boolean syntax + -><()~*:""&| + -><()~*:""&|
ft min word len 4 4
ft max word len 254 254
ft max word len for sort 20 20
ft stopword file (built-in) (built-in)
have bdb YES YES
have crypt NO NO
have innodb YES YES
have isam YES YES
have raid NO NO
have symlink YES YES
have openssl NO NO
have query cache YES YES
init file
innodb additional mem pool size 1048576 1048576
innodb buffer pool size 8388608 8388608
innodb data file path ibdata1:10M:autoextend ibdata1:10M:autoextend
innodb data home dir
innodb file io threads 4 4
innodb force recovery 0 0
innodb thread concurrency 8 8
innodb flush log at trx commit 0 0
innodb fast shutdown ON ON
innodb flush method
innodb lock wait timeout 50 50
innodb log arch dir .\ .\
innodb log archive OFF OFF
innodb log buffer size 1048576 1048576
innodb log file size 5242880 5242880
innodb log files in group 2 2
innodb log group home dir .\ .\
innodb mirrored log groups 1 1
interactive timeout 28800 28800
join buffer size 131072 131072
key buffer size 8388572 8388572
language \wampp2\mysql\share\english\ \wampp2\mysql\share\english\
large files support ON ON
local infile ON ON
log OFF OFF
log update OFF OFF
log bin OFF OFF
log slave updates OFF OFF
log slow queries OFF OFF
log warnings OFF OFF
long query time 10 10
low priority updates OFF OFF
lower case table names ON ON
max allowed packet 1048576 1048576
max binlog cache size 4294967295 4294967295
max binlog size 1073741824 1073741824
max connections 100 100
max connect errors 10 10
max delayed threads 20 20
max heap table size 16777216 16777216
max join size 4294967295 4294967295
max sort length 1024 1024
max user connections 0 0
max tmp tables 32 32
max write lock count 4294967295 4294967295
myisam max extra sort file size 268435456 268435456
myisam max sort file size 2147483647 2147483647
myisam recover options OFF OFF
myisam sort buffer size 8388608 8388608
net buffer length 16384 16384
net read timeout 30 30
net retry count 10 10
net write timeout 60 60
new OFF OFF
open files limit 0 0
pid file \wampp2\mysql\data\obelix.pid \wampp2\mysql\data\obelix.pid
log error .\obelix.err .\obelix.err
port 3306 3306
protocol version 10 10
read buffer size 131072 131072
read rnd buffer size 262144 262144
rpl recovery rank 0 0
query cache limit 1048576 1048576
query cache size 0 0
query cache type ON ON
server id 0 0
slave net timeout 3600 3600
skip external locking ON ON
skip networking OFF OFF
skip show database OFF OFF
slow launch time 2 2
sort buffer size 2097116 2097116
sql mode 0 0
table cache 64 64
table type MYISAM MYISAM
thread cache size 0 0
thread stack 196608 196608
tx isolation REPEATABLE-READ REPEATABLE-READ
timezone Westeuropäische Normalzeit Westeuropäische Normalzeit
tmp table size 33554432 33554432
tmpdir \wampp2\tmp\ \wampp2\tmp\
version 4.0.12-max-debug 4.0.12-max-debug
wait timeout 28800 28800

Ich bin für jeden Tip, der den Import grösserer Datenmengen verbessert, dankbar.

Gruß
Hakima ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 07.04.2005, 12:04  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 387
MrNiceGuy befindet sich auf einem aufstrebenden Ast
Standard

Das Problem wird wohl die maximale Datei-Upload-Größe von PHP sein, die könntest du zwar ändern, aber selbst dann dauert es komischerweise selbst auf der Lokalen Umgebung stunden bis das SQL-Script in die DB importiert wurde, warum auch immer, scheint eine Geschwindigkeitsbegrenzung vom IE zu sein was den Upload angeht!? *schulterzuck*

Meine Idee wäre es, die SQL-Datei per Console zu importieren. Hier müsste dir das Programm "mysql.exe" im Verzeichnis "[MySQL-Installationsverzeichnis}\bin" weiterhelfen. Der Befehl sieht dann wie folgt aus:

Code:
mysql --user=root --password=password --database=datenbank < datei.sql
Das sollte dann eigentlich funktionieren
MrNiceGuy ist offline   Mit Zitat antworten
Alt 07.04.2005, 12:52  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 146
Hakima befindet sich auf einem aufstrebenden Ast
Standard

o.k.,

Danke erst mal, -werde das mal ausprobieren und melde mich wieder!

Bis später
Hakima ist offline   Mit Zitat antworten
Alt 07.04.2005, 14:50  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 2.150
Guradia befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von Kamalo
Bei kleineren Tabellen (ab 2,6 MB) gibt es die Fehlermeldung "Kein SQL-Befehl!", was eigentlich nicht sein kann. Bis zu einer Grösse von 2 MB lassen sich problemlos Tabellen importieren.
phpMyAdmin?
Da muss die Datei erstmal hübsch geparst werden .. und dabei fällt wohl irgendwas aus dem Rahmen und PMA erkennt gar nix mehr

Zitat:
Zitat von MrNiceGuy
selbst auf der Lokalen Umgebung stunden bis das SQL-Script in die DB importiert wurde, warum auch immer, scheint eine Geschwindigkeitsbegrenzung vom IE zu sein was den Upload angeht!? *schulterzuck*
Der IE ist fertig, bevor es überhaupt zu den Stunden kommt. PHP verarbeitet die Datei erst nach kompletten Upload und das dauert ... der IE wartet dann halt geduldig, bis was kommt ... oder hat zwischendrinn auch mal die Schnauze voll ... und sagte "TimeOut"

Zitat:
Zitat von MrNiceGuy
Meine Idee wäre es, die SQL-Datei per Console zu importieren. Hier müsste dir das Programm "mysql.exe" im Verzeichnis "[MySQL-Installationsverzeichnis}\bin" weiterhelfen. Der Befehl sieht dann wie folgt aus:

Code:
mysql --user=root --password=password --database=datenbank < datei.sql
Möchte ich auch vorschlagen.
Guradia ist offline   Mit Zitat antworten
Alt 07.04.2005, 15:43  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 387
MrNiceGuy befindet sich auf einem aufstrebenden Ast
Standard

@Guradia:

Genau das ist es, was ich meinte: Ich greife auf localhost zurück, die Datei dürfte selbst bei 20 MB Größe nicht allzulange brauchen (weil: localhost), aber es passiert einfach nichts. Meine Vermutung lag daher entweder beim IE, dass dieser selbst beim localhost die Datei nur mit einer gewissen Geschwindigkeit "hochlädt" (wobei das keinen Sinn ergeben würde) oder dass PHP so lange braucht. Fand ich jedoch recht bemerkenswert, da mein Rechner so eigentlich nicht gerade langsam ist und das Parsen der Datei direkt über die Console ja auch nur wenige Sekunden gedauert hat. Da scheint dann ja irgendwas nicht so ganz richtig prorgammiert zu sein, sei es in PHP oder im phpMyAdmin, dass das so lange dauert!?
MrNiceGuy ist offline   Mit Zitat antworten
Alt 07.04.2005, 17:18  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 2.150
Guradia befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von MrNiceGuy
Da scheint dann ja irgendwas nicht so ganz richtig prorgammiert zu sein, sei es in PHP oder im phpMyAdmin, dass das so lange dauert!?
As said: PMA wird die Datei erstmal durchparsen und in Statements aufspalten und diese einzeln an MySQL absetzen.

Das ist ein himmelweiter unterschied zum direkten reinsaugen über den CLI-Client ..
Guradia ist offline   Mit Zitat antworten
Alt 08.04.2005, 10:38  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 146
Hakima befindet sich auf einem aufstrebenden Ast
Standard DB-Überlastung

MrNiceGuy, Guradia,

vielen Dank für die wirklich gute Erklärung für dieses Speicherproblem! :wink:

Zitat:
Zitat von Guradia
phpMyAdmin?
Da muss die Datei erstmal hübsch geparst werden .. und dabei fällt wohl irgendwas aus dem Rahmen und PMA erkennt gar nix mehr

Der IE ist fertig, bevor es überhaupt zu den Stunden kommt. PHP verarbeitet die Datei erst nach kompletten Upload und das dauert ... der IE wartet dann halt geduldig, bis was kommt ... oder hat zwischendrinn auch mal die Schnauze voll ... und sagte "TimeOut"
Nun, ich hatte zunächst den Konsolenbefehl

Code:
source datei.sql
(Das ist, denke ich, versionsabhängig?)

abgesetzt in mysql.exe. Auf meiner Windows-Maschine stellte sich kein Erfolg ein...

Nach Installation von debian und apache mit mysql, PHP und PMA wollte sich der Erfolg erst auch nicht einstellen. -Bis ich sah, dass der Parameter max allowed packet auf 16M stand, -eigentlich nichts unnormales... ich setzte ihn spontan! auf 130M (die DB hat 128M) und siehe da, -es funzt

O.K., jetzt war das ganze nicht so trivial, wie ich gedacht habe... -nun, die Datenbankdateien (Endungen .MYI, .MYD oder FRM) stehen mir nicht zur Verfügung, da bei dem Provider "nur" Webspace gemietet wurde... Das soll sich ändern. Und der Provider wird mitgewechselt. Support ist "nur" per Ticket möglich, und das nicht gerade gut. Es sind eher Standardsätze in der Art: "Mieten Sie unseren Rootserver, dann wird alles anders..." an der Tagesordnung... -O.k., dadurch weiss ich jetzt auch nicht, wie der Provider seine Export-Parameter eingestellt hat (darüber wollte mir auch keiner Auskunft geben!). O.k., ich kann also die DB jetzt per Konsole implementieren. Dann habe ich bei meiner Testumgebung ja auch die Dateien mit den Endungen .MYI, .MYD oder FRM... Ich denke, es wird wohl einfacher sein, diese in die richtige Ordnerstruktur zu implementieren als einen Import-Befehl abzusetzen. -Der jetzige Provider (wie gesagt, webspace gemietet) hat mir den Zugriff verwährt auf seine Ordner (ist wohl alles zu aufwendig und davon abgesehen - ja nicht im Paket enthalten).

Danke nochmal & Gruß
Hakima ist offline   Mit Zitat antworten
Alt 08.04.2005, 10:55  
Moderator
 
Benutzerbild von robo47
 
Registriert seit: 03.09.2004
Beiträge: 11.792
PHP-Kenntnisse:
Fortgeschritten
robo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz sein
Standard

öhm dann würde ich mal sagen, schau dir mal die dumps an, ich würde bahupten die insert-struktur siehth so aus:


inset into table (field1,field2) VALUES ('val1','val2'),
('val1','val2'),
('val1','val2'),
('val1','val2');

sprich alle datensätze einer tabelle werden mit einem riesen query importiert. dass da die meisten mysql-server nicht mitmachen ist klar. wenn du es lokal bei dir importiert hast, dann exportier es über phpmyadmin nochmal und diesmal richtig, dann hast du das problem nicht, oder schau dir mal mysqldumper an udn schau ob du damit lokal deine dumps erstellst und online einspielst. hab leider mit dem teil nur erfharungen bis zu 20 MB, aber das tool läuft gut.

http://www.mysqldumper.de/board/

mfg
robo47
robo47 ist offline   Mit Zitat antworten
Alt 08.04.2005, 14:14  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 387
MrNiceGuy befindet sich auf einem aufstrebenden Ast
Standard

Also einfacher, als über die Console kann man es meiner Meinung nach nicht machen. Der Befehl steht oben. Problem ist natürlich, dass bei den meisten Webspaces keine Console verfügbar ist, das stimmt wohl. Nur hätte ich vor 4 Jahren schon gewusst wie einfach das geht auch riesengroße SQL-Dumps so einfach zu importieren, hätte ich die eine Dump-Datei nicht erst in 21 Teile zerhackt und einzeln per PMA hochgeladen *gg* Man lernt eben nie aus...
MrNiceGuy ist offline   Mit Zitat antworten
Alt 10.04.2005, 21:55  
Gast
 
Beiträge: n/a
Standard

Dies dürfte helfen.

http://www.mysqldumper.de/de/index.php?m=0
  Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

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 an
Gehe zu

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
sql datenbank überlastet, delayed insert timeout, phpmyadmin \flush time\, mysql konsole import port, sql dateigröße php ändern, phpmyadmin max pool size ändern, mysqldumper sql-datei maximale dateigröße: 16m ändern, mysql tmp table size ändern phpmyadmin, max join size, phpmyadmin sql befehl dauert zu lange, max allowed packet, php datei nicht überlasten, datenbanken überlasten, php datenbank überlastet was tun, mysql überlastet, gründe für datenbanküberlastung mysql, phpmyadmin import dauert zu lange, datenbank überlastet mysql php, mysql windows \read buffer size\, mysql überlastet locked

Alle Zeitangaben in WEZ +2. Es ist jetzt 07:13 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.