SELFPHP: Version 5.6.9 Befehlsreferenz - Tutorial – Kochbuch – Forum für PHP Einsteiger und professionelle Entwickler

SELFPHP


Professional CronJob-Service

Suche



iOS DevCon 2013



Software Architecture Summit 2013


Deine Leidenschaft ist die Unterwasserfoto-grafie?


Dann ist Qozido genau das Richtige für Dich!

Die Bilderverwaltung mit Logbuch für Taucher und Schnorchler ist da!

www.qozido.de

 

CronJob-Service    
bei SELFPHP mit ...



 + minütlichen Aufrufen
 + eigenem Crontab Eintrag
 + unbegrenzten CronJobs
 + Statistiken
 + Beispielaufrufen
 + Control-Bereich

Führen Sie mit den CronJobs von SELFPHP zeitgesteuert Programme auf Ihrem Server aus. Weitere Infos



:: Buchempfehlung ::

Websites optimieren für Google & Co.

Websites optimieren für Google & Co. zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 


Zurück   PHP Forum > SELFPHP > MySQL

MySQL Anfänger, Fortgeschrittene oder Experten können hier Fragen und Probleme rund um MySQL diskutieren

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 01.12.2007, 06:06:25
Fido123 Fido123 ist offline
Anfänger
 
Registriert seit: Dec 2007
Beiträge: 14
Fido123 befindet sich auf einem aufstrebenden Ast
Abfrage optimieren

Hallo Forum,

ich habe einige Zeit gegoogelt, jedoch keine passende Lösung gefunden...
Ich hoffe, das ihr mir helfen könnt, ein Update zu optimieren.

Leider wird in der Tabelle dauernd gelesen und geschrieben, jedoch verursachen die Updates bei mir 50% des gesamten Mysql-Traffics. Mysql 5; PHP 5

Syntax:

Bezeichnung: Tabelle Benutzer Datum Zahl
Indices: Primary Index Index Index

function zähleinenzu($benutzer) {
$today= date("m:d:y");
$query = "update benutzer set zahl=zahl+1 where benutzer=$benutzerid and date='today') limit1";
mysql_query($query);
if (mysql_affected_rows () == 0 mysql_query(insert zahl set benutzer=benutzerid, date='today', zahl=1");
}

Ich hoffe, ich habe das überschaubar dargestellt.

Bin dankbar für jede hilfe...

Fido
Mit Zitat antworten
  #2  
Alt 01.12.2007, 09:49:27
feuervogel feuervogel ist offline
Moderator
 
Registriert seit: Jan 2004
Ort: Leipzig
Beiträge: 4.550
feuervogel befindet sich auf einem aufstrebenden Ast
AW: Abfrage optimieren

was soll denn bitte an diesem statement noch verbessert werden? es ist ja nicht das problem, dass das statement so langsam ist, sondern dass es so oft aufgerufen wird...du solltest also lieber deine gesamte architektur überdenken...

falls das ganze ein zugriffs-counter sein soll: klaro, bei 1000 benutzern stündlich mit jeweils 100 zugriffen auf deiner seite muss der counter 100.000 mal aufgerufen werden - und wenn du jedesmal ein schreibendes sql-statement abschickst, ist das halt ein/der flaschenhals deiner applikation.

Geändert von feuervogel (01.12.2007 um 09:50:00 Uhr)
Mit Zitat antworten
  #3  
Alt 01.12.2007, 14:52:42
Fido123 Fido123 ist offline
Anfänger
 
Registriert seit: Dec 2007
Beiträge: 14
Fido123 befindet sich auf einem aufstrebenden Ast
AW: Abfrage optimieren

Hallo Feuervogel,

dank dir für die Antwort...
Die Architektur kann jetzt nicht ganz geändert werden - leider...

Das werde ich wohl in Zugunft in Angriff nehmen müssen.

Scheinbar scheint diese Anfrage aber sehr oft die nächste Zeile zu lesen...
Ram habe ich genug...

Würde ein order by date desc oder ähnliches nicht helfen..?

Vielleicht hast Du ja noch andere Denkanstösse...

Auf bald - Fido...
Mit Zitat antworten
  #4  
Alt 01.12.2007, 15:13:06
defabricator defabricator ist offline
Senior Member
 
Registriert seit: Sep 2007
Ort: Potsdam
Alter: 44
Beiträge: 1.013
defabricator befindet sich auf einem aufstrebenden Ast
AW: Abfrage optimieren

Wenn Deine Mysql Version aktuell genug und benutzerid ein unique key ist (zum Beispiel auto_increment primary key), hilft Dir INSERT ... ON DUPLICATE weiter.
http://dev.mysql.com/doc/refman/5.0/en/insert.html
__________________
Wat der Bauer nich kennt, dit frisster nich.

Geändert von defabricator (01.12.2007 um 15:13:29 Uhr)
Mit Zitat antworten
  #5  
Alt 01.12.2007, 15:16:48
Fido123 Fido123 ist offline
Anfänger
 
Registriert seit: Dec 2007
Beiträge: 14
Fido123 befindet sich auf einem aufstrebenden Ast
AW: Abfrage optimieren

MYSQL ist 5.0, BenutzerID ist unique und als Primary index definiert.
Die folgenden inserts sind aber sehr selten;
zu 99,999 % nur Update...

Gilt dann deine Aussage trotzdem
Mit Zitat antworten
  #6  
Alt 01.12.2007, 15:21:11
defabricator defabricator ist offline
Senior Member
 
Registriert seit: Sep 2007
Ort: Potsdam
Alter: 44
Beiträge: 1.013
defabricator befindet sich auf einem aufstrebenden Ast
AW: Abfrage optimieren

Ja.
Aber mal in die andere Richtung gedacht: wenn in 99.999999999999999% aller Fälle das UPDATE durchgeführt werden muss, warum führst Du im Moment zuerst das INSERT aus? Das ist doch dann wohl die unschlauste aller Vorgehensweisen, oder?
__________________
Wat der Bauer nich kennt, dit frisster nich.

Geändert von defabricator (01.12.2007 um 15:21:25 Uhr)
Mit Zitat antworten
  #7  
Alt 01.12.2007, 15:26:43
Fido123 Fido123 ist offline
Anfänger
 
Registriert seit: Dec 2007
Beiträge: 14
Fido123 befindet sich auf einem aufstrebenden Ast
AW: Abfrage optimieren

Wird im Moment zuerst das insert ausgeführt..?

Bin jemand, der über halbwissen verfügt... lach...
Ich lese das so, das sinngemäss:

- mach update von zahl xy von benutzer trallala wo tag ist heute wenn du eins gefunden hast dann ende
- wenn das nicht ist dann mach neue zeile mit zahl 1 bei benutzer trallala und tag heute
Mit Zitat antworten
  #8  
Alt 01.12.2007, 15:30:08
defabricator defabricator ist offline
Senior Member
 
Registriert seit: Sep 2007
Ort: Potsdam
Alter: 44
Beiträge: 1.013
defabricator befindet sich auf einem aufstrebenden Ast
AW: Abfrage optimieren

Ja stimmt.
__________________
Wat der Bauer nich kennt, dit frisster nich.
Mit Zitat antworten
  #9  
Alt 01.12.2007, 15:32:11
defabricator defabricator ist offline
Senior Member
 
Registriert seit: Sep 2007
Ort: Potsdam
Alter: 44
Beiträge: 1.013
defabricator befindet sich auf einem aufstrebenden Ast
AW: Abfrage optimieren

Du kannst eine stored prcedure auf dem Server einrichten, so dass Du nur noch zum Beispiel die Abfrage
$sql = 'call uU('.$benutzerId.')';
abschicken musst.
__________________
Wat der Bauer nich kennt, dit frisster nich.

Geändert von defabricator (01.12.2007 um 15:33:11 Uhr)
Mit Zitat antworten
  #10  
Alt 01.12.2007, 15:34:12
Fido123 Fido123 ist offline
Anfänger
 
Registriert seit: Dec 2007
Beiträge: 14
Fido123 befindet sich auf einem aufstrebenden Ast
AW: Abfrage optimieren

Da aber die Updates immer nur zeilen betreffen, datum=heute haben würde sich doch ein order by date desc anbieten - ober nicht..?
Oder muss der dann zuviel sortieren..?
Wie kann ich vermeiden, das so oft die nächste Zeile gelesen wird..?
Oder wird der Index nicht richtig genutzt, so das ich besser force index benutze um ihn dazu anzuhalten..?

Wie gesagt, genug ram habe ich... Kann sort_buffer ruhig genug mb zuweisen
Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen
Ansicht

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 aus.
[IMG] Code ist aus.
HTML-Code ist aus.

Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
SELECT Abfrage nur mit gefüllten Werten Skyman MySQL 0 24.10.2007 23:01:50
Alphabet Abfrage Daemonium PHP Grundlagen 7 28.09.2006 17:43:03
Performance bei Abfrage inner join Tikiwiki MySQL 7 21.02.2006 08:46:50
Abfrage klaus-maus MySQL 3 12.08.2005 11:19:55
Abfrage optimieren bazubi MySQL 4 24.11.2004 09:51:03


Alle Zeitangaben in WEZ +2. Es ist jetzt 18:18:40 Uhr.


Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2013, Jelsoft Enterprises Ltd.


© 2001-2013 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt