SQL ServerとMySQLはどちらもRDBMですが、MySQLには初心者と専門家の違いを示す多くのユニークな機能があります。
あなたの最初のステップは、phpMyAdminなどのGUIツールだけでなく、コマンドラインの使用が快適であることを確認することです。インタビュー中に、候補者にMySQLコードを書いてデータベーステーブルを作成したり、新しいインデックスを追加したりするように依頼してください。これらは非常に基本的なクエリですが、まさにGUIツールが初心者のマスタリングを妨げるタイプです。 MySQLに精通している人との回答を再確認することができます。
候補者はJOINの仕組みに関する知識を実証できますか?たとえば、表2に一致するエントリが存在しない表1のすべての行を戻す問合せを作成するように候補者に依頼してください。答えには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レプリケーションと、ALTER TABLEのロックとパフォーマンスの問題を回避するだけでなく、mysqldumpまたはINSERT INTO ... SELECTの後にRENAME TABLEを使用して新しいテーブルを作成してください。
最後に、プロの唯一の真の測定値は経験値です。候補者が高可用性環境で大きなデータセットを管理する特定の経験を指すことができない場合、純粋に知的レベルで所有している知識をバックアップすることができない可能性があります。
私はここにいくつか書いています:http://www.alphadevx.com/a/468-Technical-screening-questions-for-a-MySQL-DBA – alphadevx