高度はInnoDBストレージエンジンの在庫を備え

最も一般的に使用されるストレージエンジンとしてのInnoDBのMySQLデータベースは、自然にそのユニークな特性の多くが含まれています。メモリ、のMyISAMエンジンの全てより重要な特性と比較して、InnoDBがように行レベルのロック、トランザクションなどをサポートします。

この記事意志インベントリ次のInnoDB処理トランザクションと行レベルのロックよりも高度な機能

 

まず、適応ハッシュ

InnoDBの唯一のB +ツリーインデックスを確立することができるインデックスを付ける場合、それらはソート、検索結果の範囲を達成することができないが、ハッシュインデックス、およびB +ツリーインデックスに対するハッシュインデックスを作成するが、されていないときの等価検索mMの間違いなくB +ツリーインデックスより効率がはるかに高いではありません。

だから、B +ツリーインデックス根拠に基づいてInnoDBのが、自分自身を作成するために、実行時にInnoDBストレージエンジンによって、また適応ハッシュインデックスが追加されますが、このインデックスを手動で作成することができない、それはユーザーに対して透過的です。

InnoDBは、ヒープ上のセカンダリインデックスのルックアップテーブルを監視する場合、あなたが頻繁にアクセスするセカンダリインデックスを見つけた場合、そのは、このセカンダリインデックスデータの焦点である、このセカンダリインデックスのハッシュインデックスを作成し、それを次の時間を取得しますこれは、ハッシュインデックスを通じて直接取得することができます。

InnoDBは、最近の三つの連続セカンダリインデックスは、ホットデータをアクセスされていると思いますが、それは自動的にハッシュインデックスを作成します。

ハッシュインデックスの長所と短所は明白です:

全くメンテナンスマン、自分のメンテナンスをINNODB;同等のクエリはB +ツリー高い検索効率を取得するより多くの時間がより効率:利点がありません

不利な点は次のとおりです。InnoDBのバッファプールの一部を占有します。のみ、適切な同等のクエリ、範囲クエリをサポートしていません。極端な場合にのみ効果的、継続的に同じインデックスが無効な読んでいない場合

 

第二に、バッファ挿入(挿入バッファ)

挿入したキャッシュは、非クラスタ化インデックス用語に向けられている一般的に、それは最初のinsert文に挿入された後に完了したバッチの実行中に、ページデータが背後にあると、実質的にすべてに配置され、シーケンシャルとしてインデックスをクラスタ化されています先読みデータベースの特性に応じて、同じページまたは隣接したページ内のデータ。

だから、一括挿入は、データのみの挿入部分を完了するために、1ページをロードする必要がある場合。しかし、非クラスタ化インデックスのインデックスは、ディスクリート、基本的に乱れています。ですから、非クラスタ化インデックスページへの個別のアクセスを挿入する必要があるたびに、明らかにパフォーマンスの挿入を低減します。

したがって、この問題を解決するInnoDBのためには、挿入または更新非クラスタ化インデックスのための新たなキャッシュ機能を挿入することで、更新は、インデックスページに直接ではなく、あなたの場合は非クラスタ化インデックスの最初の判断は、バッファプールの存在を更新します直接プールに、バッファプールにない最初のが存在しない場合。

そして、非クラスタ化インデックスページのマージ操作のいくつかの周波数データ・キャッシュとバッファプールで。ページインデックスので、それは多くの場合、挿入操作を複数に組み合わせることができ、非クラスタ化インデックスページのIO操作を低減します。

 

緩衝液条件を挿入します。

1、インデックスがでなければならない非クラスタ化インデックス(クラスタ化インデックスが発注され、キャッシュなし)

図2に示すように、インデックスだけではない(のみの場合は意味がない、唯一のIOの数を減少させ、遅延の効果を得ることができます)

 

キャッシュ欠点の挿入は、バッファプールのスペース部の必要性を構成することが可能であるIBUF_POOL_SIZE_PRE_MAX_SIZEのような3値の、唯一最大バッファ・プール・スペースとして、構成を1/3

第三に、第二の書き込み(ダブル書き込み)

主に信頼性のInnoDBを高めるために二重の書き込みは、データが失われないことを確認してください。

2つの部分に分割される:二重書き込みバッファメモリ、2Mのサイズ、ディスクテーブル上の共有空間の一部である(ibdata)は、2つの連続した領域に、即ち128は、サイズが2Mであります

ダーティページをリフレッシュするために、データ・バッファ・プールをトリガー1は、ディスクファイルに直接書き込まれますが、中の二重書き込みバッファへの最初のコピーされていません

各二重書き込みバッファ書き込み1Mから2回に分けて共有スペーステーブル(記憶された連続シーケンシャル書き込み効率)でディスクに書き込まれ、その後2、及び

第二段階が完了し、次にダブルダーティページ書き込みデータがバッファに書き込まれる図3は、実際のファイル(離散書き込み)テーブル空間、データの完了が持続ダブルデータ書き込み領域をマークすることができる後のダーティページをカバーすることができますA。

 

なぜ二重書き込み:

1、IO上の最小単位は、順序が8Kである、MySQLは16Kであるものである。IOファイルシステムの最小単位は4Kで、他1Kながら、ディスクIOの最小単位は512バイトであります

必要性は、それぞれ4Kであると仮定すると、ディスク・ファイルへのデータのダーティページ16Kを書く2は、その後、あなたはブラシを完了するために、4倍の物理ディスク書き込み操作を必要としています。

3.システムに障害が発生し、二回物理的な書き込みを行った後ならば、それは(データページが壊れている)ディスクは、不完全なデータページに書かれている原因になります

4、システムの復旧には、唯一の古い追加できるREDOログ、データの不整合が(レコードはページへの物理的な変化をあるREDOログ引き起こす可能性があり、壊れたデータページを修復することはできません、データ復旧ダーティなブロックの全ページをご確認ください)

 

二重書き込みクラッシュリカバリ

オペレーティングシステムは、ディスク・プロセスのダウンタイムでページを書くためにした場合、回復時間は、表スペース・ファイルにコピーし、ダブル書き込みファイル共有テーブルスペースからページの最新のコピーで見つけることができ、その後のREDOログを完了することができますリカバリ操作。

なぜあなたは、二重書き込み、それによってログを記述する必要はありませんか?ログは512バイト単位で書き込まれたので、データの破損の問題がないので。

 

では、なぜそれの二重書き込みデータページから直接書き込めませんか?

ファイルは、二重書き込み、および個別のデータページをあるのでキャッシュは高速ですから、明らかに直接データページを書き込みされていない書き込みデータ・ページ内の二重書き込みデータから読み込まれます。

 

第四に、バッファプール(InnoDBのバッファプール)

InnoDBは、最近訪問したキャッシュデータとインデックスのメモリ内に複数のバッファプールを維持します。次のようにメインプールが配置されています。

innodb_buffer_pool_size:バッファー・プール・サイズは、システム全体のメモリの80%に推奨される70%を配置しました

innodb_buffer_pool_instance:バッファプールの数は、CPUコアの数を設定することをお勧めします

innodb_flush_log_at_trx_commit:1に設定されたデータバッファプールブラシプレートが、データが失われない方法2は1秒の最大損失に設定し、より高い性能さ(MySQLサービスは、データの損失なしにハングアップ、データの損失のみ機械のダウンタイム)

 

 

バッファー・プール・メモリー管理:

内部バッファプールの管理データリスト、データのうち、LRUアルゴリズム(最近は訪れていない)を使用して、バッファプールゆっくりと、そしてデータが最近アクセスされていませんが削除されます。バッファプールを挿入したとき、それは頭のリストを挿入されていませんまたは尾が、リストには、中間に挿入され、

データはホットヘッドなので、尾は非常に合理的な中央に保険契約の新しいデータを使用して、データから出てきています。リストには、ページ単位で格納されるので、挿入および欠失は、ページ単位に基づいています。

5/8の全く新しいリストのリストとしてLRUアルゴリズム;古いリストの他の部分と3/8;古いリストは、データの可能性が排除されている、データの古いリストがアクセスする場合は、新しいリストに挿入されます頭部へ

 

そうInnoDBのバッファプール動作はほとんど常に達成される、次いで更新を直接バッファ・プール内のデータを更新されて次のステップは、リフレッシュする特定の周波数を押し、プールバッファへのデータディスクをロードディスク。

 

もう一つの特徴は、IO操作InnoDBが、後で1つまたは複数のページをロードしたときにプール先読み、先読み機能が実行され、バッファプールにデータをロードするには、次のページにデータをロードする必要がある時、事前ことが期待されていますIO操作が再び下に回避されます

2つのアルゴリズム先読みプリフェッチポイント:先読みとランダム線形プリフェッチ

リニアプリフェッチ:ページが順次プリフェッチ、先読みページ数を設定することによって提供することができるだろう

控えランダムリード:ページ(範囲)や、ロードされた後、ページが数ページのすべてのエクステントがバッファプールにロードされます

 

おすすめ

転載: www.cnblogs.com/jackion5/p/11261394.html