10bet网址
MySQL 5.6リファレンスマニュアル
本手册下载
PDF (Ltr)- 26.8 mb
PDF (A4)- 26.8 mb


MySQL 5.6リファレンスマニュアル/.../ デフォルトのMySQLストレジエンジンとしてのInnoDB . txt

14.1.1デフォルトのMySQLストレInnoDB

MySQLは,使いやすく,高いパフォマンスと拡張性を実現するという評価を勝得ています。MySQL 5.5よりも前では,MyISAMがデフォルトのストレジエンジンでした。我々の経験上,ほとんどのユザはデフォルト設定を変更しませんでした。MySQL 5.5以上では,InnoDBがデフォルトのストレジエンジンです。やはりほとんどのユザがデフォルト設定を変更しないと予想されます。ただし,InnoDBを使用すれば,デフォルト設定でもユザがRDBMSから期待する利点(トランザクション,参照整合性,およびクラッシュリカバリが得られます。InnoDBテーブルを使用してMySQLユーザー,DBA,または開発者としての生活を改善する方法を探ってみましょう。

ストレジエンジンの使用傾向

MySQLの成長期の1年目には,初期のWebベースのアプリケーションによって並列性と可用性の限界が押し広げられることはありませんでした。近年では,ハ。MySQLのパフォーマンスの限界を押し広げているユーザーは,信頼性やクラッシュリカバリに多くの関心を持っています。MySQLデタベスは,大規模で,高負荷で,強固で,分散型で,重要です。

InnoDBは,このようなユザの最優先事項に対処します。ストレジエンジンの使用傾向は,より拡張可能なInnoDBの方へシフトしています。MySQL 5.5は;InnoDBをデフォルトのストレジエンジンにするための論理遷移リリスでした。

MySQLは,以前はMyISAMテブルが必要だったユスケスへの対処に取り組み続けています。MySQL 5.6以上には,次のような特性があります。

デフォルトのMySQLストレジエンジンとしてのInnoDBの重要性

MySQL 5.5.5以降,新しいテブル用のデフォルトのストレジエンジンはInnoDBです。この変更は,新たに作成されたテ,ブルの中で,= MyISAM引擎などの句を使用してストレジエンジンが指定されていないものに適用されます。MySQL 5.5は;MyISAMが使用されているテブルがInnoDBに切り替えることによる利点を得られるかどうかを評価するための論理ポ邮箱ントになる可能性があります。

MySQL内部仕様の一部が実装されているmysqlおよびinformation_schemaデタベスでは,引き続きMyISAMが使用されます。特に,付与テ,ブルを切り替えても,InnoDBを使用できません。

InnoDBテブルの利点

MyISAMテブルを使用しているが,技術的な理由でそれらに関与していない場合は,InnoDBテブルを使用すると,さらに便利な点が数多く見。

  • ハードウェアまたはソフトウェアの問題が原因でサーバーがクラッシュした場合でも,その時点でデータベースに何が発生していたのかには関係なく,データベースの再起動後に特別なことは何もする必要がありません。InnoDBクラッシュリカバリを使用すると自動的に,クラッシュ時の前にコミットされた変更はすべて完了し,処理中だったがコミットされなかった変更はすべて取り消されます。単に再起動し,終了した場所から続行するだけです。MySQL 5.1以前よりも大幅に高速になりました。

  • InnoDBバッファプルにキャッシュされます。頻繁に使用されるデタは,直接メモリから処理されます。このキャッシュは非常に数多くのタプの情報に適用され,これにより処理速度が大幅に上がります。その結果,専用のデタベ80%がInnoDBのバッファプルに割り当てられます。

  • 関連デタをさまざまなテブルに分割すると,強制的に参照整合性が適用される外部キを設定できます。デタを更新または削除すると,ほかのテタも自動的に更新または削除されます。プライマリテーブル内に対応するデータが存在しないセカンダリテーブルにデータを挿入しようとすると,自動的に不正なデータが除外されます。

  • ディスク上またはメモリ内のデタが破損した場合は,偽のデタを使用する前に,チェックサムメカニズムによって警告が発行されます。

  • テブルごとに適切な主キーカラムを持。在哪里句、命令句、集团句,および結合操作では,主キカラムへの参照が非常に高速です。

  • 挿入,更新,および削除は,変更バッファリングと呼ばれる自動化メカニズムによって最適化されます。InnoDBでは,同じテーブルへの並列読み取りおよび書き込みアクセスが許可されているだけでなく,ディスクI / Oが効率化されるように変更されたデータがキャッシュに入れられます。

  • パフォマンスの利点は,長時間実行されるクエリブルだけに限定されません。同じ行が1のテブルから何度もアクセスされると,適応型ハッシュ邮箱ンデックスと呼ばれる機能に引き継がれ,ハッシュテーブルから読み取られたかのように,これらの検索がさらに高速になります。

InnoDBテブルのベストプラクティス

長期間InnoDBを使用していれば,すでにトランザクションや外部キ。そうでない場合は,この章全体でこれらにいて参照してください。手短に言えば,次のとおりです。

  • もっとも頻繁にクエリが実行されるカラム(複数の場合あり)を使用しているすべてのテブルに,主キーを指定します。明示的な主キが存在しない場合は,自動邮箱ンクリメント値を指定します。

  • 複数のテブルにある同じid値に基づいて,それらのテ,結合の概念を取り入れます。結合のパフォーマンスを高速にするには、結合カラム上に外部キを定義し,各テブル内でそれらのカラムを同じデタ型で宣言します。また,外部キーを使用すると,影響を受けるすべてのテーブルに削除または更新が反映され,親テーブルに対応するIDが存在しない場合は,子テーブル内のデータの挿入が回避されます。

  • 自動コミットをオフにします。1秒間に何百回もコミットすると、パフォーマンスに上限が設定されます (これは、ストレージデバイスの書き込み速度で制限されます)。

  • 関連するDML操作のセットを开始事务提交ステトメントで囲むことで,トランザクションにグルプ化します。頻繁にはコミットしたくない一方で,コミットなしで何時間も実行される插入更新,または删除ステトメントの巨大なバッチも発生させたくありません。

  • 锁表ステトメントの使用を停止します。InnoDBは,一度に同じテーブルへのすべての読み取りおよび書き込みを行うことで,信頼性や高パフォーマンスを犠牲にせずに,複数のセッションを処理できます。行のセットへの排他的な書き込みアクセス権を取得するには,选择……更新という構文を使用して,更新対象の行のみをロックします。

  • innodb_file_per_tableオプションを有効にして,単一の巨大なシステムテブルスペス内の代わりに,個別のファ。この設定は,テブルの圧縮および高速の切り捨てなどのその他の機能の一部を使用する際に必要となります。

  • 使用中のデタおよびアクセスパタンによって,创建表ステトメントで新しいInnoDBテブルの圧縮機能 (ROW_FORMAT =压缩からの利点が得られるかどうかを評価します。読み取りおよび書き込みの機能を犠牲にせずに,InnoDBテブルを圧縮できます。

  • オプション——sql_mode = NO_ENGINE_SUBSTITUTIONを付けてサバを実行して,创建表引擎=句で指定されたストレージエンジンで問題が発生した場合に,別のストレージエンジンを使用してテーブルが作成されないようにします。

InnoDBテブルに対する最近の改善点

  • テブルおよび関連付けられた。

  • 以前よりも大幅に小さいパフォマンスや可用性への影響度で,ンデックスを作成および削除できます。

  • テブルの切り捨てが大幅に高速になり,InnoDBでのみ再使用される可能性のあるシステムテーブルスペース内の領域を解放するのではなく,オペレーティングシステムで再使用されるディスク領域を解放できます。

  • 动态行フォーマットを使用することで,テーブルデータのストレージレイアウトがBLOBおよび長いテキストフィールドでより効率的になりました。

  • INFORMATION_SCHEMAテブルでクエリを実行することで,ストレジエンジンの内部動作をモニタできます。

  • performance_schemaテブルでクエリを実行することで,ストレできます。

  • パフォマンスに関して多くの改善点があります。特に,クラッシュリカバリ,つまりデータベースが再起動するときにすべてのデータを自動的に整合させる処理の速度および信頼性が向上しました(InnoDBユザが従来経験してきた速度よりずっと高速です)。デタベスが大きいほど,大幅に速度が向上します。

    ほとんどの新しいパフォマンス機能は自動的です。そうでない場合でも,必要なことは,多くても構成オプションの値を設定するだけです。詳細は,セクション14.13 " InnoDBのパフォマンス"を参照してください。アプリケションコドで適用できるInnoDB固有のチュニング技術にいては,セクション8.5 " InnoDBテブルの最適化"を参照してください。上級ユザは,セクション14.12 " InnoDBの起動オプションおよびシステム変数"を再確認してください。

デフォルトのストレジエンジンとしてInnoDBを使用したテストおよびベンチマク

MySQL 5.1以前からMySQL 5.5以降へのアップグレードが完了する前でも,データベースサーバーまたはアプリケーションでデフォルトのストレージエンジンとして,InnoDBが正常に動作するかどうかをプレビュできます。以前のMySQLリリスでデフォルトのストレジエンジンとしてInnoDBを設定するには,コマンド行で——default-storage-engine = InnoDBを指定するか,またはmy.cnfファ邮箱ルの(mysqld)セクションにdefault-storage-engine = innodbを追加してから,サバを再起動します。

デフォルトのストレージエンジンを変更しても,新たに作成されたテーブルしか影響を受けないため,アプリケーションのインストールおよび設定ステップをすべて実行して,すべてが正しくインストールされたことを確認します。次に,すべてのアプリケーション機能を実行して,データのロード,編集,およびクエリー機能がすべて動作することを確認します。テブルが一部のMyISAM固有の機能に依存している場合は,エラが受信されます。エラを回避するには,= MyISAM引擎句を创建表ステトメントに追加します(たとえば,全文検索に依存するテブルは)InnoDBテブルではなく,MyISAMテブルにする必要があります)。

ストレジエンジンにいて慎重な決定を行わなかった場合に,特定のテブルがInnoDBで作成されたときにどのように動作するのかをプレビュするには,テブルごとに修改表table_name =InnoDB;コマンドを発行します。また,元のテーブルを配布せずに,テストクエリーおよびその他のステートメントを実行するには,次のようなコピーを作成します。

创建InnoDB_Table表SELECT * FROM MyISAM_Table;

MySQL 5.5以上には,非常に多くのInnoDBのパフォーマンス拡張機能があるため,現実的なワークロードで完全なアプリケーションを使用したときのパフォーマンスについて正確な考察を得るには,最新のMySQLサーバーをインストールして,ベンチマークを実行してください。

完全なアプリケーションのライフサイクル(インストールから頻繁な使用まで),およびサーバーの再起動をテストします。電源障害のシミュレーションを行うために,データベースの負荷が高いときにサーバープロセスを強制終了し,サーバーの再起動時にデータが正常にリカバリされるかどうかを確認します。

特に,マスターおよびスレーブ上でさまざまなMySQLバージョンやオプションを使用している場合は,レプリケーション構成をテストします。

InnoDBがデフォルトのストレジエンジンであるかどうかの確認

古いMySQLを使用して假设テストを行うのか,最新のMySQLを使用して包括的なテストを行うのかに関係なく,InnoDBのステタスを確認する方法は,次のとおりです。

  • 显示引擎;コマンドを発行して,さまざまなMySQLストレジエンジンをすべて表示します。InnoDB行で默认的を探します。

  • InnoDBがまったく存在しない場合は,InnoDBのサポトなしでコンパmysqldバereplicationナリがあるため,別のバereplicationナリを入手する必要があります。

  • InnoDBは存在するが,無効になっている場合は,起動オプションおよび構成ファ,ルまで戻って,すべてのskip-innodbオプションを削除します。


本手册下载
PDF (Ltr)- 26.8 mb
PDF (A4)- 26.8 mb