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_name:file_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サーバーがデータディレクトリ内にファイルを作成するための適切なアクセス権を持っていることを確認してください。さらに一般的に言えば,サーバーはデータファイルやログファイルを作成する必要のあるディレクトリ内に,アクセス権を持っている必要があります。
InnoDB
はinnodb_data_home_dir
の値をテキストとしてデータファイル名に連結させ,必要に応じてパス名の区切り文字(スラッシュまたはバックスラッシュ)を値の間に追加することで,各データファイルのディレクトリパスを形成します。my.cnf
にinnodb_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
属性を含む,InnoDB
のmy.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の場合,mysqldがC:\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コンピュータを使用すると仮定します。次の例では,InnoDB
のmy.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 "ラ,ジペ,ジのサポ,トの有効化"を参照してください。