XAMPP 64Bit

Irgendwelche Probleme mit XAMPP für Windows? Dann ist hier genau der richtige Ort um nachzufragen.

XAMPP 64Bit

Postby PGB » 04. September 2010 12:12

Hey Apache Friends,

ich habe das Problem, dass wenn ich eine Datenbankabfrage mache nur ein Kern von meinen 4 vorhandenen Kerne genutzt wird.
Da die DB Abfrage schon wirklich recht "fett" ist dauert die Abfrage auch mal gute 4 Sec. In dieser Zeit hab ich 25% Auslastung meiner CPU.
Ich würde mich freuen wenn es eine Möglichkeit gäbe das alle 4 Kerne an einer Querry mit rechnen, sodass ich auf meine 100% Auslastung komme.

kurze Zusammenstellung der Beteiligten:
Windows 7 64 Bit
XAMPP 32 Bit
(Ich vermute das hier schon das Problem liegt allerdings hab ich keine XAMPP 64 Bit Version gefunden :( )
4 mal 3 GHz
DB mit 2500000 Einträgen und eine recht komplizierte Querry die eine Auswahl aus der DB machen soll

Hoffe ihr habt einen gute Rat wie ich die ganze Abfrage n bisschen schneller bekomme.

Lieben Gruß PGB
PGB
 
Posts: 1
Joined: 04. September 2010 12:01

Re: XAMPP 64Bit

Postby Nobbie » 04. September 2010 12:57

PGB wrote:XAMPP 32 Bit
(Ich vermute das hier schon das Problem liegt allerdings hab ich keine XAMPP 64 Bit Version gefunden :( )


Es gibt kein 64Bit Xampp, weil es keinen 64Bit Apache gibt und auch keinen 64Bit PHP Interpreter.

Es gibt allerdings MySQL als 64Bit Version, Du könntest es ja damit versuchen anstatt mit Xampp.

Allerdings hat 64Bit vs. 32Bit überhaupt nichts damit zu tun, ob ein Prozess auf eine oder mehrere CPUs aufgeteilt wird. Das ist eine Frage, wie das Programm compiliert wurde, ob es überhaupt in der Lage ist, aufgeteilt zu werden.

PGB wrote:DB mit 2500000 Einträgen und eine recht komplizierte Querry die eine Auswahl aus der DB machen soll

Hoffe ihr habt einen gute Rat wie ich die ganze Abfrage n bisschen schneller bekomme.


Ich denke, dass das Problem ist. Selbst wenn man den Prozess aufteilen könnte, wäre die Performance nicht unbedingt schneller. Dafür spricht auch die Tatsache, dass die CPU nur zu 25% ausgelastet ist - sie langweilt sich. Wahrscheinlich werden einfach sehr viele Daten benötigt, um den Query zu erfüllen, und I/O ist immer ein Bottleneck.

Das meiste Optimierungspotential steckt fast immer im Datendesign und Datenbankdesign. Dazu kann ich aber leider gar nichts sagen, weil wir es nicht kennen. Ein häufiger Fehler (den ich hier aber nicht vermute, weil die Zugrifsszeit dann wahrscheinlich noch dramatisch schlechter wäre) ist das Fehlen von Indexes, oder die ungeschickte Wahl von Indexes. Ein zweiter sehr verbreiteter Fehler ist das Erzeugen zu großer Fundstellen. Dazu ein simples Beispiel:

SELECT * FROM table Where ...

Hier werden alle Spalten selektiert, was bei großen Treffermengen eine sehr große Fundstelle bedeutet. Alle Daten, die die WHERE Bedingung erfüllen, werden in eine temporäre Tabelle geschrieben, die anschließen mit Fetch abgearbeitet werden kann. Stattdessen kann man in Scriptsprachen wie PHP auch so programmieren:

SELECT id FROM table WHERE ...

Wobei id der Primärschlüssel ist. Anschließend programmiert man einen Loop über die Fundstelle (wo nur Schlüssel drin stehen) und holt sich zu jedem Treffer den ganzen Datensatz:

SELECT * FROM Table WHERE id = ....

Und anschließend werden zu diesem SELECT die Daten (eine einzige Zeile) gefetched. Das resultiert zwar in sehr vielen SELECTs (nämlich pro Treffer jeweils einen weiteren SELECT), ist aber in der Performance um FAKTOREN(!) schneller als der erste SELECT, weil der eine riesige Fundstelle erzeugt, deren Aufbau enorm viele Ressourcen verbrät. Dennoch programmieren (leider) die meisten Anwender auf die erste Weise.

Letztendlich sei angemerkt, dass ich nur aus Faulheit "SELECT *" hier geschrieben habe - in echten Programmen hat ein "SELECT *" nichts verloren! Da gehören nur die Spaltennamen selektiert, die man wirklich braucht.
Nobbie
 
Posts: 13183
Joined: 09. March 2008 13:04


Return to XAMPP für Windows

Who is online

Users browsing this forum: No registered users and 42 guests