10bet网址
MySQL 5.6リファレンスマニュアル
下载本手册

14.3 InnoDBの構成

InnoDB構成について最初に決定することは,InnoDBデータファイルのレイアウト方法,およびInnoDBストレージエンジン用に割り当てるメモリーの量です。これらの選択を記録するには,起動時にMySQLで読み取られる構成ファイル内に記録するか,または起動スクリプトのコマンド行オプションとして指定します。オプション,説明,および許可されるパラメ,タ値の完全なリストにセクション14.12 " InnoDBの起動オプションおよびシステム変数"を参照してください。

InnoDBテブルスペスおよびログファルの概要

InnoDBストレージエンジンで管理されている2つの重要なディスクベースのリソースは,そのテーブルスペースデータファイルとログファイルです。InnoDB構成オプションを指定しない場合は,MySQLによってMySQLデータディレクトリ内に,わずかに12 mバイトよりも大きいibdata1という名前の自動拡張デタファルと,ib_logfile0およびib_logfile1という名前の2のログファルが作成されます。これらのサ电子邮箱ズは,innodb_log_file_sizeシステム変数のサ@ @ズで指定されます。適切なパフォ,マンスを実現するには,次の例で説明するように,InnoDBパラメ,タを明示的に指定します。当然,ハ,ドウェアおよび要件に合うように設定を編集します。

ここで示す例は代表的なものです。InnoDBに関連する構成パラメタに関する追加情報にいては,セクション14.12 " InnoDBの起動オプションおよびシステム変数"を参照してください。

ストレジデバスに関する考慮事項

場合によっては,一部のデータが同じ物理ディスク上に配置されてない場合に,データベースのパフォーマンスが改善されることがあります。非常に多くの場合,ログファイルをデータとは別のディスク上に配置すると,パフォーマンスの改善に役立ちます。次の例で,この方法を示します。2つのデータファイルが別々のディスク上に配置され,ログファイルが3台目のディスク上に配置されています。InnoDBでは,1番目のデタファルから順番にテブルスペスに収容されます。InnoDBデータファイルとして,原始ディスクパーティション(原始デバイス)を使用することもできます。これにより,i / oの速度が上がる可能性があります。セクション14.5.8 "共有テ,ブルスペ,スでのrawディスクパ,ティションの使用"を参照してください。

注意

InnoDBはトランザクションセーフな(酸に準拠した)MySQL用のストレージエンジンであり,ユーザーデータを保護するためのコミット,ロールバック,およびクラッシュリカバリ機能を備えています。ただし,ベ,スとなるオペレ,ティングシステムやハ,ドウェアが公表どおりに機能しない場合は,実行できません。多くのオペレーティングシステムやディスクサブシステムでは,パフォーマンスを改善するために書き込み操作が遅延したり,再指示されたりする可能性があります。一部のオペレ,ティングシステムでは,まさにfsync ()システムコールは,ファイルのすべての未書き込みデータがフラッシュされるまで待機するべきですが,実際には,データが安定したストレージにフラッシュされる前に返される可能性があります。このため,オペレーティングシステムのクラッシュや停電によって最近コミットされたデータが破損したり,さらに最悪の場合,書き込み操作が再指示されたためにデータベースが破損したりすることもあります。デ,タの完全性が重要である場合は,本番環境で何かを使用する前に,何らかの形で電源プラグを抜くテストを実行してください。OS x 10.3以降のInnoDBでは,特別なfcntl ()ファ@ @ルフラッシュ方式が使用されます。Linuxでは,ラ@ @トバックキャッシュを無効にすることが推奨されています。

Ata / sataディスクドラescブ上でhdparm -W0 /dev/hdaのようなコマンドを使用すると,ラ。一部のドライブやディスクコントローラでは,ライトバックキャッシュを無効にできない可能性があることに注意してください。

ユ,ザ,を保護するInnoDBのリカバリ機能に関しては,InnoDBでは二重書き込みバッファと呼ばれる構造に関連したファ@ @ルフラッシュ技術が使用されています。これは、デフォルトで有効になっています(innodb_doublewrite =对)。二重書き込みバッファ,を使用すると,クラッシュや停電のあとのリカバリの安全性が高まるだけでなく,fsync ()操作の必要性が減るため,ほとんどの種類のUnixでパフォ,マンスが向上します。デ,タの完全性またはエラ,の可能性に関心がある場合は,innodb_doublewriteオプションを有効のままにすることが推奨されています。二重書き込みバッファの追加情報にいては,セクション14.10 " InnoDBのディスクI/Oとファaaplル領域管理"を参照してください。

注意

データの信頼性が考慮事項となっている場合は,NFSボリューム上でデータファイルやログファイルが使用されるようにInnoDBを構成しないでください。発生する可能性のある問題は,osおよびNFSのバ,ジョンによって異なります。これらの問題には,競合する書き込みからの保護が不足しているなどの問題や,最大ファイルサイズ上の制限などが含まれます。

InnoDBテブルスペスファルの場所とサズの指定

InnoDBテ,ブルスペ,スファ,my.cnfオプションファ@ @ルの(mysqld)セクションでinnodb_data_file_pathオプションを使用します。Windowsでは、代わりにmy.iniを使用できます。innodb_data_file_pathの値は,1以上のデルのリストで指定するようにしてください。複数のデ、タファ、ル名を指定する場合は、セミコロン文字()で区切ってください。

innodb_data_file_path =datafile_spec1[;datafile_spec2)……

たとえば,次の設定では,最小サ。

(mysqld) innodb_data_file_path = ibdata1:12M: autoextend

この設定では,ibdata1という名前の12mバ▪▪トの自動拡張デ▪タファ▪▪ルが1▪▪構成されます。ファ电子邮箱ルの場所が指定されていないため,InnoDBによって,デフォルトでMySQLデ,タディレクトリ内に作成されます。

Kバaapl . exeト,mバaapl . exeト,またはgバaapl . exeトの単位を指定するために,サaapl . exeズはK,またはGのサフィクス文字を使用して指定されます。

デ,タディレクトリ内にあるibdata1という名前の50mバトの固定サズデルと,ibdata2という名前の50mバ。

(mysqld) innodb_data_file_path = ibdata1:50M; ibdata2:50M: autoextend

データファイルを指定するための完全な構文には,ファイル名,そのサイズ,および複数のオプション属性が含まれています。

file_namefile_size[: autoextend[:马克斯:max_file_size]]

autoextendおよび马克斯属性は,innodb_data_file_path行内の最後のデタファルでのみ使用できます。

最後のデタファルにautoextendオプションを指定すると,テ,ブルスペ,スに空き領域がなくなった場合に,InnoDBはデタファルを拡張します。デフォルトでは,一度に8mバaaplトずaapl増分されます。増分を変更するには,innodb_autoextend_incrementシステム変数を変更します。

ディスクがいっぱいになったら,別のディスク上に別のデ,タファ,ルを追加するといいでしょう。テブルスペスを再構成する手順にいては,セクション14.5.7”InnoDBログファイルの数またはサイズの変更,およびInnoDBテーブルスペースのサイズの変更“を参照してください。

InnoDBではファイルシステムの最大ファイルサイズが認識されないため,最大ファイルサイズが2 gバイトのような小さい値になっているファイルシステムでは注意してください。自動拡張デタファルの最大サズを指定するには,autoextend属性のあとに马克斯属性を使用してください。最大サイズを超えると致命的なエラーが発生し,クラッシュする可能性もあるため,ディスクの使用率を制約することが非常に重要である場合に限り,马克斯属性を使用してください。次の構成では,ibdata1が最大で500mバトの制限まで増大することが許可されます。

(mysqld) innodb_data_file_path = ibdata1:12M: autoextend:马克斯:500米

InnoDBは,デフォルトでMySQLデタディレクトリ内にテブルスペスファルを作成します。場所を明示的に指定するには,innodb_data_home_dirオプションを使用します。たとえば,ibdata1およびibdata2という名前の2のファルを使用するが,/ ibdataディレクトリ内に作成するには,次のようにInnoDBを構成します。

[mysqld] innodb_data_home_dir = /ibdata innodb_data_file_path=ibdata: 50m
注記

InnoDBではディレクトリが作成されないため,サ,バ,を起動する前に,/ ibdataディレクトリが存在することを確認してください。このことは、ユ、ザ、が構成するログファ、ルディレクトリにも当てはまります。必要なディレクトリを作成するには,UnixまたはDOSのmkdirコマンドを使用します。

MySQLサーバーがデータディレクトリ内にファイルを作成するための適切なアクセス権を持っていることを確認してください。さらに一般的に言えば,サーバーはデータファイルやログファイルを作成する必要のあるディレクトリ内に,アクセス権を持っている必要があります。

InnoDBinnodb_data_home_dirの値をテキストとしてデータファイル名に連結させ,必要に応じてパス名の区切り文字(スラッシュまたはバックスラッシュ)を値の間に追加することで,各データファイルのディレクトリパスを形成します。my.cnfinnodb_data_home_dirオプションがまったく指定されていない場合は,デフォルト値がドットディレクトリ。/()。(MySQLサーバーは実行の開始時に,現在の作業ディレクトリをそのデータディレクトリに変更します)。

innodb_data_home_dirを空の文字列として指定すると,innodb_data_file_path値で一覧表示されたデタファルに絶対パスを指定できます。次の例は,前述の例と同等です。

[mysqld] innodb_data_home_dir = innodb_data_file_path=/ibdata/ibdata: 50m

InnoDB構成オプションの指定

小規模なシステム向けのサンプルmy.cnfファ@ @ル。512バイトのRAMと1台のハードディスクが搭載されたコンピュータを使用すると仮定します。次の例では,autoextend属性を含む,InnoDBmy.cnfまたはmy.iniで指定可能な構成パラメ,タを示します。この例は,InnoDBデータファイルとログファイルをいくつかのディスクに分散することを希望しない,UnixとWindows両方のほとんどのユーザーに適しています。ここでは,MySQLデタディレクトリ内に自動拡張デタファルibdata1と,2のInnoDBログファ@ @ルib_logfile0およびib_logfile1を作成します。

[mysqld] #你可以在这里写其他MySQL服务器选项#…#数据文件必须能够保存您的数据和索引。#确保您有足够的空闲磁盘空间。innodb_data_file_path = ibdata1:12M:autoextend # #设置缓冲池大小为计算机内存的50-80% innodb_buffer_pool_size=256M innodb_additional_mem_pool_size=20M # #设置日志文件大小为缓冲池大小的25% innodb_log_file_size=64M innodb_log_buffer_size=8M # innodb_flush_log_at_trx_commit=1

一部のファイルシステムでは,データファイルを2 gバイト未満にする必要があることに注意してください。ログファ▪▪ルを結合したサ▪▪ズは,最大で512g▪▪バ▪▪トまでにすることができます。デタファルを結合したサズは,10mバトをわずかに超える大きさにする必要があります。

InnoDBシステムテ,ブルスペ,スの設定

はじめてInnoDBシステムテーブルスペースを作成する際は,コマンドプロンプトからMySQLサーバーを起動する方法が最適です。そのあと,デ,タベ,スの作成に関する情報がInnoDBの画面に出力されるため,何が発生しているのかを確認できます。たとえば,Windowsの場合,mysqldC:\Program Files\MySQL\MySQL服务器5.6\binに配置されていれば,次のように起動できます。

C:\> "C:\Program Files\MySQL\MySQL Server 5.6\bin\mysqld"——控制台

サ,バ,の出力が画面に送信されない場合は,サ,バ,のエラ,ログをチェックして,起動プロセス中にInnoDBから出力された内容を確認してください。

InnoDBで表示される情報の出力例にいては,セクション14.5.1 " InnoDBテ,ブルスペ,スの作成"を参照してください。

MySQL構成ファMySQLルの編集

サバの起動時に読み取られる任意のオプションファルの(mysqld)グル,プ内に,InnoDBオプションを配置できます。オプションファ@ @ルの場所については、セクション4.2.6 "オプションファescルの使用"で説明されています。

インストールおよび構成ウィザードを使用して,MySQLをWindows上にインストールした場合は,オプションファイルがMySQLインストールディレクトリ内に配置されたmy.iniファ@ @ルになります。セクション2.3.3“MySQL安装を使用したMySQLのMicrosoft Windowsへのインストール”を参照してください。

C:ドライブがブートドライブではないブートローダーがPCで使用されている場合は,Windowsディレクトリ(通常はC:\WINDOWS)内のmy.iniファ@ @ルを使用することが唯一のオプションとなります。コンソ,ルウィンドウ内のコマンドプロンプトでコマンドを使用すると,列出の値を出力できます。

C:\> SET WINDIR WINDIR =C:\WINDOWS

mysqldで特定のファルからのオプションのみが読み取られることを確認するには,サバの起動時に——defaults-fileオプションをコマンド行の最初のオプションとして使用します。

mysqld——defaults-file =your_path_to_my_cnf

大規模なシステム向けのサンプルmy.cnfファ@ @ル。ディレクトリパス// dr2,および/ dr3に2 gバイトのRAMと3台の60 gバイトハードディスクが搭載されたLinuxコンピュータを使用すると仮定します。次の例では,InnoDBmy.cnfで指定可能な構成パラメ,タを示します。

[mysqld] #你可以在这里写其他MySQL服务器选项#…innodb_data_file_path = /db/ibdata1:2000M;/dr2/db/ibdata2:2000M:autoextend # #设置缓冲池大小为计算机内存的50-80%innodb_log_file_size=250M innodb_log_buffer_size=8M # innodb_flush_log_at_trx_commit=1 innodb_lock_wait_timeout=50 # #如果你想使用它,取消注释下一行#innodb_thread_concurrency=5

InnoDBの最大メモリ,割り当ての決定

警告

32ビット版のGNU / Linux x86では,高すぎるメモリー使用率を設定しないように注意してください。glibcでは,プロセスヒープがスレッドスタック上で増加することが許可されている可能性があるため,サーバーがクラッシュします。次の式の値が2gバaaplトに近づいていたり,超えていたりする場合は危険です。

innodb_buffer_pool_size + key_buffer_size + max_connections*(sort_buffer_size+read_buffer_size+binlog_cache_size) + max_connections*2MB

各スレッドではスタックが使用され(多くの場合は2 mバイトですが,甲骨文公司が提供するMySQLバイナリでは256 kバイトだけです),最悪のケースでは,Sort_buffer_size + read_buffer_sizeの追加メモリ,も使用されます。

その他のmysqldサ,バ,パラメ,タの調整。次の値は典型的であり,ほとんどのユ,ザ,に適しています。

[mysqld]跳过外部锁定max_connections=200 read_buffer_size=1M sort_buffer_size=1M设置key_buffer为5 - 50%的RAM,这取决于你使用MyISAM表的数量,但保持key_buffer_size + InnoDB #缓冲池的大小<你的RAM key_buffer_size= 80%价值

Linuxの場合,カ,ネルで大規模ペ,ジのサポ,トが有効になっていれば,InnoDBは,バッファプルや追加メモリプルのメモリを割り当てる際に大規模なペジを使用できます。セクション8.11.4.2 "ラ,ジペ,ジのサポ,トの有効化"を参照してください。