アインシュタインは「忍耐と忍耐は常に報われる」と語った。私はこれを常に私のモットーと考えており、このモットーは今年の「私」で完全に実現されました。
すべてのプログラマーは大きな工場を夢見ています。私も例外ではありません。昨年、AliにインタビューしたときにMySQLから質問されました。関連する質問の多くは回答されておらず、たった2回で寒かったです。面接の準備をたくさんし、MySQLの面接についてたくさんの質問を集めました
MySQLの機能は何ですか?
- CおよびC ++で記述され、さまざまなコンパイラでテストされて、ソースコードの移植性が確認されています。
- AIX、FreeBSD、HP-UX、Linux、MacOS、Novell Netware、OpenBSD、OS / 2 Wrap、Solaris、Windowsおよびその他のオペレーティングシステムをサポート
- 複数のプログラミング言語用のAPIを提供します。これらのプログラミング言語には、C、C ++、Python、Java、Perl、PHP、Eiffel、Ruby、Tclが含まれます。
- マルチスレッドをサポートし、CPUリソースを最大限に活用します
- SQLクエリアルゴリズムの改善、クエリ速度の効果的な改善
- クライアント/サーバーネットワーク環境で個別のアプリケーションとして使用でき、ライブラリとして他のソフトウェアに組み込んで多言語サポートを提供することもできます。中国語GB 2312、BIG5、日本語Shift_JISなどの一般的なエンコーディング。データテーブル名およびデータ列名として使用されます
- TCP / IP、ODBC、JDBCなどの複数のデータベース接続方法を提供する
- データベース操作を管理、チェック、および最適化するための管理ツールを提供します
- 数千万のレコードを持つ大規模なデータベースを処理できます
MySQLの世界に足を踏み入れる
1.MySQLパフォーマンス最適化の21のベストプラクティス
- クエリキャッシュ用にクエリを最適化する
- SELECTクエリを説明する
- 1行のデータのみが必要な場合は、LIMIT1を使用します
- 検索フィールドにインデックスを付ける
- 結合テーブルで同様のタイプの例を使用して、インデックスを付けます
- RAND()で注文しないでください
- SELECT *を避けてください
- 各テーブルには常にIDを設定してください
- VARCHARの代わりにENUMを使用する
- PROCEDURE ANALYSE()からアドバイスを得る
- 可能な限りNOTNULLを使用してください
- プリペアドステートメント
- バッファなしクエリ
- IPアドレスをUNSIGNEDINTとして保存します
- 固定長テーブルは高速になります
- 垂直分割
- 大きなDELETEまたはINSERTステートメントを分割する
- 列が小さいほど、高速になります。
- 適切なストレージエンジンを選択する
- 適切なストレージエンジンを選択する
- 「パーマリンク」に注意してください
2.MySQLインタビューの質問の要約
以前のAlibabaの面接の質問が要約され、特定の面接の質問がドキュメントにまとめられています。この記事はMySQLシリーズを対象としているため、以下は、Aliに初めて面接したときに尋ねられたMySQLの問題の一部のみを示しています。今年、AliはインタビューでMySQLの問題に遭遇しました。
2.1。他のトピックの文書(回答を含む)は、私に個人的に郵送することで受け取ることができます[インタビュー]。
- リレーショナルデータベースのコンセプトと主な特徴を教えてください。
- リレーショナルデータベースの代表的な製品、特性、アプリケーションシナリオを教えてください。
- SQLステートメントの分類と対応する代表的なキーワードについて詳しく説明してください。
- MySQLマルチインスタンスとは何ですか?MySQLマルチインスタンスを構成する方法は?
- MySQLのセキュリティを強化する方法、具体的な実行可能な対策を教えてください。
- ドロップライブラリのSQLステートメントが誤って実行されました。完全に回復するにはどうすればよいですか。
- MySQLマスタースレーブレプリケーションの原則とマスタースレーブを構成するための完全な手順を説明します。
- MySQLはどのようにして双方向のマスタースレーブレプリケーションを実現し、アプリケーションシナリオを説明しますか?
- MySQLはどのようにしてカスケード同期を実現し、アプリケーションシナリオを説明しますか?
- MySQLマスタースレーブレプリケーションの失敗を解決する方法は?
2.2。MySQL 55のインタビュートピックについて、いくつの質問に答えることができますか?
- IDが自己インクリメントする主キーを持つテーブル。17レコードを挿入した後、15、16、17レコードを削除し、Mysqlを再起動して、レコードを挿入します。このレコードのIDは18または15ですか。
- Mysqlの技術的特徴は何ですか?
- ヒープテーブルとは何ですか?
- Mysqlサーバーのデフォルトポートは何ですか?
- Oracleと比較して、Mysqlの利点は何ですか?
- FLOATとDOUBLEを区別する方法は?
- CHAR_LENGTHとLENGTHを区別しますか?
- MysqlのInnoDBでサポートされている4つのトランザクション分離レベルの名前と各レベルの違いについて簡単に説明してください。
- MysqlでのENUMの使用法は何ですか?
- REGEXPを定義する方法は?
- CHARとVARCHARの違いは何ですか?
- 列の文字列タイプは何ですか?
- 現在のMysqlバージョンを取得するにはどうすればよいですか?
- Mysqlではどのストレージエンジンが使用されていますか?
- Mysqlドライバーとは何ですか?
- TIMESTAMPはUPDATECURRENT_TIMESTAMPデータ型で何をしますか?
- 主キーと候補キーの違いは何ですか?
- Unixシェルを使用してMysqlにログインする方法は?
- myisamchkは何に使用されますか?
- MYSQLデータベースサーバーのパフォーマンス分析のためのメソッドコマンドは何ですか?
- HEAPテーブルの最大サイズを制御する方法は?
- MyISAMスタティックとMyISAMダイナミックの違いは何ですか?
- フェデレーションテーブルとは何ですか?
- テーブルにTIMESTAMPとして定義された列がある場合、どうなりますか?
- 列がAUTOINCREMENTに設定されている場合、テーブルの最大値に達するとどうなりますか?
- 最後の挿入時に割り当てられた自動インクリメントを確認するにはどうすればよいですか?
- テーブルに定義されているすべてのインデックスをどのように確認しますか?
- LIKEステートメントの%と_はどういう意味ですか?
- UnixとMysqlのタイムスタンプを変換する方法は?
- 列比較演算子とは何ですか?
- クエリの影響を受ける行数を取得するにはどうすればよいですか?
- Mysqlクエリでは大文字と小文字が区別されますか?
- LIKE操作とREGEXP操作の違いは何ですか?
- BLOBとTEXTの違いは何ですか?
- mysql_fetch_arrayとmysql_fetch_objectの違いは何ですか?
- mysqlでバッチモードを実行するにはどうすればよいですか?
- MyISAMテーブルはどこに保存され、その保存形式も提供されますか?
- Mysqlのさまざまなテーブルは何ですか?
- ISAMとは何ですか?
- InnoDBとは何ですか?
- MysqlはDISTINCTをどのように最適化しますか?
- 文字を16進数で入力するにはどうすればよいですか?
- 最初の50行を表示するにはどうすればよいですか?
- インデックスの作成に使用できる列の数はいくつですか?
- NOW()とCURRENT_DATE()の違いは何ですか?
- CREATEステートメントを使用してどのような種類のオブジェクトを作成できますか?
- Mysqlテーブルで許可されるトリガーの数はいくつですか?
- 非標準の文字列型とは何ですか?
- 一般的なSQL関数とは何ですか?
- アクセス制御リストについて説明する
- MYSQLはトランザクションをサポートしていますか?
- mysqlで通貨を記録するのに適したフィールドタイプはどれですか
- MYSQLデータテーブルはどのような状況で簡単に破損しますか?
- パーミッションに関するmysqlテーブルとは何ですか?
- Mysqlにはどのような種類のロックがありますか?
3.MySQLのパフォーマンスチューニングとアーキテクチャ設計
- 基本記事:
- MySQLの基本的な紹介
- MySQLアーキテクチャの構成
- MySQLストレージエンジンの概要
- MySQLセキュリティ管理
- MySQLのバックアップと復元
- パフォーマンス最適化の記事:
- MySQLServerのパフォーマンスに影響を与える関連要因
- MySQLデータベースロックメカニズム
- MySQLデータベースクエリの最適化
- MySQLデータベーススキーマ設計のパフォーマンスの最適化
- MySQLServerのパフォーマンスの最適化
- 一般的なストレージエンジンの最適化
- 建築設計の記事:
- MySQLスケーラブル設計の基本原則
- MySQLReplicationのスケーラブルな設計
- スケーラビリティ設計のためのデータセグメンテーション
- キャッシュと検索のスケーラブルな設計。
- MySQLCluster
- 高可用性設計のアイデアとソリューション
- 高可用性設計のMySQLモニタリング
MySQLのアーキテクチャと歴史
他のデータベースシステムと比較すると、MySQLは少し異なります。そのアーキテクチャはさまざまなシナリオに適用でき、優れた役割を果たしますが、選択が困難になることもあります。MySQLは完璧ではありませんが、Webアプリケーションなどの要求の厳しい環境に適応するのに十分な柔軟性があります。同時に、MySQLはアプリケーションに組み込むことができ、データウェアハウス、コンテンツのインデックス作成および展開ソフトウェア、可用性の高い冗長システム、オンライントランザクション処理システム(OLTP)などのさまざまなアプリケーションタイプもサポートできます。
3つの連続した記事の後に、アシスタントVXを追加します。mxj94670は、歴史上最も完全なMySQLドキュメントを無料で受け取ることができます。
サーバーパフォーマンス分析
私たちの技術コンサルティングのキャリアにおいて、パフォーマンス関連のサービスリクエストで最も頻繁に発生する3つは、サーバーが最高のパフォーマンスに達したかどうかを確認する方法、特定のステートメントが十分に速く実行されない理由を見つける方法、および診断がユーザーによって説明される方法です。 「一時停止」、「スタッキング」、「スタック」などの断続的なトラブル。この章では、主にこれら3つの質問に答えます。マシン全体のパフォーマンスを最適化し、単一のステートメントの実行速度を最適化し、観察が困難な問題を診断または解決するためのいくつかのツールと手法を提供します(これらの問題のユーザーは多くの場合、根本的な原因、時には非常にさえその存在を検出することは困難です)。
クエリパフォーマンスの最適化
前は、最高のライブラリテーブル構造を設計する方法と、高性能に不可欠な最高のインデックスを構築する方法です。しかし、これらは十分ではありません。クエリの合理的な設計が必要です。クエリの記述が不十分な場合、データベーステーブルの構造が適切で、インデックスが適切であっても、高いパフォーマンスを実現することはできません。
MySQLの高度な機能
MySQLは、パーティション、トリガーなど、バージョン5.0および5.1から多くの高度な機能を導入しました。これらの機能は、他のリレーショナルデータベースのバックグラウンドを持つユーザーにはなじみがないかもしれません。これらの新機能により、多くのユーザーがMySQLの使用を開始するようになりました。ただし、これらの機能のパフォーマンスは、ユーザーが知るために実際に使用する必要があります。ここでは、リファレンスマニュアルやYichuanの資料でデータを紹介するだけでなく、これらの特性が実際にどのように動作するかを紹介します。
転送+フォローした後、プライベートメッセージの返信[アーキテクチャブック]に注意して、史上最も完全なMySQLの実際の戦闘ドキュメントを無料で受信します
サーバー設定を最適化する
ここでは、MySQLサーバー用の信頼できる構成ファイルを作成するプロセスについて説明します。これは非常に曲がりくねったプロセスであり、注目に値する多くの興味深い点やアイデアがあります。適切な構成を作成するための最速の方法は、構成項目を学習すること、設定する必要のある構成項目や変更方法を尋ねること、サーバーの動作を確認して構成項目を尋ねることではないため、これらの点に注意する必要があります。パフォーマンスの向上が始まります。
MySQLカーネルと動作を理解することから始めるのが最善です。次に、この知識を使用してMySQLの構成をガイドできます。最後に、目的の構成を現在の構成と比較して、重要で価値のある違いを修正できます。
転送+フォローした後、プライベートメッセージの返信[アーキテクチャブック]に注意して、史上最も完全なMySQLの実際の戦闘ドキュメントを無料で受信します
コピー
MySQLの組み込みレプリケーション機能は、MySQLに基づいて大規模で高性能なアプリケーションを構築するための基盤です。このようなアプリケーションは、いわゆる「水平拡張」アーキテクチャを使用します。サーバー用に1つ以上のスタンバイデータベース1を構成することにより、データを同期できます。レプリケーション機能は、高性能アプリケーションの構築に役立つだけでなく、高可用性、スケーラビリティ、ディザスタリカバリ、バックアップ、およびデータウェアハウス作業の基盤にもなります。実際、スケーラビリティと高可用性は通常関連するトピックであり、次の3つの章で詳しく説明します。
転送+フォローした後、プライベートメッセージの返信[アーキテクチャブック]に注意して、史上最も完全なMySQLの実際の戦闘ドキュメントを無料で受信します
スケーラブルなMySQL
ここでは、MySQLベースのアプリケーションを構築する方法を示します。規模がどんどん大きくなると、高速、効率的、経済的になります。一部のアプリケーションは1つまたは少数のサーバーにのみ適しているため、これらのアプリケーションに関連するスケーラビリティの推奨事項は何ですか?ほとんどの人は超大規模システムを維持することはなく、通常、主流の大企業では模倣できません。この章では、この一連の戦略について説明します。当社は、単一または少数のサーバーを使用するアプリケーションから数千台のサーバーを使用するアプリケーションに至るまで、多くのアプリケーションの確立または確立を支援してきました。適切な戦略を選択すると、時間とお金を大幅に節約できます。MySQLは拡張が難しいと批判されることがよくあります。この見方が正しい場合もありますが、適切なアーキテクチャを選択して適切に実装すれば、MySQLを非常にうまく拡張できます。しかし、スケーラビリティはよく理解されていないテーマなので、わかりにくい点を整理しましょう。
転送+フォローした後、プライベートメッセージの返信[アーキテクチャブック]に注意して、史上最も完全なMySQLの実際の戦闘ドキュメントを無料で受信します
クラウド内のMySQL
アプリケーション層の最適化
MySQLのパフォーマンスの向上に多くの時間を費やすと、ビジョンをMySQL自体に限定し、ユーザーエクスペリエンスを無視するのは簡単です。振り返ってみると、MySQLは、ユーザーに表示される応答時間のごく一部を占めるように最適化されていることに気付くかもしれません。現時点では、他の部分に注意を払う必要があります。これは、特にDBAにとって非常に良い点であり、これは正しいことです。しかし、MySQLでない場合、問題の原因は何ですか?第3章で説明した手法を使用すると、測定を通じて迅速かつ正確に答えを出すことができます。ロジックプロセスに沿ってアプリケーションを最初から最後まで分析できれば、通常、問題の原因を見つけることは難しくありません。問題がMySQLにある場合でも、システムの別の部分で簡単に解決できる場合があります。
バックアップと復元
事前にバックアップを計画していないと、将来的に最良のオプションのいくつかを見逃してしまう可能性があります。たとえば、サーバーを構成した後、ファイルシステムのスナップショットを取得できるようにLVMを使用する必要があることを思い出しましたが、手遅れでした。バックアップ用のシステムパラメータを構成する場合、特定のシステム構成がパフォーマンスに重要な影響を与えることに気付かない場合があります。定期的な回復演習を行う予定がない場合、回復が本当に必要なときは、それほどスムーズではないことがわかります。
MySQLユーザーツール
MySQLサーバー配布パッケージには、サーバーを監視したり、異なるサーバー間でデータを比較したりするためのツールなど、多くの一般的なタスク用のツールは含まれていません。幸い、オラクルの商用バージョンはいくつかの拡張ツールを提供し、MySQLのアクティブなオープンソースコミュニティとサードパーティ企業も一連のツールを提供しているため、「車輪の再発明」の必要性が少なくなります。
リスト
3つの連続した記事の後、下部をスキャンして、史上最も完全なMySQLの実際のドキュメントを無料で入手します