2008-09-15 91 views
9

我被要求篩選一些需要企業級技能的角色的MySQL DBA/Developer職位候選人。MySQL面試問題

我自己是一個SQL Server的人,所以我知道我會從這方面尋找可伸縮性/設計等方面的東西,但有什麼具體的問題,我應該問的MySQL?

我最好問他們關於MySQL的企業級功能,他們通常只在處理大型數據庫時才使用它。需要將企業開發人員從家庭/小型網站中分離出來。

謝謝。

+0

我寫了一些在這裏:http://www.alphadevx.com/a/468-Technical-screening-questions-for-a-MySQL-DBA – alphadevx 2015-02-10 12:20:38

回答

39

雖然SQL Server和MySQL都是RDBM,但MySQL有許多獨特的功能可以說明新手和專家之間的區別。

您的第一步應該是確保候選人使用命令行,而不僅僅是像phpMyAdmin這樣的GUI工具。在面試過程中,請嘗試讓求職者編寫MySQL代碼以創建數據庫表或添加新索引。這些都是非常基本的查詢,但是GUI工具確實可以防止新手掌握這些類型。您可以與更熟悉MySQL的人仔細檢查答案。

候選人能證明JOIN的工作原理嗎?例如,請嘗試讓候選人構造一個查詢,該查詢返回表1中的所有行,表2中沒有匹配的條目。答案應該包括一個LEFT JOIN。

要求候選人討論備份策略,以及各自的優缺點。應聘者應該知道直接備份數據庫文件不是有效的策略,除非所有的表都是MyISAM。候選人應該提到mysqldump作爲備份的基石。更復雜的備份解決方案包括ibbackup/innobackup和LVM快照。理想情況下,應聘者還應該討論備份如何影響性能(一種常見的解決方案是使用從服務器進行備份)。

候選人是否有複製經驗?什麼是一些常見的複製配置以及每種配置的各種優點?最常見的設置是主 - 從,允許應用程序將SELECT查詢卸載到從服務器,並使用從服備份以防止主服務器出現性能問題。另一個常見的設置是master-master,主要好處是能夠在不影響性能的情況下進行模式更改。確保候選人討論常見問題,例如克隆從服務器(mysqldump + notation of the binlog position),使用負載平衡器或MySQL代理加載分配,resolving slave lag將更大的查詢分解爲塊,以及如何提升從服務器成爲新主服務器。

候選人將如何解決性能問題?他們是否有足夠的底層操作系統和硬件知識來診斷瓶頸是CPU綁定,IO綁定還是網絡綁定?他們能否演示如何使用EXPLAIN來發現索引問題?他們是否提到慢查詢日誌或配置選項,如密鑰緩衝區,tmp表大小,innodb緩衝池大小等?

候選人是否喜歡每個存儲引擎的微妙之處? (MyISAM,InnoDB和MEMORY是主要的)。他們是否瞭解每個存儲引擎如何優化查詢以及如何處理鎖定?至少,候選人應該提到MyISAM發佈表級鎖,而InnODB使用行級鎖。

將模式更改爲實時數據庫最安全的方法是什麼?候選人應該提及master-master複製,以及通過創建一個具有所需配置的新表並使用mysqldump或INSERT INTO ... SELECT以及RENAME TABLE來避免ALTER TABLE的鎖定和性能問題。

最後,專業人士唯一真正的衡量標準就是經驗。如果候選人無法指出在高可用性環境中管理大型數據集的具體經驗,他們可能無法在純知識級別上備份他們擁有的任何知識。

1

我認爲這取決於數據庫類型:交易型還是數據倉庫?無論如何,對於所有類型的問題,我都會問到關於MySQL複製和集羣特性,性能調整和監視概念。

+0

這將是一個事務性的數據庫。 我應該期待聽到的任何特定的MySQL功能? – Campbell 2008-09-15 10:09:23

6

我想問一下各種存儲引擎之間的區別,以及它們的優點和缺點。

不確定地覆蓋複製,並挖掘複製的缺點,尤其是當使用帶有自動遞增鍵的表時。

如果他們仍然與你在一起,然後詢問複製滯後,它是監視它的效果和標準模式。