phpbar.de logo

Mailinglisten-Archive

datenbank-design ändern
Archiv Mailingliste mysql-de

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

datenbank-design ändern



hallo listenmitglieder,

wir haben momentan ein nicht ganz triviales problem: in unserer community
sind benutzer in virtuellen parteien organisiert und geben ihre stimmen bei
umfragen ab. zu jeder umfrage gibt es mehrere antworten. wir möchten
darstellen, wieviele personen aus einer partei sich eine bestimmte antwort
ausgesucht haben und ausserdem jede einzelne stimmabgabe eines benutzers
abhalten.

in unserer db existieren dafür folgende tabellen:

1. "benutzer" => id, partei_id (> 4.000 einträge)

2. "antworten" => id, frage_id, text (> 30.000 einträge)

3. "stimm_abgaben" => antwort_id, benutzer_id (> 300.000 einträge)

das system ging solange gut, wie es wenige antworten und wenige stimmabgaben
gab. mittlerweile frisst mysql aber bei nur einem user der online ist und
eine unserer ergebnisseiten abruft 100% cpu-zeit.

das kommt folgendermaßen:

wir zeigen auf einer seite 5 umfragen mit bis zu 10 antworten an. zu jeder
antwort gibt es beispielsweise 10 stimmabgaben von verschiedenen nutzern.

um eine solche seite anzuzeigen sind nun:
	5 * 10 * 10 = 500 sql-queries über die nun nicht mehr so kleinen tabellen
nötig.

um die anzahl der queries zu reduzieren möchten wir nun die anworten-tabelle
erweitern zu folgender tabelle:

"antwort_neu" => id, frage_id, text, stimmen_partei1, stimmen_partei2,
stimmen_partei3, ...

"stimmen_parteiX" speichert die anzahl der stimmen, die mitglieder der
partei X für diese antwort abgegeben haben. dadurch sollten sich dann unsere
performance-probleme auf einen schlag lösen.

ABER: wir haben keinen plan, wie wir die tabellen zu einer einzigen
vereinigen können. jedes php-skript wird abgebrochen, weil es zu lange
dauert 30.000 antworten durchzugehen und die neuen felder "stimmen_parteiX"
zu füllen. mal abgesehen davon, dass es weit mehr als 30.000 einzelne
queries benötigt und wir den server für stunden vom netz nehmen müssten....

hat jemand eine idee oder eine vorstellung davon, wie man eine umstellung
bei solch einer grossen datenbank hinbekommt? es ist ziemlich dramatisch im
moment, da wir die ergebnis-anzeige komplett abschalten mussten, um die site
am laufen zu halten :-(

wir danken für jeden hinweis,
viele grüsse aus aachen,

oliver + arash



---
*** Abmelden von dieser Mailingliste funktioniert per E-Mail
*** an mysql-de-request_(at)_lists.4t2.com mit Betreff/Subject: unsubscribe


Home | Main Index | Thread Index

php::bar PHP Wiki   -   Listenarchive