WebWork Magazin - Webseiten erstellen lassen, Online Medien, html

Webhoster, Webhosting Provider und Domain registrieren

Home | Registrieren | Einloggen | Suchen | Aktuelles | GSL-Webservice | Suleitec Webhosting
Reparatur-Forum | Elektro forum | Ersatzteilshop Haushalt und Elektronik



Im Homepage und Webhosting-Forum --- Indizes & Cache von MySQL

Scripte und Programme für PHP, MYSQL. Diskussionen zur Programmierung im Web. Fragen zu CMS, Blogsoftware, Shops, Newsletter und vielen weiteren Scripten.

Forum » PHP & MySQL » Indizes & Cache von MySQL - 21 Nov 2024 Antworten
im Forum für Webhosting Homepage gefunden:
Indizes & Cache von MySQL
Bastian_W
Otto-Normal-Poster
Threadstarter




Beiträge: 85

Wie stelle ich am besten die Indizes ein? Laut der Referenz hier:

http://www.mysql.com/doc/en/Optimising_Database_Structure.html <--- Englisch
http://www.mysql.com/doc/de/Optimising_Database_Structure.html <----Deutsch

ist das eine Art Cache... ich habe bis jetzt immer alles in die Indizes aufgenommen, was sich eher selten ändert, und was ich für die "where XY" und "order by Z" Teil von dem "mysql_query" Befehl benötige... allerdings weiß ich nicht, ob das richtig ist, oder ob das Leistungseinbußen bringt. Habe mal gelesen, dass das Indexieren auf möglichst kleine Zeilen beschränkt werden sollte

Edit: Schreibfehler im Link behoben

---
Bastian_W
------
Real programmers don't comment their code. It was hard to write, so it should be hard to read.

Diese Nachricht wurde geändert von: Bastian_W
  Profil   Editieren   Zitieren
NetDrag
Foren-Team




Beiträge: 442

Indize sind das um und auf in einer Datenbank. Es ist so eine Art eigene Liste die auf Tupel d.h. Zeilen in einer Tabelle zeigt.

Der Inex wird bei einem Insert oder Update neu erstellt.
Wenn sich nicht alle 0,2 Sekunden was ändert oder die Datenbank nicht mehrere 100 MB groß ist dann hast du kein Problem wenn du einen index über was legst das sich ändert.

Vermieden sollten Datentypen werden die recht groß sind, wie blob, text oder eventuell auch ein großer varchar. Integer gehen normalerweise in ordnung da sie ziemlich leicht verglichen werden können. Aber das ist wirklich nur wichtig wenn du extrem auf Performance schaust und das wirkt asich bei einer kleinen Datenbank nicht stark aus.

Dann kommts natürlich auch drauf an ob du einen index über eine einzelne Spalte oder über mehrere Spalten anlegst.

Wie groß ist eigentlich die Datenbank und was für datentypen verwendest du?

---
We are born wet, naked and hungry, then things got worse!

  Profil   Website   Editieren   Zitieren
Bastian_W
Otto-Normal-Poster
Threadstarter




Beiträge: 85

Hi, Danke schonmal für die Erklärung.

Meine Frage ziehlt auf einen Bereich hin, wo User einen Link eintragen verschicken und bewerten können. Wenn der Eintrag einmal drinn ist, ändert der sich nicht mehr. Was sich ändert währe die Bewertung. Die lasse ich dann nach deiner Erklärung auch mal aus dem Index raus.

Ich nutze den Typ: MyISAM

zur Zeit ist die Datenbank 9,7MB groß... wächst aber stetig an, wenn man bedenkt, das die erst 1 Monat alt ist und schon 9,7MB fasst (Allerdings nicht alleine dieses Link System *g*).

Wenn ich richtig verstanden habe zählt zu den Dingen die man NICHT in den Index packen sollte auch: FULLTEXT, allerdings ändert sich dieser Text nicht, da es die Beschreibung für den Link den ich oben angesprochen habe ist.

Kann man die Performance einer MySql Datenbank irgendwie anzeigen oder ausgeben lassen? Damit ich prüfen könnte welche Einstellungen am sinvollsten sind? Und was ist der Unterschied zwischen einem Index über eine oder mehrere Spalten?

---
Bastian_W
------
Real programmers don't comment their code. It was hard to write, so it should be hard to read.

  Profil   Editieren   Zitieren
NetDrag
Foren-Team




Beiträge: 442

Also index über Fulltext hat keinen Sinn. Du muß dir das so vorstellen:

Eine Datenbank ist ja nichts anderes als ein Programm das in einer Datei mit einem genauen Schema nach einträgen sucht. Also
Column ID | Column Name | Column Beschreibung
1 | Name1 | Eine ziemlich lange Beschreibung zu diesem Link
2 | Name2 | Eine sehr sehr Lange Beschreibung zu Link 2
usw.

Da das DatenbankSystem ja nicht weiß wo genau die 2 Zeile anfängt, muß es erst Zeile 1, durchgehen bis es weiß wo Zeile 2 anfängt. Vereinfacht ist der Index eine Liste die dem DBMS genau sagt wo der 2. Eintrag liegt. So geht der Zugrifff ziemlich schneller.

1 | Position 1
2 | Position 2

Wenn jetzt in Index auch noch ein langer Text steht macht der Index ja keinen Sinn mehr da dann der Index gleich lang wird wie dir Tabelle

---
We are born wet, naked and hungry, then things got worse!

  Profil   Website   Editieren   Zitieren
Bastian_W
Otto-Normal-Poster
Threadstarter




Beiträge: 85

Ok... habe ich mitlerweile gut verstanden... nur was ist der

Query-Cache???

Wie stelle ich den ein bzw. benutze den?

---
Bastian_W
------
Real programmers don't comment their code. It was hard to write, so it should be hard to read.

  Profil   Editieren   Zitieren
toc22
Pixelschubser




Beiträge: 1

Der Q-Cache ist ab Version 4 von MYSQL enthalten.
In dem Q-Cache werden Querys und deren Ergebnismengen gespeichert. Wenn das gleiche Statement mehrmals benutzt wird und die betroffenen Datensätze sich nicht verändert haben, wird das Ergebnis aus dem Cache geliefert. Bei einem kleinen Cache kann es allerdings sehr schnell vorkommen, dass ältere Statements überschrieben werden.
In Szenarien, in denen häufig auf Bestandsdaten zugegriffen wird, kann dieser Cache enmorme Geschwindigkeitssteigerungen bewirken. Besonders bei komplexen Statements kann der Q-C sehr wirkungsvoll sein, da das zeitaufwendige Parsen der Statements entfällt. Bei Bewegungsdaten, dürften die Geschwindigkeitssteigerungen ehere gering sein.

Man kann die Effiezienz des Q-C. in einer speziellen Situatuion sehr leicht bewerten:

show status;


Aktiviert wird der Q-Cache wie folgt:
unter Linux in /etc/my.cnf
[mysqld]
...
query_cache_size=500K
...

Hier gibt es eine sehr gute Doku zum Q-C:
http://www.mysql.com/doc/en/Query_Cache.html

  Profil   E-Mail   Editieren   Zitieren
Bastian_W
Otto-Normal-Poster
Threadstarter




Beiträge: 85

hi...

meine Frage ziehlte mehr daraufhin ob ich einen zustäzlichen Befehl in meinem PHP Programm einbauen muß?


Wie frage ich den den Status ab?
Per PHP???

---
Bastian_W
------
Real programmers don't comment their code. It was hard to write, so it should be hard to read.

  Profil   Editieren   Zitieren
NetDrag
Foren-Team




Beiträge: 442

ne, is datenbank intern, sql und php haben gar nichts damit zu tun.

planen mußt du ihn schon, d.h die größe sodaß oft benötigte abfragen im cache bleiben, auch wenn neue querys dazu kommen.

Nur bringt dir der cache wahrscheinlich nichts, weil bei einer gut geplanten datenbank wirkt er erst wenn die datenbank etwas größer ist, was bei webapplikationen selten der fall ist.

gib mal eine deiner sql abfragen im commandline client von mysql ein, dann siehst du ja wie lange die abfrage dauert. der query-cache liegt meist bei 0,2 sekunden.

---
We are born wet, naked and hungry, then things got worse!

  Profil   Website   Editieren   Zitieren
 

Antworten
Forum » PHP & MySQL » Indizes & Cache von MySQL

Aktuelle Beiträge zur Hilfe im Forum für Homepage - Indizes & Cache von MySQL im Forum Homepage Hosting AntwortenLetztes Posting
Cybersicherheit für Unternehmen
in "PHP & MySQL"
3 18.11.2024 14:05 von Gaswer
Wirtschaftslage in der Ukraine
in "PHP & MySQL"
3 22.10.2024 15:04 von Gaswer
Rangliste (Ohne Mysql) (Kompliziertes Ordner System)
in "PHP & MySQL"
3 19.07.2021 06:00 von newtopblog
kleines problem mit phpadmin
in "PHP & MySQL"
5 11.04.2021 22:22 von Zavylon
Counter mit PHP
in "PHP & MySQL"
4 22.03.2021 16:29 von Robeni
Fehlermeldung beim Importieren der Datenbank in phpmyadmin
in "PHP & MySQL"
0 02.08.2019 22:14 von iFuchs
CMS für Online Shop
in "PHP & MySQL"
18 26.05.2019 13:29 von raiserle
Regestrierungproblem
in "PHP & MySQL"
3 28.11.2018 13:20 von norbertofahey
PHP Datum ausgeben?
in "PHP & MySQL"
1 19.10.2018 10:04 von Klaus1973
PHP befehl ausführen
in "PHP & MySQL"
11 16.08.2018 09:08 von Klaus1973
Visual Composer selber programmieren?
in "PHP & MySQL"
0 22.01.2017 23:45 von Redji



Besucher : 8126520    Heute : 438     Gestern : 463     Online : 173     21.11.2024    14:07      0 Besucher in den letzten 60 Sekunden        
Nach oben