Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
Probleme mit der DB Größe [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr

- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
Probleme mit der DB Größe


 
Troublegum
15-07-2002, 12:27 
 
Hi Kollegen,


ich hab ne Songtextseite mit ca. 70.000 Songtexte, die Datenbank ist entsprechend groß: ca. 100 MB :eek: (MySQL).
Mein Provider meinte, ich müsste die Seite überarbeiten, da die Datenbank einfach zu groß sei, und ständig abschmiert.
Die Tabellenstruktur ist allerdings schon normalisiert, viel kann man da IMHO nicht mehr tun.

Den Großteil der Daten machen die reinen texte aus:
Die liegen in einer extra Tabelle namens texte mit den Feldern
textid (mediumint unsigned) und longtext

Der Index der Songtexte umfasst dagegen "nur" 7,8 MB.
und ist unterteilt auf 3 Tabellen:
#
# Tabellenstruktur für Tabelle `album`
#

CREATE TABLE album (
albumid mediumint(6) unsigned NOT NULL auto_increment,
artistid mediumint(6) unsigned NOT NULL default '0',
album varchar(60) NOT NULL default '',
PRIMARY KEY (albumid),
KEY album(album)
)
# --------------------------------------------------------

#
# Tabellenstruktur für Tabelle `artists`
#

CREATE TABLE artists (
artistid mediumint(8) unsigned NOT NULL auto_increment,
artist varchar(60) NOT NULL default '',
texte int(6) unsigned NOT NULL default '0',
PRIMARY KEY (artistid),
KEY artist(artist)
)
# --------------------------------------------------------

#
# Tabellenstruktur für Tabelle `lyrics`
#

CREATE TABLE lyrics (
id mediumint(11) unsigned NOT NULL auto_increment,
artistid mediumint(6) unsigned NOT NULL default '0',
albumid mediumint(6) NOT NULL default '0',
hits smallint(6) NOT NULL default '0',
titel varchar(60) NOT NULL default '',
status tinyint(1) NOT NULL default '0',
art tinyint(1) NOT NULL default '0',
akkorde tinyint(1) NOT NULL default '0',
timestamp int(20) unsigned NOT NULL default '0',
userid smallint(4) unsigned NOT NULL default '0',
unregname varchar(120) NOT NULL default '',
unregemail varchar(155) NOT NULL default '',
ip varchar(70) NOT NULL default '',
tofix tinyint(1) NOT NULL default '0',
deleted tinyint(1) NOT NULL default '0',
deltime int(16) NOT NULL default '0',
adminid int(11) NOT NULL default '0',
PRIMARY KEY (id),
KEY lyrics_1(titel),
KEY lyrics_2(artistid),
KEY deleted(deleted),
KEY akkorde(akkorde),
KEY art(art)
)


Kann man da noch so viel tun ?
Die Suchanfragen laufen mit LIKE am meisten über die Felder
titel und artist..





Mein Provider hat mir vorgeschlagen, die Texte in .txt Dateien zu speichern. Was haltet ihr davon ?

Da würde wohl ein Serverwechsel auch nicht soviel bringen, oder ?


MfG Troublegum

 
Berni
15-07-2002, 12:32 
 
100 MB sind nicht viel!

Warum machst du die Abfrage mit Like. Hast du es mal mit der VOLLTEXTSUCHE versucht. Ich denke das bringt einiges an performance.

gruß
berni

 
tj99de
15-07-2002, 12:33 
 
Hi!

Ich hätte auch vorgeschlagen die Text in txt-files auszulagern. Als Namen nimmst Du am einfachsten die ID des Songtextes.
In deinen Seiten kannst Du mit php dann einfach das txt-file includen und fertig.

An der DB sehe ich keine Möglichkeit noch Speicherplatz zu sparen.

cu tj99de

 
Troublegum
15-07-2002, 12:40 
 
Original geschrieben von Berni
Warum machst du die Abfrage mit Like. Hast du es mal mit der VOLLTEXTSUCHE versucht. Ich denke das bringt einiges an performance.

Du meinst die Volltextindex Funktionen von mySQL.
Ein solcher Index lässt sich nur auf Textfelder anwenden.
Nicht auf char oder varchar Felder.. ;)
Am häufigsten wird der Titel und der Interpretenname durchsucht.


@tj99.de: Meinst du wirklich, das ist ne gute idee ?
ich hab da so meine Bedenken..

 
tj99de
15-07-2002, 12:43 
 
Wieso hast Du da bedenken? Sollte doch eigentlich kein Problem sein, oder gibt es etwas, daß gegen txt-files spricht?

 
Berni
15-07-2002, 12:44 
 
naja dann macht das wohl wening sinn.

- -

Alle Zeitangaben in WEZ +2. Es ist jetzt 23:27 Uhr.