検索
ホームページデータベースmysql チュートリアルMySQL パフォーマンスの最適化により、データベースの実行が高速化されます。



データベースの最適化作業では、データをできるだけ小さくし、テーブルがハードディスク上で占有するスペースをできるだけ少なくすることが、最も一般的に使用され、最も効果的な方法の 1 つです。データが削減されるため、ハードディスクの読み取りおよび書き込み速度が相対的に向上し、クエリ プロセス中の小さなテーブルのコンテンツ処理に使用されるシステム リソースが少なくなります。同様に、インデックスが小さい列に設定されている場合、インデックスが占有するリソースは少なくなります。では、データベース管理者はどのようにして自分のデータを軽量化できるでしょうか?これについて著者は次のような提案をしています。

提案 1: Null 値は必ずしもスペースを占有しないわけではありません

ここで、著者はまず全員に教育します。データベース管理者の中には、NULL 値がシステム リソースを占有しないと信じている人もいます。実際、これは誤った理解です。データベースを設計するとき、彼らはフィールドのプロパティを NOT NULL に設定することを好みません。ユーザーが必要に応じてデータを入力できるようにします。著者は、このアプローチはデータベースのパフォーマンスに悪影響を与えると考えています。私の意見としては、可能であれば列を NOT NULL に設定するようにしてください。つまり、NULL 値は許可されません。そうすることで、後続の処理が高速化されると同時に、データ ストレージの観点から列ごとに 1 ビットを節約できるため、データの軽量化という目的を達成できます。実際の作業では、ユーザーがデータを入力する必要がない状況がある場合は、空ではない目的を達成するためにデフォルトのフィールドを使用することもできます。たとえば、給与システムでは、ユーザーの勤務年数をデフォルトで空白ではなく 0 に設定できます。もちろん、本当に NULL が必要な場合は、方法がありません。ただし、データベース エンジニアとしては、NULL 値の使用を避けるように努める必要があります。

提案 2: できるだけ小さいデータ型を使用します

データ型のサイズは、基になるテーブルのサイズにも影響します。たとえば、MEDIUMINT と INT の 2 つのデータ型は整数データの保存に使用できますが、保存できる精度は異なります。ただし、データを保存するという観点から見ると、前者は後者よりも約 25% 少ないストレージ容量を必要とします。このため、MEDIUMINT が使用できる場合は INT を使用しないでください。

また、データ長を定義する際は、ニーズに合わせてできるだけ短くする必要があります。たとえば、給与評価システムには従業員コーディングのフィールドがあります。企業の従業員コードが決定されている場合、それは 5 文字で構成されます。その後、フィールドを定義するときに、5 文字の長さを定義するだけで済みます。これにより、ストレージスペースを削減できるだけでなく、特定のデータ校正機能も果たすことができます。ユーザーが入力したコード長が5桁を超える場合はデータを保存できません。

特定のデータを保存するときに選択できるデータ型は数多くありますが、比較的多数の文字を定義することもできます。ただし、できるだけ小さいデータ型を選択すると、データの保存スペースを削減し、データの軽量化という目的を達成するのに役立ちます。これにより、データベースのパフォーマンスがさらに向上します。

提案 3: インデックスとデータテーブルのサイズの関係

著者は記事の冒頭で、より小さい列にインデックスを設定すると、インデックスが占有するリソースも少なくなると述べました。インデックスとデータテーブルのサイズも密接に関係していることがわかります。適切なインデックスを適切な場所に適切なタイミングで設定することで、データの軽量化という目的も達成できます。

通常、各データテーブルには複数のインデックスがある場合がありますが、多くの場合、メインインデックスは 1 つだけです。このため、各テーブルのメイン インデックスはできるだけ短く簡潔にする必要があります。これにより、データベースがより迅速に識別できるようになります。

もう 1 つの例は、可能な限りプレフィックスにインデックスを付けることです。たとえば、現在テーブルがある場合、特定の列にインデックスを設定する必要があります。そして、この列には特徴があり、最初の数文字に一意の接頭辞が付いています。この場合、すべてのプレフィックスではなく、このプレフィックスにしっかりとインデックスを付ける方がよいでしょう。 MySQL データベースでは、文字列の左端にインデックスを作成することがサポートされています。これは、データベースが特定のルールに従ってフィールドを 2 つの部分に分割することを意味します。分割後も前部分のデータを一意に保つことができる場合は、前部分にインデックスを設定するだけでよく、フィールド全体のデータにインデックスを設定する必要はありません。これにより、間違いなくインデックスが占有するリソースを削減し、減量の目的を達成できます。インデックスが短いほど、クエリ速度が速くなります。必要なハード ドライブのスペースが少なくなり、インデックス キャッシュにより多くのアクセスが節約されるためです。これにより、ハードディスクの検索回数が減り、クエリの効率が向上します。

最後に注意すべきことは、インデックスを悪用することはできないということです。インデックスを使用すると確かにデータ処理能力が向上しますが、インデックスにより追加のオーバーヘッドも発生します。メリットがオーバーヘッドよりも大きい場合にのみ、インデックスを使用してデータベースのパフォーマンスを向上させることができます。そうしないと逆効果になります。たとえば、テーブルを迅速に保存する必要がある場合、テーブルに設定されているインデックスが多すぎると、インデックスに副作用が生じます。この点に関して、著者は、主に検索列の組み合わせを通じてテーブルにアクセスする場合、インデックスを 1 つだけ設定するのが最善であると提案しています。もちろん、このインデックス部分は日常業務で最もよく使用される列であるはずです。複数のインデックスを使用する必要がある場合の最後の手段として、より多くのコピーを持つ列を使用してインデックス圧縮を向上させることが最善です。これにより、複数のインデックスの使用によるリソース消費の増加が軽減されます。

提案4: まだ「ふっくら」する必要がある部分を節約できません

女性は痩せるべきところは痩せて、ふっくらすべきところはふっくらしていなければなりません。実際、データベースにも同じことが当てはまります。ハードドライブのスペースを節約できる場合は、必ず保存してください。そして、節約できないものは、体重を減らすために合理化することはできません。場合によってはこれが裏目に出ることもあります。

著者は Varchar を例に挙げています。 MyISAM と同様、可変長列がない場合は、固定サイズのデータ​​型を使用することをお勧めします。固定長のデータ型が使用されますが、多くの場合、一定量の記憶領域が無駄になります。ユーザーが入力したデータが不十分で固定長が使用されている場合でも、データはこの固定長で保存されるためです。ただし、この場合、固定長を使用できる場合でも、固定長を使用する必要があります。この場合、ある程度のハードディスク容量が無駄になりますが、データのクエリ速度を向上させることができるためです。

データの軽量化では、どのような状況でもデータベースのパフォーマンスを向上させることはできないことがわかります。これは経費を削減して収益を増やすようなもので、この節約は最先端で節約されるべきです。そうしないと、お金を節約できないだけでなく、自分自身を傷つけることになります。平たく言えば、痩せるべきところは痩せて、ふっくらすべきところはふっくらするということです。この文だけ覚えておいてください。

提案 5: 減量目的を達成するためにテーブルを分割します

アリが食べ物を移動させるとき、食べ物が大きすぎて移動できない場合、アリは移動できるようになるまで食べ物を分割することがあります。これがケーキを分割する原理です。実際、この現象は日常業務でもよく見られます。たとえば、データベース テーブルがある場合、そこに多数のレコードがある場合、テーブルの許容速度は非常に遅くなります。この場合、テーブルは特定のルールに基づいて複数のワークブックに分割できます。たとえば、現在、企業の従業員の勤怠情報のコピーが存在します。このテーブルのクエリ、並べ替え、およびカウントを行うと、待ち時間が非常に長くなります。この時点で、部門ごとに異なるワークブックに分割し、それらに対して関連するデータ分析を実行できます。このとき、ワークロードは大きくなりますが、処理速度ははるかに速くなります

この原則によれば、データベースを最適化するときは、頻繁にスキャンされる大きなテーブルを 2 つ以上の表現に分割することが非常に有益です。たとえば、日常業務では現在、動的フォーマットのデータテーブルがあり、このデータがスキャンテーブルを使用している場合、これを使用して、比較的小さな静的フォーマットテーブル内の関連する行を検索します。

このテーブルの分割により、大きなケーキをいくつかの小さなケーキに分割して、その後のデータ統計と分析を容易にすることができます。もちろん、このエフェクトの質はこの分割のルールに直接関係します。望ましい効果を達成するためにテーブルを分割する方法については、これも比較的大きなトピックです。ここではスペースが限られているため、著者は多くの説明を省略します。おそらく今後の記事で、著者はこの命題をさらに詳しく説明するでしょう。

上記は、データベースの実行を高速化するための MySQL パフォーマンスの最適化の内容です。さらに関連する内容については、PHP 中国語 Web サイト (www.php.cn) に注目してください。


声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
酸性の特性(原子性、一貫性、分離、耐久性)を説明します。酸性の特性(原子性、一貫性、分離、耐久性)を説明します。Apr 16, 2025 am 12:20 AM

酸性属性には、原子性、一貫性、分離、耐久性が含まれ、データベース設計の基礎です。 1.原子性は、トランザクションが完全に成功するか、完全に失敗することを保証します。 2.一貫性により、データベースがトランザクションの前後に一貫性を保証します。 3.分離により、トランザクションが互いに干渉しないようにします。 4.永続性により、トランザクションの提出後にデータが永久に保存されることが保証されます。

MySQL:データベース管理システムとプログラミング言語MySQL:データベース管理システムとプログラミング言語Apr 16, 2025 am 12:19 AM

MySQLは、データベース管理システム(DBMS)であるだけでなく、プログラミング言語にも密接に関連しています。 1)DBMSとして、MySQLはデータを保存、整理、取得するために使用され、インデックスを最適化するとクエリのパフォーマンスが向上する可能性があります。 2)SQLとPythonに埋め込まれたプログラミング言語とSQLalchemyなどのORMツールを使用すると、操作を簡素化できます。 3)パフォーマンスの最適化には、インデックス、クエリ、キャッシュ、ライブラリ、テーブル分割、およびトランザクション管理が含まれます。

MySQL:SQLコマンドでデータの管理MySQL:SQLコマンドでデータの管理Apr 16, 2025 am 12:19 AM

MySQLはSQLコマンドを使用してデータを管理します。 1.基本コマンドには、select、挿入、更新、削除が含まれます。 2。高度な使用には、参加、サブクエリ、および集計関数が含まれます。 3.一般的なエラーには、構文、ロジック、パフォーマンスの問題が含まれます。 4。最適化のヒントには、インデックスの使用、Select*の回避、制限の使用が含まれます。

MySQLの目的:データを効果的に保存および管理しますMySQLの目的:データを効果的に保存および管理しますApr 16, 2025 am 12:16 AM

MySQLは、データの保存と管理に適した効率的なリレーショナルデータベース管理システムです。その利点には、高性能クエリ、柔軟なトランザクション処理、豊富なデータ型が含まれます。実際のアプリケーションでは、MySQLはeコマースプラットフォーム、ソーシャルネットワーク、コンテンツ管理システムでよく使用されますが、パフォーマンスの最適化、データセキュリティ、スケーラビリティに注意を払う必要があります。

SQLとMySQL:関係を理解するSQLとMySQL:関係を理解するApr 16, 2025 am 12:14 AM

SQLとMySQLの関係は、標準言語と特定の実装との関係です。 1.SQLは、リレーショナルデータベースの管理と操作に使用される標準言語であり、データの追加、削除、変更、クエリを可能にします。 2.MYSQLは、SQLを運用言語として使用し、効率的なデータストレージと管理を提供する特定のデータベース管理システムです。

Innodb Redoログの役割を説明し、ログを元に戻します。Innodb Redoログの役割を説明し、ログを元に戻します。Apr 15, 2025 am 12:16 AM

INNODBは、レドログと非論的なものを使用して、データの一貫性と信頼性を確保しています。 1.レドログは、クラッシュの回復とトランザクションの持続性を確保するために、データページの変更を記録します。 2.Undologsは、元のデータ値を記録し、トランザクションロールバックとMVCCをサポートします。

説明出力(タイプ、キー、行、追加)で探す重要なメトリックは何ですか?説明出力(タイプ、キー、行、追加)で探す重要なメトリックは何ですか?Apr 15, 2025 am 12:15 AM

説明コマンドのキーメトリックには、タイプ、キー、行、および追加が含まれます。 1)タイプは、クエリのアクセスタイプを反映しています。値が高いほど、constなどの効率が高くなります。 2)キーは使用されているインデックスを表示し、nullはインデックスがないことを示します。 3)行はスキャンされた行の数を推定し、クエリのパフォーマンスに影響します。 4)追加の情報を最適化する必要があるというFilesortプロンプトを使用するなど、追加情報を提供します。

説明の一時的なステータスを使用し、それを回避する方法は何ですか?説明の一時的なステータスを使用し、それを回避する方法は何ですか?Apr 15, 2025 am 12:14 AM

Temporaryを使用すると、MySQLクエリに一時テーブルを作成する必要があることが示されています。これは、異なる列、またはインデックスされていない列を使用して順番に一般的に見られます。インデックスの発生を回避し、クエリを書き直し、クエリのパフォーマンスを改善できます。具体的には、expliect出力に使用を使用する場合、MySQLがクエリを処理するために一時テーブルを作成する必要があることを意味します。これは通常、次の場合に発生します。1)個別またはグループビーを使用する場合の重複排除またはグループ化。 2)Orderbyに非インデックス列が含まれているときに並べ替えます。 3)複雑なサブクエリを使用するか、操作に参加します。最適化方法には以下が含まれます。1)OrderbyとGroupB

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

DVWA

DVWA

Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、

VSCode Windows 64 ビットのダウンロード

VSCode Windows 64 ビットのダウンロード

Microsoft によって発売された無料で強力な IDE エディター

SublimeText3 Linux 新バージョン

SublimeText3 Linux 新バージョン

SublimeText3 Linux 最新バージョン

AtomエディタMac版ダウンロード

AtomエディタMac版ダウンロード

最も人気のあるオープンソースエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい