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 28-08-2007, 11:01
jizza
 Newbie
Links : Onlinestatus : jizza ist offline
Registriert seit: Aug 2007
Beiträge: 3
jizza ist zur Zeit noch ein unbeschriebenes Blatt
Standard [MySQL] MySQL Protollierung von übergangenen Insert-Befehlen

Hallo Liebes Forum...

da ich Rat von Fachleuten brauche, und ich hoffe hier auf den ein oder anderen zu treffen, habe mich soeben angemeldet.

Vorab ein Paar Infos zum System, MAC OS X 10.4, MAMP in der aktuellsten Version (MySQL 5.0), 1GByte RAM und eine Festplatte mit 5400 Umdrehungen)


Mein Fall:

Ich importiere über ein PHP Script eine CSV Datei, die in etwa 35000 Einträge hat, in eine Datenbank. Das PHP Script übernimmt bereits ein paar Prüfungen und entscheidet was mit welchen Eintrag (aus der CSV) gemacht werden soll. Je nach dem wird dann eine SP aufgerufen die alle weiteren prüfungen und Insert Anweisungen übernimmt.

Ihr müsst euch nun vorstellen das jeder Eintrag (aus der CSV) in 6 verschiedene Tabellen aufgeteilt wird:

Wert1, Wert2, Wert3 = > Tabelle 1
Wert4, Wert5, Wert6 = > Tabelle 2
etc.

Nach jedem Insert in der SP wird geprüft ob tatsächlich ein Eintrag in die Tabelle gemacht wurde. Sollte das nicht der Fall sein wird ein Eintrag in eine einfache Error_Tabelle gemacht und anschließend die Prozedur verlassen.


Das Problem:

Wenn ich meinen Rechner neustarte und dieses Script laufen lasse so kommt es manchmal vor das Alle Daten in Tabelle 1 eingetragen werden, aber in Tabelle 2, 3, etc. sind willkürlich, sagen wir 500 Datensätze, weniger drin. Obwohl ja wie oben beschrieben er jedes Insert prüft, und bei einem fehler eigentlich einen Eintrag in die Error_Tabelle einfügen soll.

Starte ich das Script dann noch zwei drei mal werden dann alle Einträge erstellt.
Dann läuft alles Problemlos, ich erhalte auch keinerlei Fehlermeldungen.


Was ich bisher tun konnte:

Einige Recherchen haben mich darauf schließen lassen das es eventuell ein Speicherproblem sein könnte.

Ich habe dann folgende MySQL Start Variablen angepasst:
key_buffer_size = 128M
bulk_insert_buffer_size = 128M
read_buffer_size = 16M
sort_buffer_size = 16M
myisam_repair_threads = 1
max_heap_table_size = 64M
max_allowed_packet = 32M
tmp_table_size = 64M
table_cache = 1024
query_cache_type = 1
query_cache_size = 64M
query_cache_limit = 2M
thread_concurrency = 8
thread_cache_size = 16
max_connections = 20

Seit dieser Anpassung läuft das Skript immer einwandfrei. Speziell dir Erhöhung des "key_buffer_size" hat eine enorme Geschwindikeitssteigerung zur Folge gehabt.

Gut, nun habe ich das Problem ja anscheindend gelöst, aber leider nur temporär!
Was wenn dieses Phänomän wieder auftritt, und das Script Datensätze einfach übergeht?

Ist euch schonmal etwas derartiges aufgefallen?
Hat jemand eine Idee wie man dagegen vorgehen kann?
Lösungsansätze, Erfahrungen, mir hilft sicher alles weiter...

Vielen Dank schon mal...
Ich hoffe auf eure Hilfe.

Robert

Geändert von jizza (28-08-2007 um 12:28 Uhr)
Mit Zitat antworten
  #2 (permalink)  
Alt 28-08-2007, 11:06
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

echo mysql_error();
error-log des mysql-Servers?
(btw. wieso steht im Betreff mssql? Das ist was ganz anderes - das ist dir bewusst?!)
Mit Zitat antworten
  #3 (permalink)  
Alt 28-08-2007, 11:17
jizza
 Newbie
Links : Onlinestatus : jizza ist offline
Registriert seit: Aug 2007
Beiträge: 3
jizza ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Schreck lass nach, es ist natürlich MySQL... einfacher fehler bei der Auswahl im PullDown...

Der mysql_error_log sowie die PHP funktion mysql_error() liefern keinerlei Fehler oder Hinweise auf Fehler...
Mit Zitat antworten
  #4 (permalink)  
Alt 28-08-2007, 13:09
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

Sicher, dass du mysql_error() an der richtigen Stelle aufgerufen hast?
Sicher, dass du dir das richtige mysql-Error-Log im fs angeschaut hast?

Ist das eine stable mysql-Version?
Hast du mal den Bugtracker nach deinem Problem abgesucht?
Sicher, dass der Ram nicht kaputt ist?


Linux? Syslog?


Warum ist thread_concurrency eigentlich bei 8?
2 wäre adäquater denke ich... vielleicht sogar nur 1 (außer der Server hat vier CPUs, wovon ich aber mal nicht ausgehe bei 128 MB Key Cache...)
Mit Zitat antworten
  #5 (permalink)  
Alt 28-08-2007, 14:58
jizza
 Newbie
Links : Onlinestatus : jizza ist offline
Registriert seit: Aug 2007
Beiträge: 3
jizza ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Also...

1. mysql_error wird nach jedem Aufruf einer SP abgefragt (mysqli):

PHP-Code:
if(!$sql->multi_query("CALL bsp_sp("var1var2")")){
  echo 
"Konnte Prozedur nicht ausführen: " $sql->error;

2. Bei mir habe ich lediglich den Error Log aktiviert... der hat leider keine Einträge diesbezüglich. Macht es Sinn die Allgemeine Anfragen Logdatei zu aktivieren? Der Binär Log und Log für langsame Abfragen sind hier denke ich nicht hilfreich, oder?

3. Meines Wissens nach ist die MySQL Version 5.0.41 stable...

4. Den habe ich noch nicht bemüht...

5. Ich hoffe doch das mein Ram nicht kaputt ist ;-). Aber nein, daran kann es nicht liegen da auf meinem Windows-System genau das gleiche auftritt.

6. Linux... nein, Unix... aber noch nicht im syslog nachgesehen...
Mit Zitat antworten
  #6 (permalink)  
Alt 28-08-2007, 17: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

Zitat:
Original geschrieben von jizza
2. Bei mir habe ich lediglich den Error Log aktiviert... der hat leider keine Einträge diesbezüglich. Macht es Sinn die Allgemeine Anfragen Logdatei zu aktivieren? Der Binär Log und Log für langsame Abfragen sind hier denke ich nicht hilfreich, oder?
Ich hab zwar keine Ahnung was du meinst, aber ja XD

Bin-Log ist idT ziemlich sinnlos (auch wenn man da mal gucken könnte, ob die Queries bis dahin kommen)
Slow-Query-Log ist eigentlich auch sinnlos, andererseits lässt sich vielleicht eine Gemeinsamkeit zwischen langsamen Queries und fehlenden Datensätzen herstellen...

Da ich sonst gerade keine Idee hab würd ich mal alles mitloggen was geht und gucken, ob man irgendwelche Zusammenhänge findet
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:07 Uhr.