これは、ネットワーク全体で最も詳細なMySQLシリーズである可能性があります。MySQL(パフォーマンスの最適化、面接の質問、機能)

アインシュタインは「忍耐と忍耐は常に報われる」と語った。私は常にこの文章をモットーとしており、このモットーは今年の「私」で完全に実現されました。

すべてのプログラマーには大きな工場の夢があり、私も例外ではありません。昨年、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ステートメントを分割する
  • 列が小さいほど、高速になります。
  • 適切なストレージエンジンの選択
  • 適切なストレージエンジンの選択
  • 「パーマリンク」に注意してください

本当に素晴らしい! Huawei DanielはついにMySQLを明確に説明しました(基本+最適化+アーキテクチャ)

 

2.MySQLインタビューの質問の要約

Aliの以前の面接の質問が要約され、特定の面接の質問の内容がドキュメントにまとめられました。この記事はMySQLシリーズを対象としているため、以下は、私が非難されたときに尋ねられたMySQLの問題の一部のみを示しています。アリに初めてインタビューしました。今年、アリはインタビューでMySQLに問題が発生しました。

2.1。他のトピックの文書(回答を含む)は、私に個人的に郵送することで入手できます[インタビュー]。

  1. リレーショナルデータベースのコンセプトと主な特徴を教えてください。
  2. リレーショナルデータベースの代表的な製品、特性、アプリケーションシナリオを教えてください。
  3. SQLステートメントの分類と対応する代表的なキーワードについて詳しく説明してください。
  4. MySQLマルチインスタンスとは何ですか?MySQLマルチインスタンスを構成する方法は?
  5. MySQLのセキュリティを強化する方法、具体的な実行可能な対策を教えてください。
  6. ドロップライブラリのSQLステートメントが誤って実行されました。完全に回復するにはどうすればよいですか。
  7. MySQLマスタースレーブレプリケーションの原則とマスタースレーブを構成するための完全な手順を説明します。
  8. MySQLはどのように双方向のマスタースレーブレプリケーションを実装し、アプリケーションシナリオを説明しますか?
  9. MySQLはどのようにしてカスケード同期を実現し、アプリケーションシナリオを説明しますか?
  10. MySQLマスタースレーブレプリケーションの失敗を解決する方法は?

2.2。MySQL 55のインタビュートピックについて、いくつの質問に答えることができますか?

  1. IDが自己インクリメントする主キーを持つテーブル。17レコードを挿入した後、15、16、17レコードを削除し、Mysqlを再起動して、レコードを挿入します。このレコードのIDは18または15ですか。
  2. Mysqlの技術的特徴は何ですか?
  3. ヒープテーブルとは何ですか?
  4. Mysqlサーバーのデフォルトポートは何ですか?
  5. Oracleと比較して、Mysqlの利点は何ですか?
  6. FLOATとDOUBLEを区別する方法は?
  7. CHAR_LENGTHとLENGTHを区別しますか?
  8. MysqlのInnoDBでサポートされている4つのトランザクション分離レベルの名前と各レベルの違いについて簡単に説明してください。
  9. MysqlでのENUMの使用法は何ですか?
  10. REGEXPを定義する方法は?
  11. CHARとVARCHARの違いは何ですか?
  12. 列の文字列型は何ですか?
  13. 現在のMysqlバージョンを取得するにはどうすればよいですか?
  14. Mysqlで使用されているストレージエンジンは何ですか?
  15. Mysqlドライバーとは何ですか?
  16. TIMESTAMPはUPDATECURRENT_TIMESTAMPデータ型で何をしますか?
  17. 主キーと候補キーの違いは何ですか?
  18. Unixシェルを使用してMysqlにログインする方法は?
  19. myisamchkは何に使用されますか?
  20. MYSQLデータベースサーバーのパフォーマンス分析のためのメソッドコマンドは何ですか?
  21. HEAPテーブルの最大サイズを制御する方法は?
  22. MyISAMスタティックとMyISAMダイナミックの違いは何ですか?
  23. フェデレーションテーブルとは何ですか?
  24. テーブルにTIMESTAMPとして定義された列がある場合、どうなりますか?
  25. 列がAUTOINCREMENTに設定されている場合、テーブルの最大値に達するとどうなりますか?
  26. 最後の挿入時に割り当てられた自動インクリメントを確認するにはどうすればよいですか?
  27. テーブルに定義されているすべてのインデックスをどのように確認しますか?
  28. LIKEステートメントの%と_はどういう意味ですか?
  29. UnixとMysqlのタイムスタンプを変換する方法は?
  30. 列比較演算子とは何ですか?
  31. クエリの影響を受ける行数を取得するにはどうすればよいですか?
  32. Mysqlクエリでは大文字と小文字が区別されますか?
  33. LIKE操作とREGEXP操作の違いは何ですか?
  34. BLOBとTEXTの違いは何ですか?
  35. mysql_fetch_arrayとmysql_fetch_objectの違いは何ですか?
  36. mysqlでバッチモードを実行するにはどうすればよいですか?
  37. MyISAMテーブルはどこに保存され、その保存形式も提供されますか?
  38. Mysqlのさまざまなテーブルは何ですか?
  39. ISAMとは何ですか?
  40. InnoDBとは何ですか?
  41. MysqlはDISTINCTをどのように最適化しますか?
  42. 文字を16進数で入力するにはどうすればよいですか?
  43. 最初の50行を表示するにはどうすればよいですか?
  44. インデックスの作成に使用できる列の数はいくつですか?
  45. NOW()とCURRENT_DATE()の違いは何ですか?
  46. CREATEステートメントを使用してどのような種類のオブジェクトを作成できますか?
  47. Mysqlテーブルで許可されるトリガーの数はいくつですか?
  48. 非標準の文字列型とは何ですか?
  49. 一般的なSQL関数とは何ですか?
  50. アクセス制御リストについて説明する
  51. MYSQLはトランザクションをサポートしていますか?
  52. mysqlで通貨を記録するのに適したフィールドタイプはどれですか
  53. MYSQLデータテーブルはどのような状況で損傷を受けやすいですか?
  54. mysql関連の権限テーブルとは何ですか?
  55. Mysqlにはどのような種類のロックがありますか?

3.MySQLのパフォーマンスチューニングとアーキテクチャ設計

  • 基本記事:
  1. MySQLの基本的な紹介
  2. MySQLアーキテクチャの構成
  3. MySQLストレージエンジンの概要
  4. MySQLセキュリティ管理
  5. MySQLのバックアップと復元

本当に素晴らしい! Huawei DanielはついにMySQLを明確に説明しました(基本+最適化+アーキテクチャ)

 

  • パフォーマンス最適化の記事:
  1. MySQLServerのパフォーマンスに影響を与える関連要因
  2. MySQLデータベースロックメカニズム
  3. MySQLデータベースクエリの最適化
  4. MySQLデータベーススキーマ設計のパフォーマンスの最適化
  5. MySQLServerのパフォーマンスの最適化
  6. 一般的なストレージエンジンの最適化

本当に素晴らしい! Huawei DanielはついにMySQLを明確に説明しました(基本+最適化+アーキテクチャ)

 

  • アーキテクチャ設計の記事:
  1. MySQLスケーラブル設計の基本原則
  2. MySQLReplicationのスケーラブルな設計
  3. スケーラビリティ設計のためのデータセグメンテーション
  4. キャッシュと検索のスケーラブルな設計。
  5. MySQLCluster
  6. 高可用性設計のアイデアとソリューション
  7. MySQLモニタリングの高可用性設計

MySQLのアーキテクチャと歴史

 

他のデータベースシステムと比較すると、MySQLは少し異なります。そのアーキテクチャはさまざまなシナリオで使用でき、優れた役割を果たしますが、選択が困難になることもあります。MySQLは完璧ではありませんが、Webアプリケーションなどの要求の厳しい環境に適応するのに十分な柔軟性があります。同時に、MySQLはアプリケーションに組み込むことができ、データウェアハウス、コンテンツのインデックス作成および展開ソフトウェア、可用性の高い冗長システム、オンライントランザクション処理システム(OLTP)などのさまざまなアプリケーションタイプもサポートできます。

 

入手する必要がある場合は、面倒なワンクリックのトリプルリンク+コメントを入力してから、VX(tkzl6666)を追加して無料で入手してください。

サーバーパフォーマンス分析

本当に素晴らしい! Huawei DanielはついにMySQLを明確に説明しました(基本+最適化+アーキテクチャ)

 

私たちの技術コンサルティングのキャリアにおいて、最も頻繁に遭遇する3つのパフォーマンス関連のサービス要求は、サーバーが最高のパフォーマンス状態に達したかどうかを確認する方法、特定のステートメントが十分に速く実行されない理由を見つける方法、および診断が「一時停止」、「スタッキング」、「スタック」などの断続的なトラブル。この章では、主にこれら3つの質問に答えます。マシン全体のパフォーマンスを最適化し、単一のステートメントの実行速度を最適化し、観察が困難な問題を診断または解決するためのいくつかのツールと手法を提供します(これらの問題のユーザーは多くの場合、根本的な原因、時には非常にさえその存在を検出することは困難です)。

クエリパフォーマンスの最適化

本当に素晴らしい! Huawei DanielはついにMySQLを明確に説明しました(基本+最適化+アーキテクチャ)

 

前は、最高のライブラリテーブル構造を設計する方法と、最高のインデックスを構築する方法です。これは、高性能に不可欠です。しかし、これらは十分ではありません。クエリの合理的な設計が必要です。クエリの記述が不十分な場合、データベーステーブルの構造が適切で、インデックスが適切であっても、高いパフォーマンスを実現することはできません。

MySQLの高度な機能

本当に素晴らしい! Huawei DanielはついにMySQLを明確に説明しました(基本+最適化+アーキテクチャ)

 

MySQLは、パーティション、トリガーなど、バージョン5.0および5.1から多くの高度な機能を導入しました。これらの機能は、他のリレーショナルデータベースのバックグラウンドを持つユーザーにはなじみがないかもしれません。これらの新機能により、多くのユーザーがMySQLの使用を開始するようになりました。ただし、これらの機能のパフォーマンスは、ユーザーが知るために実際に使用する必要があります。ここでは、リファレンスマニュアルや意拳の資料でデータを紹介するだけでなく、これらの特性が実際にどのように動作するかを紹介します。

 

サーバー設定を最適化する

本当に素晴らしい! Huawei DanielはついにMySQLを明確に説明しました(基本+最適化+アーキテクチャ)

 

ここでは、MySQLサーバー用の信頼できる構成ファイルを作成するプロセスについて説明します。これは非常に曲がりくねったプロセスであり、多くの興味深い懸念事項や注目に値するアイデアがあります。適切な構成を作成するための最速の方法は、構成アイテムを学習すること、設定する必要のある構成アイテムや変更方法を尋ねること、サーバーの動作を確認して構成アイテムを尋ねることではないため、これらの点に注意する必要があります。パフォーマンスの向上が始まります。

MySQLカーネルと動作を理解することから始めるのが最善です。次に、この知識を使用してMySQLの構成をガイドできます。最後に、目的の構成を現在の構成と比較して、重要で価値のある違いを修正できます。

 

コピー

本当に素晴らしい! Huawei DanielはついにMySQLを明確に説明しました(基本+最適化+アーキテクチャ)

 

MySQLの組み込みレプリケーション機能は、MySQLに基づいて大規模で高性能なアプリケーションを構築するための基盤です。このようなアプリケーションは、いわゆる「水平拡張」アーキテクチャを使用します。サーバー用に1つ以上のスタンバイデータベース1を構成することにより、データを同期できます。レプリケーション機能は、高性能アプリケーションの構築に役立つだけでなく、高可用性、スケーラビリティ、ディザスタリカバリ、バックアップ、およびデータウェアハウス作業の基盤にもなります。実際、スケーラビリティと高可用性は通常、関連するトピックであり、次の3つの章で詳しく説明します。

 

スケーラブルなMySQL

本当に素晴らしい! Huawei DanielはついにMySQLを明確に説明しました(基本+最適化+アーキテクチャ)

 

ここでは、MySQLベースのアプリケーションを構築する方法を示します。規模がどんどん大きくなると、高速、効率的、経済的になります。一部のアプリケーションは1つまたは少数のサーバーにのみ適しているため、これらのアプリケーションに関連するスケーラビリティの推奨事項は何ですか?ほとんどの人は超大規模システムを維持することはなく、通常、主流の大企業では模倣できません。使用された戦略。この章では、この一連の戦略について説明します。当社は、単一または少数のサーバーから数千台のサーバーを使用するアプリケーションまで、多くのアプリケーションの確立または確立を支援してきました。適切な戦略を選択すると、時間とお金を大幅に節約できます。MySQLはスケーリングが難しいと批判されることがよくあります。場合によっては、この見方は正しいですが、適切なアーキテクチャを選択して適切に実装すれば、MySQLを非常にうまくスケーリングできます。しかし、スケーラビリティはよく理解されていないテーマなので、混乱しやすい点を整理しましょう。

 

クラウド内のMySQL

本当に素晴らしい! Huawei DanielはついにMySQLを明確に説明しました(基本+最適化+アーキテクチャ)

 

アプリケーション層の最適化

MySQLのパフォーマンスの向上に多くの時間を費やすと、ビジョンをMySQL自体に限定し、ユーザーエクスペリエンスを無視するのは簡単です。振り返ってみると、MySQLは、ユーザーに表示される応答時間のごく一部を占めるように最適化されていることに気付くかもしれません。現時点では、他の部分に注意を払う必要があります。これは、特にDBAにとって非常に良い点であり、これは正しいことです。しかし、MySQLでない場合、問題の原因は何ですか?第3章で説明した手法を使用すると、測定を通じて迅速かつ正確に答えを出すことができます。アプリケーションのロジックプロセスを最初から最後まで分析できれば、通常、問題の原因を見つけることは難しくありません。問題がMySQLにある場合でも、システムの別の部分で簡単に解決できる場合があります。

バックアップと復元

事前にバックアップ計画を立てないと、将来的に最適なオプションのいくつかを見逃してしまう可能性があります。たとえば、サーバーを構成した後、ファイルシステムのスナップショットを取得できるようにLVMを使用する必要があることを思い出しましたが、手遅れでした。バックアップ用のシステムパラメータを構成する場合、特定のシステム構成がパフォーマンスに重要な影響を与えることに気付かない場合があります。定期的な回復演習を行う予定がない場合、回復が本当に必要なときは、それほどスムーズではないことがわかります。

MySQLユーザーツール

MySQLサーバーリリースパッケージには、サーバーを監視したり、異なるサーバー間でデータを比較したりするためのツールなど、多くの一般的なタスク用のツールは含まれていません。幸い、オラクルの商用バージョンはいくつかの拡張ツールを提供し、MySQLのアクティブなオープンソースコミュニティとサードパーティ企業も一連のツールを提供しているため、「車輪の再発明」の必要性が少なくなります。

リスト

本当に素晴らしい! Huawei DanielはついにMySQLを明確に説明しました(基本+最適化+アーキテクチャ)

おすすめ

転載: blog.csdn.net/m0_46874920/article/details/113660164