[+/-]
      InnoDB
      テーブルを使用しない場合は、InnoDB
      スタートアップエンジンが無効になるように、--skip-innodb
      オプションを指定してサーバーを起動します。
    
        InnoDB
        はトランザクションセーフな (ACID に準拠した)
        MySQL
        用のストレージエンジンであり、ユーザーデータを保護するためのコミット、ロールバック、およびクラッシュ復旧機能を備えています。しかし、もし基礎となる
        OS
        やハードウェアが広告どおりに機能しなければ、それを行うことはできません。多くの
        OS
        やディスクサブシステムが、性能を向上させるために書き込み操作を遅らせたり再指示したりするでしょう。いくつかの
        OS
        上で、ファイルのすべての未書き込みデータがフラッシュされるまで待つ必要があるそのシステムコール、fsync()
        は、実際にデータが安定したストレージにフラッシュされる前に返されます。このため、OS
        のクラッシュや停電によって最近コミットされたデータが破損したり、さらに最悪の場合、書き込み操作が再指示されたためにデータベースが破損することもありますもしデータの整合性が重要であるなら、製造で何かを利用する前に
        「pull-the-plug」
        テストを行うべきです。Mac OS X 10.3
        以降のバージョンでは、InnoDB
        は特別な fcntl()
        ファイルフラッシュ法を利用します。Linux
        下では、ライトバックキャッシュを無効にする
        事をお勧めします。
      
        ATA/SATA
        ディスクドライブ上では、hdparm
        -W0 /dev/hda
        のようなコマンドがライトバックキャッシュを無効にする働きをします。いくつかのドライブやディスクコントローラでは、ライトバックキャッシュを無効にできない可能性があるので注意してください。
      
      InnoDB
      ストレージエンジンによって管理されている 2
      つの重要なディスクベースリソースは、そのテーブル領域データファイルとログファイルです。もし
      InnoDB
      設定オプションをまったく指定しなければ、MySQL
      は MySQL
      データディレクトリに、ibdata1
      という名前の 10M
      バイトの自動延長と、ib_logfile0
      と ib_logfile1
      という名前の 5M
      バイトのログファイルを作成します。高性能を得るには、次の例にあるように
      InnoDB
      パラメータを明示的に提供する必要があります。当然ながら、お使いのハードウェアとその要求に合うように、設定を編集する必要があります。
    
        NFS
        ボリューム上のデータファイルやログファイルを使用するように
        InnoDB
        を設定しないでください。そうでないと、ファイルがほかのプロセスによってロックされ、MySQL
        から利用できなくなる可能性があります。
      
      ここに表されている例は代表的なものです。InnoDB
      に関連した設定パラメータに関する追加情報は、項9.3. 「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:10M:autoextend
      この設定は、ibdata1
      と名づけられた自動延長の単一 10M
      バイトデータファイルを構成します。そのファイルの場所は指定されないため、InnoDB
      がデフォルトでそれを MySQL
      データディレクトリ内に作成します。
    
      K バイト、M バイト、または G
      バイトの単位を指定するために、K、M、または
      G
      の接尾辞文字を利用してサイズが指定されます。
    
      データディレクトリ内で、ibdata1
      と名づけられた固定サイズ 50M
      バイトのデータファイルと、ibdata2
      と名づけられた 50M
      バイトの自動拡大ファイルを含むテーブル領域は、次のように設定されます:
    
[mysqld] innodb_data_file_path=ibdata1:50M;ibdata2:50M:autoextend
データファイル指定の完全な構文は、次のようにファイル名、そのサイズ、およびいくつかの省略可能な属性を含んでいます。
file_name:file_size[:autoextend[:max:max_file_size]]
      autoextend および
      max
      属性は、innodb_data_file_path
      行内の最後のデータファイルにのみ利用できます。
    
      最後のデータファイルに
      autoextend
      オプションを指定すると、InnoDB
      はもしテーブル領域の中に空き領域がなければデータファイルを拡大します。デフォルトで、インクリメントは一回に付き
      8M
      バイトとなっています。インクリメントを変更するには
      innodb_autoextend_increment
      システム変数を変更します。
    
      もしディスクがいっぱいになると、別のディスク上に別のデータファイルを追加したくなるでしょう。テーブル領域を再設定するための手順については、項9.5. 「InnoDB
      データおよびログファイルの追加、削除、またはサイズ変更」
      を参照してください。
    
      InnoDB
      にはファイルシステムの最大サイズがわからないので、それが
      2G
      バイトのような小さい値の場合は注意してください。自動拡張データファイルの最大サイズを指定するには、autoextend
      属性のあとに max
      属性を指定してください。次の設定は、ibdata1
      が最大 500M
      バイトまで大きくなることを許容します:
    
[mysqld] innodb_data_file_path=ibdata1:10M:autoextend:max:500M
      InnoDB はデフォルトで
      MySQL
      データディレクトリ内にテーブル領域ファイルを作成します。場所を明示的に指定するには、innodb_data_home_dir
      オプションを利用してください。たとえば、ibdata1
      と ibdata2
      と名づけられた 2
      つのファイルを、/ibdata
      ディレクトリ内で作成して利用するには、InnoDB
      をこのように設定してください:
    
[mysqld] innodb_data_home_dir = /ibdata innodb_data_file_path=ibdata1:50M;ibdata2:50M:autoextend
        InnoDB
        はディレクトリを作成しないので、サーバーを起動する前に必ず
        /ibdata
        ディレクトリが存在することを確認してください。これは、ご自分が設定する別のログファイルにもすべて当てはまります。必要なディレクトリを作成するには、Unix
        または DOS の場合 mkdir
        コマンドを利用してください。
      
MySQL サーバーがデータディレクトリ内にファイルを作成するための正当なアクセス権を持っていることを確認してください。さらに一般的には、サーバーはデータファイルとログファイルを作成しなければいけないディレクトリ内にアクセス権を持っている必要があります。
      InnoDB は
      innodb_data_home_dir
      の値をテキストとしてデータファイル名に連結させ、必要に応じてパス名区切り文字
      (スラッシュまたはバックスラッシュ)
      を値の間に追加して、各データファイルのディレクトリパスを形作ります。もし
      innodb_data_home_dir
      オプションについて
      my.cnf
      内でまったく触れられなければ、MySQL
      データディレクトリを意味する
      「ドット」 ディレクトリ
      ./
      がデフォルト値になります。(MySQL
      サーバーは、実行を始めるときにその時起動しているディレクトリを、それ自体のデータディレクトリに変更します)。
    
      もし
      innodb_data_home_dir
      を空の文字列として指定すれば、innodb_data_file_path
      値内にリストされたデータファイルに完全なパスを指定することができます。次の例は、前出のものと同等です:
    
[mysqld] innodb_data_home_dir = innodb_data_file_path=/ibdata/ibdata1:50M;/ibdata/ibdata2:50M:autoextend
      単純な
      my.cnf の例:
      512M バイトの RAM と 1
      台のハードディスクを備えたコンピュータがあるとします。次の例は、autoextend
      属性を含む、InnoDB
      のための my.cnf
      か、my.ini
      内で可能な設定パラメータを表しています。この例は、InnoDB
      データファイルとログファイルをいくつかのディスクに分散することを希望しない、Unix
      と Windows
      両方のほとんどのユーザーに適しています。これは、MySQL
      データディレクトリ内に、自動拡大データファイル
      ibdata1 と、2 つの
      InnoDB ログファイル
      ib_logfile0 と
      ib_logfile1
      を作成します。
    
[mysqld] # You can write your other MySQL server options here # ... # Data files must be able to hold your data and indexes. # Make sure that you have enough free disk space. innodb_data_file_path = ibdata1:10M:autoextend # # Set buffer pool size to 50-80% of your computer's memory innodb_buffer_pool_size=256M innodb_additional_mem_pool_size=20M # # Set the log file size to about 25% of the buffer pool size innodb_log_file_size=64M innodb_log_buffer_size=8M # innodb_flush_log_at_trx_commit=1
データファイルはいくつかのファイルシステム内で 2G バイト未満でなければいけないことに注意してください。結合したログファイルのサイズは 4G バイト以下でなければいけません。結合したデータファイルのサイズは最低 10M バイトでなければいけません。
      InnoDB
      テーブル領域をはじめて作成するときは、MySQL
      サーバーをコマンドプロンプトから起動するのが一番良い方法です。その後
      InnoDB
      がデータベース作成に関する情報を画面に表示するため、何が起こっているか知ることができます。たとえば、もし
      Windows 上で mysqld が
      C:\Program Files\MySQL\MySQL Server
      5.1\bin
      内にあった場合、次のように起動することができます。
    
C:\> "C:\Program Files\MySQL\MySQL Server 5.1\bin\mysqld" --console
      もし画面にサーバーの出力を送らない場合、InnoDB
      がスタートアッププロセス中に表示する内容からサーバーのエラーログを確認してください。
    
      InnoDB
      によって表示される情報の例については、項9.2.3. 「InnoDB
        テーブル領域を作成する」
      を参照してください。
    
      サーバーが起動したときに読み込むオプションファイルとして、[mysqld]
      グループ内に InnoDB
      オプションを配置することができます。オプションファイルの場所に関しては、Using Option Files
      で紹介されています。
    
      もし MySQL
      をインストールと設定ウィザードを利用して
      Windows
      上にインストールしたら、そのオプションファイルはお使いの
      MySQL インストールディレクトリ内の
      my.ini
      ファイルになります。The Location of the my.ini File
      を参照してください。
    
      もしお使いの PC
      が、C:
      ドライブがブートドライブではないブートローダを利用していたら、残されたオプションは
      Windows ディレクトリ (通常
      C:\WINDOWS) 内の
      my.ini
      ファイルを利用することだけです。WINDIR
      の値をプリントするには、コンソールウィンドウ内のコマンドプロンプトで
      SET
      コマンドを利用することができます:
    
C:\> SET WINDIR
windir=C:\WINDOWS
      mysqld
      が特定のファイルからだけオプションを読み込むようにするには、次のようにサーバーを起動するときに
      --defaults-file
      オプションをコマンドラインの最初のオプションとして使用します。
    
mysqld --defaults-file=your_path_to_my_cnf
      高度な
      my.cnf の例:
      ディレクトリパス
      /、/dr2、および
      /dr3 に 2G バイト RAM と
      3 つの 60G バイトハードディスクを持つ Linux
      コンピュータを持っていると仮定してください。次の例は、InnoDB
      の my.cnf
      内で可能な設定パラメータを表しています。
    
[mysqld] # You can write your other MySQL server options here # ... innodb_data_home_dir = # # Data files must be able to hold your data and indexes innodb_data_file_path = /db/ibdata1:2000M;/dr2/db/ibdata2:2000M:autoextend # # Set buffer pool size to 50-80% of your computer's memory, # but make sure on Linux x86 total memory usage is < 2GB innodb_buffer_pool_size=1G innodb_additional_mem_pool_size=20M innodb_log_group_home_dir = /dr3/iblogs # # Set the log file size to about 25% of the buffer pool size innodb_log_file_size=250M innodb_log_buffer_size=8M # innodb_flush_log_at_trx_commit=1 innodb_lock_wait_timeout=50 # # Uncomment the next line if you want to use it #innodb_thread_concurrency=5
      場合によっては、一部のデータが異なるディスク上に置かれていれば、データベース性能が向上します。ログファイルをデータとは別のディスク上に置くことで、性能が向上することが多いです。どのようにするかを例で説明しています。これは、2
      つのデータファイルを別々のディスクに、そしてログファイルを
      3
      つめのディスクにおきます。InnoDB
      は最初のデータファイルを先に利用してテーブル領域を埋めていきます。InnoDB
      データファイルとして、raw
      ディスクパーティション (raw デバイス)
      を利用することができ、そのおかげで I/O
      のスピードが向上します。項9.2.2. 「共有テーブル領域に raw デバイスを利用する」
      を参照してください。
    
        32 ビット GNU/Linux x86
        上では、メモリー使用を高く設定しすぎないように注意してください。glibc
        はプロセスヒープがスレッドスタックよりも大きくなることを許容する可能性があり、そのためサーバーがクラッシュしてしまうかもしれません。もし次の式の値が
        2G
        バイトに近い、またはそれを上回っていたら危険です:
      
innodb_buffer_pool_size + key_buffer_size + max_connections*(sort_buffer_size+read_buffer_size+binlog_cache_size) + max_connections*2MB
        各スレッドはスタック (通常 2M
        バイトですが、米国 Sun Microsystems, Inc.
        が提供する MySQL バイナリ内ではわずか 256K
        バイト)
        を利用し、そして最悪の場合、sort_buffer_size
        + read_buffer_size
        追加メモリーも利用します。
      
その他の mysqld サーバーパラメータのチューニング: 次の値は典型的なものであり、ほとんどのユーザーに適しています。
[mysqld]
skip-external-locking
max_connections=200
read_buffer_size=1M
sort_buffer_size=1M
#
# Set key_buffer to 5 - 50% of your RAM depending on how much
# you use MyISAM tables, but keep key_buffer_size + InnoDB
# buffer pool size < 80% of your RAM
key_buffer_size=value
      Linux
      の場合、カーネルで大規模ページのサポートが有効になっていれば、InnoDB
      は、バッファープールや追加メモリープールのメモリーを割り当てる際に大規模ページを使用できます。項4.5.9. 「大規模ページのサポートの有効化」
      を参照してください。
    

