ホームページ データベース mysql チュートリアル MySQL 最適化のための InnoDB 最適化コードの詳細な説明

MySQL 最適化のための InnoDB 最適化コードの詳細な説明

Mar 16, 2017 pm 02:26 PM

InnoDB は、Mysql が大量のデータを処理するときに最大のパフォーマンスが得られるように設計されています。その CPU 効率は、おそらく他のディスクベースのリレーショナル データベース エンジンに匹敵しません。 Innodb は、大量のデータを扱う Web サイトやアプリケーションの間で非常に人気があります。その場合、最適化する必要はありません。答えは明らかです。もちろんそうではありません。 ! !

勉強計画は簡単に中断されますが、それを継続するのも簡単ではありません。最近社内で会議があり、事業の方向性を調整する必要があり、Node

JSを学ぶことを勧められました。 NodeJS については以前から少し知っていましたが、詳しくは勉強していませんでした。 Node の構文は基本的にクライアント側 JS と同じです。過去 6 か月間、クライアント側のものはほとんど開発されていません。 JS の基本的な知識は十分にありましたが、この知識については不慣れでした。知識は頻繁に使わないとすぐに忘れてしまうようです。そこで改めてJSの関連知識を復習してみました。 Nodeのサーバーとソケットの知識を学びました。 MySQL の計画は保留になり、午前中は食べたり飲んだり寝たりして、午後まで起きていました。さっそく、MySQL の最適化シリーズを続けてみましょう。今回は InnoDB の最適化項目を見てみましょう。 InnoDB のメイン index

は、クラスター化インデックス、インデックスとデータの共通のテーブル スペースです。 InnoDB の場合、データはインデックスであり、インデックスはデータです。 InnoDB のキャッシュ メカニズムと MyISAM の最大の違いは、InnoDB がインデックスをキャッシュするだけでなく、データもキャッシュすることです。

1. InnoDB キャッシュ プール InnoDB バッファ プール (InnoDB バッファ プール) は、データ、インデックス、さらにはその他の管理データ (メタデータ、行レベルのロック) をキャッシュすることができます。 。 「innodb%pool%」などの show 変数を使用して、関連するパラメーター オプションを表示できます。

mysql> show variables like 'innodb%pool%';
+-------------------------------------+----------------+
| Variable_name            | Value     |
+-------------------------------------+----------------+
| innodb_additional_mem_pool_size   | 8388608    |
| innodb_buffer_pool_dump_at_shutdown | OFF      |
| innodb_buffer_pool_dump_now     | OFF      |
| innodb_buffer_pool_filename     | ib_buffer_pool |
| innodb_buffer_pool_instances    | 8       |
| innodb_buffer_pool_load_abort    | OFF      |
| innodb_buffer_pool_load_at_startup | OFF      |
| innodb_buffer_pool_load_now     | OFF      |
| innodb_buffer_pool_size       | 134217728   |
+-------------------------------------+----------------+
ログイン後にコピー
innodb_buffer_pool_size

innodb_buffer_pool_size は、InnoDB キャッシュ プール (InnoDBBufferPool) のサイズを設定するために使用されます。デフォルト値は、InnoDB の全体的なパフォーマンスに大きな影響を与えます。現在の MySQL サーバーが専用の場合 MySQL サービスとして使用する場合は、このパラメーターのサイズを可能な限り増やすことができます。


innodb_buffer_pool_instance

innodb_buffer_pool_instance のデフォルト値は 1 です。これは、InnoDB キャッシュ プールが 1 つの領域に分割されることを意味します。これは、InnoDB の同時実行パフォーマンスを向上させることができます。

innodb_Additional_mem_pool_size

データ ディクショナリやその他の内部データを保存するために InnoDB が使用するキャッシュ サイズを指定します。デフォルト値は 2M であり、このパラメータのサイズは適切に増加する必要があります。

2. InnoDB キャッシュ プールの内部構造

InnoDB は、データとインデックスをキャッシュするためにメモリ内にキャッシュ プールを維持します。キャッシュ プールは、非常に長いリンク リスト (

リスト

) として考えることができます。リンク リストは 2 つのサブリンク リストに分かれており、1 つのサブリンク リストには古いページ データが保存されます。他のサブリンク リストには、

new

ページが保存されます。新しいページは、最近アクセスされたデータ ページです。古いページは、デフォルトでリンク リスト全体のサイズの 37% を占めます。これは、innodb_old_blocks_pct パラメーターを通じて表示できます。

mysql> show variables like 'innodb_old_blocks%';
+------------------------+-------+
| Variable_name     | Value |
+------------------------+-------+
| innodb_old_blocks_pct | 37  |
| innodb_old_blocks_time | 1000 |
+------------------------+-------+
ログイン後にコピー
古いページと新しいページの交差点は、中間点と呼ばれます。 ユーザーがデータにアクセスすると、InnoDB はまず InnoDB キャッシュ内のデータを検索します。キャッシュ プールにデータがない場合、InnoDB はハードディスクからデータを InnoDB キャッシュ プールに挿入します。フルの場合、LRU アルゴリズムを使用して期限切れの古いデータがクリアされます

3. InnoDB キャッシュ プールのウォームアップ。

MySQL サーバーが一定期間起動された後、InnoDB は頻繁にアクセスされるデータ (ビジネス データ、管理データ) を InnoDB キャッシュに置きます。つまり、InnoDB キャッシュ プールには頻繁にアクセスされるデータ (ホット データと呼ばれます) が格納されます。 )。 InnoDB キャッシュ プールのサイズが数十ギガバイトまたは数百ギガバイトの場合、MySQL を再起動する場合、以前の InnoDB キャッシュ プールのホット データを InnoDB キャッシュ プールにロードするとどうなるでしょうか。

InnoDB キャッシュ プールを予熱するために InnoDB 自体にのみ依存する場合、ビジネスが忙しいシステムの場合、長時間のハングアップは重大な運用上の事故であり、許容できません。幸いなことに、MySQL バージョン 5.6 は、サービスのシャットダウン時に、まずハードディスク内のホット データを InnoDB キャッシュにロードすることによってホット データをハードディスクに保存することをサポートしています。これにより、ウォームアップ時間が短縮され、ビジー状態の同時実行性が向上します。ビジネスの時間効率。

mysql> show variables like '%innodb%pool%';
+-------------------------------------+----------------+
| Variable_name            | Value     |
+-------------------------------------+----------------+
| innodb_additional_mem_pool_size   | 8388608    |
| innodb_buffer_pool_dump_at_shutdown | OFF      |
| innodb_buffer_pool_dump_now     | OFF      |
| innodb_buffer_pool_filename     | ib_buffer_pool |
| innodb_buffer_pool_instances    | 8       |
| innodb_buffer_pool_load_abort    | OFF      |
| innodb_buffer_pool_load_at_startup | OFF      |
| innodb_buffer_pool_load_now     | OFF      |
| innodb_buffer_pool_size       | 134217728   |
+-------------------------------------+----------------+
ログイン後にコピー

innodb_buffer_pool_dump_at_shutdown

パラメータを有効にして MySQL サービスを停止すると、InnoDB キャッシュ内のホット データがハードディスクに保存されます。


innodb_buffer_pool_load_at_starup

默认是关闭的,如果开启该参数,启动MySQL服务时,MySQL将本地硬盘的热数据加载到InnoDB缓存池中。

innodb_buffer_pool_dump_now

默认关闭,如果开启该参数,停止MySQL服务时,以手动方式将InnoDB缓存池中的热数据保存到本地硬盘。

innodb_buffer_pool_load_now

默认关闭,如果开启该参数,启动MySQL服务时,以手动方式将本地硬盘的数据加载到InnoDB缓存池中,

innodb_buffer_pool_filename

如果开启InnoDB预热功能,停止MySQL服务是,MySQL将InnoDB缓存池中的热数据保存到数据库根目录下,默认文件名是这个参数的值。

开启InnoDB缓存后,可以使用如下命令查看当前InnoDB缓存池预热的状态信息:


show status like 'innodb_buffer%';
+---------------------------------------+-------------+
| Variable_name             | Value    |
+---------------------------------------+-------------+
| Innodb_buffer_pool_dump_status    | not started |
| Innodb_buffer_pool_load_status    | not started |
| Innodb_buffer_pool_pages_data     | 218     |
| Innodb_buffer_pool_bytes_data     | 3571712   |
| Innodb_buffer_pool_pages_dirty    | 0      |
| Innodb_buffer_pool_bytes_dirty    | 0      |
| Innodb_buffer_pool_pages_flushed   | 1      |
| Innodb_buffer_pool_pages_free     | 7973    |
| Innodb_buffer_pool_pages_misc     | 0      |
| Innodb_buffer_pool_pages_total    | 8191    |
| Innodb_buffer_pool_read_ahead_rnd   | 0      |
| Innodb_buffer_pool_read_ahead     | 0      |
| Innodb_buffer_pool_read_ahead_evicted | 0      |
| Innodb_buffer_pool_read_requests   | 1497    |
| Innodb_buffer_pool_reads       | 219     |
| Innodb_buffer_pool_wait_free     | 0      |
| Innodb_buffer_pool_write_requests   | 1      |
+---------------------------------------+-------------+
ログイン後にコピー

这里面的英语都比较简单,就不解释了。

四、InnoDB实时监控

mysql> show engine innodb status\G
ログイン後にコピー

以上がMySQL 最適化のための InnoDB 最適化コードの詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホット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ヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

MySQL:簡単な学習のためのシンプルな概念 MySQL:簡単な学習のためのシンプルな概念 Apr 10, 2025 am 09:29 AM

MySQLは、オープンソースのリレーショナルデータベース管理システムです。 1)データベースとテーブルの作成:createdatabaseおよびcreateTableコマンドを使用します。 2)基本操作:挿入、更新、削除、選択。 3)高度な操作:参加、サブクエリ、トランザクション処理。 4)デバッグスキル:構文、データ型、およびアクセス許可を確認します。 5)最適化の提案:インデックスを使用し、選択*を避け、トランザクションを使用します。

phpmyadminを開く方法 phpmyadminを開く方法 Apr 10, 2025 pm 10:51 PM

次の手順でphpmyadminを開くことができます。1。ウェブサイトコントロールパネルにログインします。 2。phpmyadminアイコンを見つけてクリックします。 3。MySQL資格情報を入力します。 4.「ログイン」をクリックします。

MySQL:世界で最も人気のあるデータベースの紹介 MySQL:世界で最も人気のあるデータベースの紹介 Apr 12, 2025 am 12:18 AM

MySQLはオープンソースのリレーショナルデータベース管理システムであり、主にデータを迅速かつ確実に保存および取得するために使用されます。その実用的な原則には、クライアントリクエスト、クエリ解像度、クエリの実行、返品結果が含まれます。使用法の例には、テーブルの作成、データの挿入とクエリ、および参加操作などの高度な機能が含まれます。一般的なエラーには、SQL構文、データ型、およびアクセス許可、および最適化の提案には、インデックスの使用、最適化されたクエリ、およびテーブルの分割が含まれます。

なぜMySQLを使用するのですか?利点と利点 なぜMySQLを使用するのですか?利点と利点 Apr 12, 2025 am 12:17 AM

MySQLは、そのパフォーマンス、信頼性、使いやすさ、コミュニティサポートに選択されています。 1.MYSQLは、複数のデータ型と高度なクエリ操作をサポートし、効率的なデータストレージおよび検索機能を提供します。 2.クライアントサーバーアーキテクチャと複数のストレージエンジンを採用して、トランザクションとクエリの最適化をサポートします。 3.使いやすく、さまざまなオペレーティングシステムとプログラミング言語をサポートしています。 4.強力なコミュニティサポートを提供し、豊富なリソースとソリューションを提供します。

単一のスレッドレディスの使用方法 単一のスレッドレディスの使用方法 Apr 10, 2025 pm 07:12 PM

Redisは、単一のスレッドアーキテクチャを使用して、高性能、シンプルさ、一貫性を提供します。 I/Oマルチプレックス、イベントループ、ノンブロッキングI/O、共有メモリを使用して同時性を向上させますが、並行性の制限、単一の障害、および書き込み集約型のワークロードには適していません。

MySQLおよびSQL:開発者にとって不可欠なスキル MySQLおよびSQL:開発者にとって不可欠なスキル Apr 10, 2025 am 09:30 AM

MySQLとSQLは、開発者にとって不可欠なスキルです。 1.MYSQLはオープンソースのリレーショナルデータベース管理システムであり、SQLはデータベースの管理と操作に使用される標準言語です。 2.MYSQLは、効率的なデータストレージと検索機能を介して複数のストレージエンジンをサポートし、SQLは簡単なステートメントを通じて複雑なデータ操作を完了します。 3.使用の例には、条件によるフィルタリングやソートなどの基本的なクエリと高度なクエリが含まれます。 4.一般的なエラーには、SQLステートメントをチェックして説明コマンドを使用することで最適化できる構文エラーとパフォーマンスの問題が含まれます。 5.パフォーマンス最適化手法には、インデックスの使用、フルテーブルスキャンの回避、参加操作の最適化、コードの読み取り可能性の向上が含まれます。

MySQLの場所:データベースとプログラミング MySQLの場所:データベースとプログラミング Apr 13, 2025 am 12:18 AM

データベースとプログラミングにおけるMySQLの位置は非常に重要です。これは、さまざまなアプリケーションシナリオで広く使用されているオープンソースのリレーショナルデータベース管理システムです。 1)MySQLは、効率的なデータストレージ、組織、および検索機能を提供し、Web、モバイル、およびエンタープライズレベルのシステムをサポートします。 2)クライアントサーバーアーキテクチャを使用し、複数のストレージエンジンとインデックスの最適化をサポートします。 3)基本的な使用には、テーブルの作成とデータの挿入が含まれ、高度な使用法にはマルチテーブル結合と複雑なクエリが含まれます。 4)SQL構文エラーやパフォーマンスの問題などのよくある質問は、説明コマンドとスロークエリログを介してデバッグできます。 5)パフォーマンス最適化方法には、インデックスの合理的な使用、最適化されたクエリ、およびキャッシュの使用が含まれます。ベストプラクティスには、トランザクションと準備された星の使用が含まれます

SQLが行を削除した後にデータを回復する方法 SQLが行を削除した後にデータを回復する方法 Apr 09, 2025 pm 12:21 PM

データベースから直接削除された行を直接回復することは、バックアップまたはトランザクションロールバックメカニズムがない限り、通常不可能です。キーポイント:トランザクションロールバック:トランザクションがデータの回復にコミットする前にロールバックを実行します。バックアップ:データベースの定期的なバックアップを使用して、データをすばやく復元できます。データベーススナップショット:データベースの読み取り専用コピーを作成し、データが誤って削除された後にデータを復元できます。削除ステートメントを使用して注意してください:誤って削除されないように条件を慎重に確認してください。 WHERE句を使用します:削除するデータを明示的に指定します。テスト環境を使用:削除操作を実行する前にテストします。

See all articles