Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

gelöst MySQL DB Geschwindigkeit erhöhen

Mitglied: ThermoTubbie

ThermoTubbie (Level 1) - Jetzt verbinden

16.09.2006, aktualisiert 20.09.2006, 6016 Aufrufe, 9 Kommentare

Hi,
ich bin auf der Suche nach Möglichkeiten um meine MySQL DB noch bisschen Feuer unterm Hintern zu machen^^

Vor einiger Zeit hat mir hier jemand den rat gebene Inizes zu setzen um so schneller Zugriffe zu erreichen.
Hab ich soweit gemacht. Nur dazu habe ich auch eine Frage. Gibt es einen Unterschied wenn ich einen Index über gleich alle Spalten einer Tabelle setze oder wenn ich für jede Spallte einen eigenen anlege? Weil irgendwie kann ich auch alle Spallten in einen Index packen und gleichzeitig noch andere Indizes anlegen... Daher HÖÖÖ???

Gibt es noch andere Möglichkeiten die ich über PHPMyAdmin machen kann (hab leider nur diesen Zugriff)

Hoffe ihr könnt mir da weiterhelfen
mfg
Martin
Mitglied: thekingofqueens
16.09.2006 um 20:05 Uhr
Wo läuft denn MySQL? In nem Shared Hosting Account? Einem vServer? Root Server? Lokal? Linux? Windows?
Bitte warten ..
Mitglied: ThermoTubbie
17.09.2006 um 00:30 Uhr
öhm ja
ist linux und hab selber nur eine DB und auf die Zugriff per phpMyAdmin, hab den Kram von einem bekommen dem den ganzen root server gehört.

hoffe das hilft weiter
Bitte warten ..
Mitglied: Supaman
17.09.2006 um 11:54 Uhr
1a) mehr ram
1b) schnellere cpu

2) falls das nicht reicht schritt 1 wiederholen
Bitte warten ..
Mitglied: ThermoTubbie
17.09.2006 um 16:59 Uhr
Hi,
hmm also ich hab zwar kp von DB "optimierung" nur die Geschwindigkeit durch verschnellerung der Hardware zu erreichen finde ich etwas komisch... Also nicht das es nicht geht!
Nur irgendwie blinkt in meinem Innerren so ne kleine Lampe^^ weil normalerweise kann man Software alleine schon tunen und braucht, um das gesamte System zu verschnellern, nicht gleich neu Hardware einzusetzen. Daher will ich erstmal die reinen DB & PHP Möglichkeiten ausschöpfen.

Außerdem kommt ändern der Hardware eh nicht infrage, weil es sich um eine private Website handelt (www.diabolotreff.de) und das dort bisschen übertrieben wäre.

Kennt jemand andere Möglichkeiten auch Vorschläge die ich im Code selber beachten kann? (so allgemeine Sachen um schnelleren Zugriff zu bekommen) Hab schon gelesen Sockets oder persitente Verbindungen ehöhen die Zugrifsgeschwindigkeit auch, aber gibt da doch sicher mehr.

Hoffe ihr könnt mir da weiterhelfen ;)
mfg
Martin
Bitte warten ..
Mitglied: Biber
20.09.2006 um 10:33 Uhr
Moin ThermoTubbie,
Vor einiger Zeit hat mir hier jemand den rat gebene Inizes zu setzen
um so schneller Zugriffe zu erreichen.
Bis dahin war der Rat gut.
Hab ich soweit gemacht. Nur dazu habe ich auch eine Frage.
Gibt es einen Unterschied wenn ich einen Index über gleich alle Spalten einer Tabelle setze
oder wenn ich für jede Spallte einen eigenen anlege?

Ja. Gibt es.
Variante A ("einen Index über gleich alle Spalten einer Tabelle") ist Bullshit.
Variante B ("für jede Spallte einen eigenen anlege") nur bedingt besser.

Ein Index soll der Datenbankengine ja die (intern vorprogrammierte) "Entscheidung" erleichtern, ob bei einem bestimmten SQL-Statement ein Full Table Scan erfolgen muss oder über einen Suchalgorithmus (i.d.R. B*-Baum oder auch andere Verfahren) ein selektiver Zugriff auf die "richtigen" Datensätze erfolgen kann.

Das hochtönende neudeutsche Full Table Scan heißt nichts anderes, als das jeder gottverdammte Satz in dieser Tabelle einmal in die virtuelle Hand genommen (gelesen und geprüft) wird.
Ist logischerweise langsamer, als wenn nur 5% der Sätze über einen B*-Baum überhaupt gelesen werden müssen.

Macht natürlich nur Sinn, wenn der Index kleiner ist als die Gesamt-"Breite" der Tabellenfelder (Ausnahme: reine Schlüssel-Dateien ohne jegliche Attribute).
Ein Index über eine ganze data row, den ganzen Datensatz ist Dönekens.
Wenn ALLE Felder "im Index sind" ist jede Suche über den Index "gleich teuer" wie ein Full Table Scan und die Datenbankengine wird den Index gar nicht erst benutzen.

Beispiel: Eine Kundentabelle mit
Kundennummer, kundenname, plz, ort, strasse, tel, fax, ansprechpartner, email

-> Absolutes Muss ist ja ein Unique-Index auf den PK (Kundennummer)
-> Sinn könnte machen je ein Index auf "kundenname" und "Plz"
[ Weil sicherlich SQL-Queries kommen werden mit "WHERE Kundenname Like 'Biber%'" oder "WHERE PLZ LIKE '28%'" ]

--> wenig Sinn machen Indices auf "Tel" oder "Fax" ... wer wollte denn einen Kunden ermitteln wollen, von dem er nur die ersten 4 Ziffern der Faxnummer in Erinnerung hat?

Gruß
Biber
Bitte warten ..
Mitglied: ThermoTubbie
20.09.2006 um 11:56 Uhr
AHHH
vielen Dank Biber, du hast mir sehr weitergeholfen !!! hab schon rumgegoogelt aber so eine klare Erklärung nicht gefunden

Ich hoffe du kannst mir auch bei paar Verständnissfragen weiterhelfen.

Also ich habe eine Tabelle wo unter anderem url, linkname,status(Fremdschlüssel) und auch kategorie(Fremdschlüssel) drin gespeichert ist. Bei einem klick auf den Link "Händler" wird dan ein sql befehl losgelassen, der nach den entsprechenden Datensätzen sucht, wo die Kategory stimmt und der Status nicht offline /fehlerhaft oder so ist. Also müsste ich dafür einen Index über "Kategorie" und "Status" legen. Stimmt das?

Und dann bei der Sortierfunktion für die einzelnen Kategorien, die als Bedinung entweder nach Kategory und Datum oder Kategory und Linkname(ASC&DESC) sucht und auf die selbe Tabelle wie oben zugreift. Müsste ich dafür 2 weitere Indizes anlegen ? Also für Kategory&Datum und Kategory&Linkname?
Also für jede Möglicheform eines in der Anwendung vorkommenden SQL Befehls jeweils ein Index oder gibt's Chaos wenn ich zuviele habe?

Bin schon auf Antworten gespannt.
mfg
Martin
Bitte warten ..
Mitglied: Biber
20.09.2006 um 12:54 Uhr
Also, ThermoTubbie,

Also ich habe eine Tabelle wo unter anderem
url, linkname,status(Fremdschlüssel) und auch kategorie(Fremdschlüssel) drin gespeichert ist.
Bei einem klick auf den Link "Händler" wird dan ein sql befehl losgelassen,
der nach den entsprechenden Datensätzen sucht, wo die Kategory stimmt
und der Status nicht offline /fehlerhaft oder so ist.
Also müsste ich dafür einen Index über "Kategorie" und "Status" legen. Stimmt das?

Im Prinzip ja. Auch hierbei hilft der gesunde Menschenverstand bei der Entscheidung.
Ein Index über x Datensätze kann nur etwas bringen, wenn dadurch die Gesamtzahl der Sätze halbwegs gleichverteilt wird.
Beispiel: Ein Index auf den Kundennamen "verteilt" oder "sortiert" vereinfacht ausgedrückt alle Datensätze in Schubladen von "A" bis "Z".
Letztenendes werden aber dann nicht 26 gleich gefüllte Teilbäume herauskommen... die Buchstaben "X", "Y" und "Q" werden wenig Einträge haben..die Buchstaben "S", "T" und "C" wesentlich mehr.
Dennoch kann man/frau darauf vertrauen, selbst wenn ein Eintrag gesucht wird, der mit "S" beginnt->dieses Kriterium erfüllen schlimmstenfalls 20% aller Sätze.
Ergo: 80% der Sätze müssen nicht gelesen werden. Mit "Sch" sind nur noch 5% der Sätze relevant-->effizienter Index.

Ineffizienter Index (den Du weglassen kannst): Ein Statusfeld, in dem nur "J" oder "N" steht oder ein Feld "Status" oder "Kategorie", in dem 80% aller Sätze einen Wert haben.
Ein Index auf solche Felder wird nur dann von der Datenbankengine genutzt, wenn er Erfolg versprechender ist als ein Full Table Scan... bei J/N-Feldern wird das nie der Fall sein.


Und dann bei der Sortierfunktion für die einzelnen Kategorien,
die als Bedinung entweder nach Kategory und Datum oder Kategory und Linkname(ASC&DESC) sucht
und auf die selbe Tabelle wie oben zugreift. Müsste ich dafür 2 weitere Indizes anlegen ?
Also für Kategory&Datum und Kategory&Linkname?

Wenn Du das oben geschriebene weiterdenkst: Jein.
Schon diesen "Index-auf-zwei-Felder".
Aber nicht Kategory&Datum bzw. Kategory&Linkname.
Sondern Datum&Kategory und Linkname&Kategorie.
Um eine Ausgewogenheit, ein Balance des Indexbaums zu gewährleisten.
Bei "Datum" und "Linkname" kannst Du eine Gleichverteilung erwarten. Nicht bei "Kategory" und "Status".

Also für jede Möglicheform eines in der Anwendung vorkommenden SQL Befehls jeweils ein Index
Sieh das nicht zu dogmatisch. Wer ganz abwegige Anfragen stellt (das Beispiel von oben: "Ich weiß noch vier Ziffern von der Faxnummer des Händlers"), dem musst Du keinen Index spendieren.

oder gibt's Chaos wenn ich zuviele habe?
Chaos nicht, aber Indices verbrauchen Speicherplatz, müssen reorganisiert und verwaltet werden, beanspruchen eben auch einen Teil der von Dir bezahlten Gesamtressourcen.

HTH
Biber
Bitte warten ..
Mitglied: ThermoTubbie
20.09.2006 um 13:19 Uhr
Hi Biber,
danke das Hilft sehr ;) Denk mal nun hab ich's kapiert. Ich werde, wenn ich bisschen Zeit habe, mal rumtesten und schauen wie die Geschwindigkeit sich verändert.

mfg
Martin
Bitte warten ..
Mitglied: Biber
20.09.2006 um 14:39 Uhr
Okay, Martin,
dann setz bitte den Beitrag erstmal auf "Gelöst".
Im Moment haben wir viel zu viele offene Threads.

Danke
Biber
Bitte warten ..
Ähnliche Inhalte
Exchange Server
Exchange 2010 DAG DB Limit erhöhen
Frage von CorrbenExchange Server5 Kommentare

Hallo zusammen, wir haben eine Exchange 2010 DAG mit 2 Datenbank Servern. Eine Datenbank ist nun bei 1TB Größe ...

Datenbanken

Schnelle Entwicklung für eine PHP, MySQL-DB?

gelöst Frage von 1410640014Datenbanken2 Kommentare

Hallo, würde mir gerne ein paar Anregungen holen, ob es für PHP und MySQL so ne Art Formular- / ...

Datenbanken

MySQL Slave DB größer als die vom Master

Frage von ckedingDatenbanken

Hallo miteinander, ich habe derzeit ein Problem welches ich nicht nachvollziehen kann. Ich habe einen MySQL Master und einen ...

Verschlüsselung & Zertifikate

Zugriff auf mySQL-DB mit ODBC und SSL

Frage von Titan24Verschlüsselung & Zertifikate2 Kommentare

Ich möchte für einen Kunden sicher Daten von einer mySQL-DB via ODBC nur lesend abgreifen können. Da die Daten ...

Neue Wissensbeiträge
Peripheriegeräte
Unterschrank für HP Drucker
Tipp von NixVerstehen vor 1 TagPeripheriegeräte1 Kommentar

Als kurzen Freitags-Tipp möchte ich gerne meinen neuen Drucker-Unterschrank Modell Amica KS 15423W vorstellen. Das Gerät eignet sich hervorragend ...

Windows 10
Windows 10 - Probleme mit Point-And-Print
Tipp von emeriks vor 2 TagenWindows 103 Kommentare

Hi, wir kämpfen z.Z. mit einigen Druckertreibern, welche unter Win10 beim Verbinden eines Druckers von Printserver mit dem Dialog ...

Windows 10

Windows 10 1803 - Ihr Roamingbenutzerprofil wurde nicht vollständig synchronisiert

Anleitung von Deepsys vor 2 TagenWindows 101 Kommentar

Bei allen Windows 10 1803 PCs traten Probleme mit den Servergespeicherten Profilen auf. Das Abmelden dauerte sehr lange und ...

Exchange Server
Exchange - Fehler mit 2018-07 Sicherheitsupdate
Tipp von ArnoNymous vor 4 TagenExchange Server7 Kommentare

Hallo, es gibt mal wieder Freude mit den MS-Updates. KB4338814 führt dazu, dass der Exchange keine Mails mehr zustellt. ...

Heiß diskutierte Inhalte
Humor (lol)
Freitagsfrage: Was tun, wenn der Admin der DAU ist?
gelöst Frage von VoiperHumor (lol)32 Kommentare

Moin Zusammen, Eine nicht ganz ernst gemeinte Frage an die Außendienstler unter uns. Zusammenfassung: Ein Inhouse Admin ruft bei ...

Windows Netzwerk
LTE Modul - Kein Internet trotz Verbindung
Frage von killtecWindows Netzwerk19 Kommentare

Hallo, ich habe hier ein Dell 7390 2-in-1 mit W10 Pro wo ich nachträglich eine LTE-Karte (Original Dell DW5811e ...

LAN, WAN, Wireless
HP Probook 470 G4 - abbrechende Downloads
Frage von joern1LAN, WAN, Wireless19 Kommentare

Folgendes Problem, für einen Tipp wäre ich dankbar: Bei WLAN-Verbindung zum Internet (nicht LAN) kommt es bei etwas größeren ...

Router & Routing
Routing Problem mit Kaskade FritzBox und pfsense zugeriff nur von der firewall auf die clients und 0.0.0.0
Frage von ukl1967Router & Routing18 Kommentare

Hallo, ich habe ein an sich triviales Problem elches ich allerdings nicht gelöst bekomme. NAS 10.5.10.53 Mein Netz baut ...