9 Stimmen

MySQL-Interview-Fragen

Ich wurde gebeten, einige Kandidaten für eine MySQL-DBA-/Entwickler-Position zu prüfen, die Fähigkeiten auf Unternehmensniveau erfordert.

Ich selbst bin ein SQL Server Person, so dass ich weiß, was ich aus dieser Sicht in Bezug auf Skalierbarkeit / Design usw. suchen würde, aber gibt es etwas Spezifisches, das ich in Bezug auf MySQL fragen sollte?

Im Idealfall würde ich sie gerne nach den Funktionen von MySQL auf Unternehmensebene fragen, die sie normalerweise nur bei der Arbeit an einer großen Datenbank verwenden würden. Ich muss die Unternehmensentwickler von den Entwicklern für Privatanwender und kleine Websites trennen.

Gracias.

39voto

giltotherescue Punkte 768

Obwohl SQL Server und MySQL beide RDBMs sind, hat MySQL viele einzigartige Eigenschaften, die den Unterschied zwischen Anfänger und Experte verdeutlichen können.

Der erste Schritt sollte sein, sicherzustellen, dass der Kandidat mit der Kommandozeile vertraut ist und nicht nur mit GUI-Tools wie phpMyAdmin. Bitten Sie den Bewerber im Vorstellungsgespräch, MySQL-Code zu schreiben, um eine Datenbanktabelle zu erstellen oder einen neuen Index hinzuzufügen. Dies sind sehr einfache Abfragen, aber genau die Art, die Anfänger mit GUI-Tools nicht beherrschen. Sie können die Antworten von jemandem überprüfen lassen, der mit MySQL besser vertraut ist.

Kann der Kandidat nachweisen, dass er weiß, wie JOINs funktionieren? Fordern Sie den Kandidaten beispielsweise auf, eine Abfrage zu konstruieren, die alle Zeilen aus Tabelle Eins zurückgibt, für die es in Tabelle Zwei keine passenden Einträge gibt. Die Antwort sollte einen LEFT JOIN beinhalten.

Bitten Sie den Kandidaten, über die Sicherungsstrategien und die verschiedenen Stärken und Schwächen der einzelnen Strategien zu sprechen. Der Kandidat sollte wissen, dass die direkte Sicherung der Datenbankdateien keine effektive Strategie ist, es sei denn, alle Tabellen sind MyISAM. Der Kandidat sollte auf jeden Fall mysqldump als Eckpfeiler für Backups erwähnen. Zu den anspruchsvolleren Sicherungslösungen gehören ibbackup/innobackup und LVM-Snapshots. Idealerweise sollte der Kandidat auch erörtern, wie Backups die Leistung beeinträchtigen können (eine gängige Lösung ist die Verwendung eines Slave-Servers für die Durchführung von Backups).

Hat der Bewerber Erfahrung mit der Replikation? Welche gängigen Replikationskonfigurationen gibt es und welche Vorteile bieten sie jeweils? Die gebräuchlichste Konfiguration ist Master-Slave, bei der die Anwendung SELECT-Abfragen auf Slave-Server verlagert und gleichzeitig Backups auf einem Slave-Server erstellt, um Leistungsprobleme auf dem Master-Server zu vermeiden. Ein weiteres gängiges Setup ist Master-Master, wobei der Hauptvorteil in der Möglichkeit besteht, Schemaänderungen ohne Leistungseinbußen vorzunehmen. Achten Sie darauf, dass der Kandidat gängige Probleme wie das Klonen eines Slave-Servers bespricht ( mysqldump + Notation der binlog-Position ), Lastverteilung mit Hilfe eines Load Balancers oder MySQL-Proxys, Behebung des Slave-Lags durch Aufteilung größerer Abfragen in Teilstücke und wie man einen Slave zum neuen Master befördert.

Wie würde der Kandidat Probleme mit der Leistung beheben? Verfügt er über ausreichende Kenntnisse des zugrundeliegenden Betriebssystems und der Hardware, um zu diagnostizieren, ob ein Engpass auf die CPU, die IO oder das Netzwerk zurückzuführen ist? Kann er demonstrieren, wie man EXPLAIN um Indizierungsprobleme zu entdecken? Erwähnen sie das langsame Abfrageprotokoll oder Konfigurationsoptionen wie den Schlüsselpuffer, die Größe der tmp-Tabelle, die Größe des innodb-Pufferpools usw.?

Kennt der Kandidat die Feinheiten der einzelnen Speicher-Engines (MyISAM, InnoDB und MEMORY sind die wichtigsten). Verstehen sie, wie jede Speicher-Engine Abfragen optimiert und wie Sperren gehandhabt werden? Zumindest sollte der Kandidat erwähnen, dass MyISAM eine Sperrung auf Tabellenebene vornimmt, während InnODB eine Sperrung auf Zeilenebene verwendet.

Was ist der sicherste Weg, um Schemaänderungen an einer aktiven Datenbank vorzunehmen? Der Kandidat sollte die Master-Master-Replikation erwähnen sowie die Vermeidung der Sperr- und Leistungsprobleme von ALTER TABLE, indem er eine neue Tabelle mit der gewünschten Konfiguration erstellt und mysqldump oder INSERT INTO ... SELECT gefolgt von RENAME TABLE.

Und schließlich ist das einzig wahre Maß für einen Profi die Erfahrung. Wenn ein Bewerber keine konkreten Erfahrungen mit der Verwaltung großer Datenmengen in einer Hochverfügbarkeitsumgebung vorweisen kann, ist er möglicherweise nicht in der Lage, sein Wissen auf rein intellektueller Ebene zu untermauern.

6voto

Dave Cheney Punkte 5365

Ich würde mich nach den Unterschieden zwischen den verschiedenen Speichersystemen und ihren Vor- und Nachteilen erkundigen.

Behandeln Sie auf jeden Fall die Replikation und gehen Sie auf die Nachteile der Replikation ein, vor allem bei der Verwendung von Tabellen mit automatisch inkrementierenden Schlüsseln.

Wenn sie noch bei Ihnen sind, fragen Sie nach der Reproduktionsverzögerung, ihren Auswirkungen und den Standardmustern für ihre Überwachung.

1voto

Vinko Vrsalovic Punkte 252104

Ich denke, das hängt vom Datenbanktyp ab: transaktional oder Data Warehouse?

Jedenfalls würde ich bei allen Typen nach spezifischen MySQL-Replikations- und Clustering-, Performance-Tuning- und Monitorisierungskonzepten fragen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X