2013-10-15

2013-10-15 14:44

MySQLのバージョン

インストールされたMySQLのバージョンは以下のようになります。
名前 バージョン ダウンロード元
MySQL 5.6.16(64bit) http://dev.mysql.com/

my.cnfサンプル

以下のサンプルを参照して、my.cnfファイルを作成してください。

# このファイルは MySQL 5.6を基準として作られてあります。
# http://dev.mysql.com/doc/refman/5.6/en/server-system-variables.html を参照しました。

[mysqld]
##--------------------------------------------------------------------
# mysqldの基本設定
##--------------------------------------------------------------------
# id は 1 から 2^32 -1 個の間で唯一の値になる必要がある
# server-idはReplicationを使うときには重複されてはいけない
# 単一システムの場合はDefaultの1で十分
server-id = 1

# サーバーを起動するユーザーの指定
user = mysql

basedir = /usr/local/mysql/current

# このディレクトリの所有権とグループはuserで指定したユーザーにする必要がある
datadir = /usr/local/mysql/current/data

# このディレクトリはMysqlサーバーが内部的に作業をするときに臨時ディレクトリとして使う
# 例えば、大量のselect処理のため、臨時テーブルを作ったりする場合、ここにファイルが生成される。
tmpdir  = /usr/local/mysql/current/tmp

socket  = /usr/local/mysql/current/tmp/mysql.sock
pid-file = /usr/local/mysql/current/data/mysqld.pid

# 外部ロック(locking), システムロックを使わないようにする。この設定はMyISAMテーブルのみ影響がある。
skip-external-locking

# 文字セット指定
character-set-server = utf8
collation-server = utf8_general_ci

# 基本(Default)のストレージエンジン
# Mysqlサーバーが支援するストーレジエンジンの中で一つを選択できる。
# サーバーが支援するストレージエンジンは'SHOW ENGINES'コマンドで確認できる Aria
default-storage-engine  = innodb

# Transactionレベルを設定します。
# レコード基盤のReplicationをするためにはREAD-COMMITED
# DefaultはREPEATABLE-READ
transaction-isolation = REPEATABLE-READ

##--------------------------------------------------------------------
# Network 設定
##--------------------------------------------------------------------
# サーバーのポート指定
port = 3306

# サーバーに接続したClientの確認のためにIPを利用してClientのドメインを探すのを防ぐ
# これを設定するとサーバーに接続したClientを定義するときにHostのFieldにドメインを使っては行けない、IPのみ使用可能。
# Clientのドメインを探す作業がなくなるので、性能がよくなる
skip-name-resolve

# Mysql ThreadPool (6.0 only) or mariadb
#thread_handling = pool-of-threads
#thread_pool_size = 32
#thread_pool_max_threads = 1024
#thread_pool_idle_timeout = 10

# 最大同時接続の指定、やけに大きい値を設定するのではなく適当に設定する必要がある
# 接続した人がこの値を超えると"Too many connections error" というメッセージを出力する
# Dynamicの設定も可能。 SET GLOBAL max_connections = 300
max_connections = 300

# Mysqlに接続可能なUserごとの最大同時接続者。 Defaultは0(Unlimited)である
# Dynamicで設定可能。 SET GLOBAL max_user_connections = 1024
max_user_connections = 0

# Mysqlサーバーに接続したClientは色々なエラーが発生される。サーバーはこういうClient別のエラーをCountingして置く
# もし、Clientが一定のCountingを超えるとMySQLは何か異常があると仮定して、それ以上の接続の要求をブロックする。
# Clinetが発生させるエラーの限界値を調整するための設定である。 Defaultは10だ。
# 設定した値に達すると"Host [client] is blocked because of many connection errors"エラーを発生させる。
# Dynamic設定は可能だ。 SET GLOBAL max_connect_errors = 1000000
# このCountの初期化は FLUSH HOSTS 命令でできる。
max_connect_errors = 1000000

# 接続したClientが何もせずにいるときに、Connectionを切断する時間。 単位は 秒 でDefaultは 28800秒(8時間)である。
# WEBでの接続の場合、Timeoutは大体 30秒 にWebサーバーのタイムアウトになってるため、DBのDefaultの値は大きい数値である。
# Dynamic での設定も可能だ。 SET GLOBAL wait_timeout = 600
wait_timeout = 600

# 非活性の状態から活性状態になるまでの待機時間。(seconds to waits for activity on interactive connection)
# これは MySQL API の中で mysql_real_connect() メッソドを使っているApplicationだけに適用される。 単位は秒単位でDefaultは 600 だ。
# Dynamic での設定も可能。 SET GLOBAL interactive_timeout = 600
interactive_timeout = 600

# 'Bad handshake'に応答する前にPacketの接続を待っている時間。
# "Lost connection to MySQL server at 'XXX', system error: errno"というメッセージがよく出てきたら、この値を増やす必要がある。
# 単位は秒, Defaultは 10 だ。
# Dynamic の設定も可能だ SET GLOBAL connect_timeout = 10
connect_timeout = 10

# Clientからサーバーに送るQueryは一つのPacketで処理される。もし、サーバーに送られてくるQueryの大きさがこの値より小さいと増やす必要がある。
# 特にTableのカラムに BLOB タイプを使っている場合, バイナリ(Binary)の値、この値を増やす必要がある。
# 単位は byte, Defaultは 1048576(1MB) だ。限界値は 1GB である
# Dynamicでの設定も可能である。 SET GLOBAL max_allowed_packet = 1048576
max_allowed_packet = 33554432

##--------------------------------------------------------------------
# Logging
##--------------------------------------------------------------------
# 一般的なQueryのLog(general query log)とSlow Query Log(slow query log)が出力される場所を指定する
# このオプションは他のオプションより強い権限がある。 この値が NONE の場合には、の他のオプションでログを記録するように設定しててもログは記録されない。
# Dynamic での設定も可能だ SET GLOBAL log_output = FILE
log_output = FILE

# Aborted connection..のような警告を error Logに書く。 Replicationを使っている場合、このオプションを使うのをお勧めする
# Defaultは 1.
# Dynamic の設定が可能である。 SET GLOBAL log_warnings = 131072
log_warnings = 1

# エラーとかMysqlのStartのログファイルを指定。
# ファイル名を指定しないと host_name.err を使用する。 拡張子を指定しないと .err が自動的に付く。
# Defaultはない。 Dynamic の設定は出来ない。
log_error = /usr/local/mysql/current/logs/mysqld_error.log

# 一般的なQueryログ(general query log)の使用有無を決める。 log_output の値が NONE なら、この値は無視される。
# Defaultは 0(0)
# Dynamic の設定も可能だ。 SET GLOBAL log_output = 0
general_log = 0

# すべてのQueryを記録するファイルを指定。QueryログもしくはGeneralログと呼ばれる。
# ファイル名を指定しないと host_name.log になる。
# Dynamic での設定は可能だ。 SET GLOBAL general_log_file = /usr/local/mysql/current/logs/general_query_all.log
general_log_file = /usr/local/mysql/current/logs/general_query_all.log

# "OPTIMIZE TABLE, ANALYZE TABLE, and ALTER TABLE" のような管理命令について slow query を残すかどうかを決める。
# Default 0
# Dynamic の設定は出来ない。
log-slow-admin-statements = 1

# Index処理されない Full Scan のようなQueryについてのLog処理有無を決める。
# Default 0
# Dynamic の設定は可能だ。 SET GLOBAL log-queries-not-using-indexes = 1
log-queries-not-using-indexes = 1

# Slow Query Logを記録するかどうかを決める。 log_output の値が NONE なら、この値は無視される。(ON/OFF)
# Default 0
# Dynamic の設定は可能だ。 SET GLOBAL slow_query_log = 0
slow_query_log = 1

# Slow Queryを記録する時間。この時間より大きいと記録される。(この時間が過ぎても処理が終わらないと)
# 値は 0 ~ 10 の間だ
# Default 10.
# Dynamic で設定も可能だ。 SET GLOBAL long_query_time = 1
long_query_time = 2

# Slow Query Logファイルを指定
# ログファイル名を設定しないと host_name-slow.log になる
# Dynamic で設定も可能。 SET GLOBAL slow_query_log_file = /usr/local/mysql/current/logs/slow_query.log
slow_query_log_file = /usr/local/mysql/current/logs/slow_query.log

# バイナリログを使う場合は
# ログファイルの名前を入力する
log-bin=mysql-bin

# バイナリログを自動削除する日数
# Deafult 0.
# Dynamic の設定は可能だ。 SET GLOBAL expire_logs_days = 5
expire_logs_days = 5

##--------------------------------------------------------------------
# CacheとMemory
##--------------------------------------------------------------------
# thread_cache_size = threadをcacheにいくつ保存しておくのかを決める
# 基準はQuestionsではなくConnectionsである。
# MySQLは接続終了後のサーバスレッドをいきなり解放せず、次の接続時に再利用
# できるようにキャッシュして置く。このため、切断後の再接続時のオーバーヘッド
# をより軽減することができるのだ。デフォルトは0だが数百程度でもいいようだ。
# 細かいチューニングは実際の稼働状況を把握しないと何とも言えないが、とりあえず
# max_connectionsの1/3ぐらいか
# show statusの(Threads_created / Connections)の結果が
# 0.01 すなわち 1% 以上なら、 thread_cache_size を増やす必要があると判断
# 同時接続者が多ければ多いほどこの値を増やす必要があるが、メモリの使用率も一緒に増える
# Default 0. 単位はスレッドの数
# Dynamic で設定も可能だ。 SET GLOBAL thread_cache_size = 52
thread_cache_size = 52

# すべてのThreadが開いてCacheができるTableの数。 この値が増えると mysqld は file descriptors を増やす
# Default 400.
# Dynamic で設定も可能だ。 SET GLOBAL table_open_cache = 400
table_open_cache = 400

# この値は Memory ストレジエンジンに影響を及ぼす。 この値は Memory ストレジエンジンで MAX_ROWS 値を計算し使ったりもする。
# また、 MySQL サーバーがQueryを処理するのに、時々臨時テーブルをメモリを生成したりするが、
# その時、生成されるTableは Heap Tableと呼ばれている。 tmp_table_size と共に内部 Heap Tableの大きさに影響を及ぼす。
# 単位は byte. Defaultは 16777216(16MB)である
# Dynamic で設定も可能だ。 SET GLOBAL max_heap_table_size = 16777216
max_heap_table_size = 33554432

# Memoryに生成される臨時のTableの最大の値。 Memoryに生成されるTable値がこの値を超えると MySQLはDiskに MyISAM Tableに変換する。
# Queryに GROUP By が多くて、メモリも十分な状態なら、この値を増やす必要がある。
# この値はユーザーが生成する Memory Tableには影響を与えない。
# 単位は Byte. DefaultはSystemに依存する。
# SHOW GLOBAL STATUS で、 'Created_tmp_disk_tables' と 'Created_tmp_tables' に該当の統計情報が記録されてある。
# Dynamic で設定も可能だ。 SET GLOBAL tmp_table_size = 524288
tmp_table_size = 524288

# ソートの際に利用される領域。ORDER BYやGROUP BYを多用するのであればこの値も増やした方がいい。
# 各Sectionで整列のために与えられたBufferの大きさ。 この値はどのストレージエンジンに特化されたものではなく、最適化をするための一般的な値だ。
# SHOW GLOBAL STAUS で、 秒(より)/ 'Sort_merge_passes' の値が多く感じたらQueryを改善するかIndexを改善する代わりに、この値を増やしてみるのもいい方法だ
# しかし、2MB 以上は設定しないのをお勧めする。大体 64KB ~ 512KB の間が適当である
# 単位は Byte. Default 2MB 
# Dynamic 設定は可能だ。 SET GLOBAL sort_buffer_size = 2097144
sort_buffer_size = 4MB #128kb

# インデックスを使用する/しないにかかわらず、全文検索の時に使用される領域。
# テーブル全体をスキャンするSQL文を何度も実行する場合はこの値を調整した方がよい。
# ※「インデックスを使用しない場合に使われる」と書かれている場合もあり、どちらだか分からない。後で調べようと思う。
# MyISAM Tableに対して各Threadが sequentail scan をしようとしたときにこの大きさ分、Bufferを割り当てる。
# sequentail scan がよく発生するとこの値を増やす必要がある。
# 単位は Byte. Defaultは 131072 (128K) だ。
# Dynamic 設定も可能だ。 SET GLOBAL read_buffer_size = 16777216
read_buffer_size = 131072

# ソート後にレコードを読むときに使われる領域で、
# ディスクI/Oが減るためORDER BYの性能向上が期待できる。 1?2Mくらいが妥当?
# MyISAM Tableから Key-sorting 整列によるデータをレコードから読み込むときにDiskから探すのを避けるためにこのBufferを使う。
# ORER BY をたくさん使っているのであれば、この値を増やすと、Performance向上の効果が期待できる
# 単位は Byte. Default 262144(256K) だ。
# Dynamic 設定は可能だ。 SET GLOBAL read_rnd_buffer_size = 131072
read_rnd_buffer_size = 1MB

# インデックスを用いない全文検索を伴うテーブル結合(フルジョイン)において、
# レコードデータのキャッシュに使われる領域。
# 一回のフルジョインにつき1つのジョインバッファが確保され、SQL文の実行終了とともに解放される。
# インデックスを用いないテーブル結合はパフォーマンスの観点からして避けるべきなので、
# この値は大きくする必要はないようだ。
# Minimum、 index scans, range index scans などを計画したり、Joinをするのに indexの利用ができず、Full Table Scanをする必要がある場合に使われる。
# Full Joinしないといけない状況がある場合、この値を増やすことで、Performanceが上がる効果がある。
# 単位は Byte.
# Dynamic 設定は可能だ。 SET GLOBAL join_buffer_size = 131072
join_buffer_size = 131072

# MySQLの性能向上を図る上でかなり重要なメモリ領域で、
# SELECT文の実行結果をメモリ内にキャッシュする。100?200くらいが推奨されているよう。
# Queryの結果をCacheするためのメモリの量。 パラメタ名とは違ってQueryをCacheすることではなく、処理結果をCacheする。
# Queryの結果をCacheするため、 INSERT, UPDATE, DELETEが頻繁に起こるサーバーでは大きく設定する必要はない。
# 単位は Byte. Defaultは 0(disable). 128MB 以上、設定しない方がいいReplication(Slaveかな?)サーバーで Select のみする場合は、 128MB 以上の設定も可能。
# SHOW VARIABLES LIKE 'query_cache_size' で、確認可能
# Dynamic 設定可能 SET GLOBAL query_cache_size = 131072
query_cache_size = 52MB #54525952

# 一つのQueryごとの結果をCacheする量を制限する。 query_cache_sizeはQueryの結果をCacheする全体のメモリの量を設定するパラメタで
# query_cache_limit は各QueryごとにCacheする結果の量を意味する。 この値より大きいQueryの結果の場合はCacheしないという意味。
# 単位は Byte. Default 1048576(1M).
# Dynamic 設定可能 SET GLOBAL query_cache_limit = 131072
query_cache_limit = 2097152


# MySQLではひとつのテーブルにつきひとつのファイルが割り当てられるが、table_cashe_sizeは
# それらのテーブルのキャッシュに使用され、同時実効性をあげるための重要なパラメータとなる。
# MySQLサーバーは一度開いたファイルのポインタをtable_cacheに保存し、次回からの
# アクセスを高速化するのである。目安は同時接続数 x テーブル数。1024?2048が一般的。
#table_cache = 1800 # old version
table_open_cache = 1800 # mysql 5.6

##--------------------------------------------------------------------
# MyISAM 
##--------------------------------------------------------------------
# MyISAMテーブルに対して索引検索をする際にそのインデックス情報を格納する領域。
# MyISAMテーブルを多用する場合はこの値もある程度増やす。
# MyISAM テーブルのインデックスBlock(Index blocks)はBufferされ、すべてのThreadに共有される。
# このIndex BlocksはBufferのためのメモリの量だ。 データベース専用サーバに MyISAM エンジンのみ使う場合
# 全体のメモリの 25%を割り当てても問題ない
# 単位は Byte. Default 8388608(8MB)
# Dynamic 設定も可能だ。 SET GLOBAL key_buffer_size = 131072
key_buffer_size = 128MB #33554432

# bulk insert ? INSERT ... SELECT, INSERT ... VALUES (..),(..),... , LOAD_DATA_INFILE などを使うときに
# Bufferを使い、速度をあげられる。
# 単位 Byte. Default 8388608 (8MB)
# Dynamic 設定も可能だ。 SET GLOBAL bulk_insert_buffer_size = 131072
bulk_insert_buffer_size = 8MB #33554432

# CREATE INDEX, ALTE TABLE などでIndexを生成したり REPAIR_TABLE をするのにIndexの整列が必要な時、使うBuffer
# 単位は Byte. Default 8388608 (8MB)
# Dynamic 設定可能。 SET GLOBAL myisam_sort_buffer_size = 131072
myisam_sort_buffer_size = 2097152

# REPAIR_TABLE, ALTER_TABLE, LOAD_DATA_INFILE の中で MyISAM Indexを再生成しなければならない時に、許可する臨時ファイルの最大値
# 単位は Byte. Default 2147483648 (2GB)
# Dynamic 設定も可能。 SET GLOBAL myisam_max_sort_file_size = 131072
myisam_max_sort_file_size = 2147483648

# 予期してないサーバーの中断などでサーバーが再起動されたときにRecoverするかどうかを決めるオプション
# 0, DEFAULT, BACKUP, FORCE, QUICK の値をComma(,)で羅列して使用できる。
# Default 0. 値を設定しないと DEFAULT だ
# Dynamic 設定可能。
myisam_recover_options = DEFAULT

##--------------------------------------------------------------------
# InnoDB behavior
##--------------------------------------------------------------------

# InnoDB テーブルで使うファイルの基本のフォーマットを設定する
# Default Antelope
# Dynamic 設定可能。 SET GLOBAL innodb_file_format = Barracuda
innodb_file_format = Barracuda

# InnoDBのBackground Threadである、I/O ThreadのRead/WriteのThreadの数を決める
# innodb_read_io_threads のDefault: 4
# innodb_write_io_threads のDefault: 4
# Dynamic 設定可能。
innodb_read_io_threads = 4
innodb_write_io_threads = 4

# "SHOW TABLE STATUS", "SHOW INDEX" の情報を INFORMATION_SCHEMAのテーブルの統計に更新する
# この変数が Disable になると大きいテーブルとかIndex、schemaへの接続速度をあげられる
# この変数を Enable するとQueryのPlanするのに役に立ちます。
# Default 1
# Dynamic 設定可能。 SET GLOBAL innodb_stats_on_metadata = 1
innodb_stats_on_metadata = 1

# dirty pages のパーセントを超えないために InnoDBは buffer poolをデータFlushを(flush)試します。
# innodb での dirty pages のパーセンテージ
# Default 75
# Dynamic 設定可能。 SET GLOBAL innodb_max_dirty_pages_pct = 75
innodb_max_dirty_pages_pct = 90

# InnoDB? apaptive hash index の利用有無を決める
# adaptive hash index 機能は workload に有用
# Default 1
# Dynamic 設定可能。 SET GLOBAL innodb_adaptive_hash_index = 75
innodb_adaptive_hash_index = 1

# InnoDB buffer pool で dirty pages をFlushする比率を動的に調節するかどうかを決める
# データのflushのタイミングをよりアグレッシブにしてくれる 設定で、builtinのInnoDBだと状況によっては
# writeでI/Oがバーストの活動を避けられる目的で使える
# Default 1
# Dynamic 設定可能。 SET GLOBAL innodb_adaptive_flushing = 75
innodb_adaptive_flushing = 1

# 特定の条件について警告をらターンするかエラーをリターンするかを決める strict SQL mode と類似している
# Default 0
# Dynamic 設定可能。 SET GLOBAL innodb_strict_mode = 1
innodb_strict_mode = 1

# insert buffer からデータを合わせたり(merge) buffer poolからページを更新?(flush)のような
# InnoDBのBackgroundのタスク(Task)によって実行されるときにI/O 活性の上限値(An upper limit)を設定
# Default 200
# Dynamic 設定可能。 SET GLOBAL innodb_io_capacity = 200
innodb_io_capacity = 600

# auto-increment の値を生成するときに lock mode を決める
# Default 1
# Dynamic 設定可能。
innodb_autoinc_lock_mode = 1

# INSERT が発生されると補助インデックスがすぐ反映されずにメモリにBufferingにされる、これを利用するかしないかを決める。
# inserts, deletes, purges, changes, all, noneの中で選べる
# Default all.
# Dynamic 設定可能。 SET GLOBAL innodb_change_buffering = inserts
innodb_change_buffering = inserts

# このパラメータを設定すると、Old LRUリストに格納されたページに対して
# 再びアクセスが発生しても、指定した時間が経過するまではYoung LRUリストに移動されないようになります。
# innodb_old_blocks_timeはミリ秒単位で指定し、デフォルトは0(無効)となっています。
innodb_old_blocks_time = 500

##--------------------------------------------------------------------
# InnoDB base
##--------------------------------------------------------------------
# InnoDBをメインで使うなら、一番重要なパラメータ。
# InnoDBに対する各種操作の他、レコードデータなどのキャッシュ領域として利用され、
# 非同期I/Oスレッドやサーバスレッドがアクセスする。InnoDBバッファプール上
# データへのアクセスにはディスクI/Oが発生しないが、バッファプール内に収まり
# きらなくなったデータはディスク上に退避されることになる。
# InnoDBがテーブルもしくはインデックスデータをCacheするためのBuffer Poolサイズ
# ※この値を大きく設定するとDiskのI/Oを減らしてくれる
# InnoDB 専用サーバーなら物理的なメモリの80%を割り当てても問題ない
# Default 134217728 (128MB)
# Dynamic 設定可能。
innodb_buffer_pool_size = 1GB #1073741824

# InnoDB のデータファイルの位置を指定
innodb_data_home_dir = /usr/local/mysql/current/data/InnoDB

# InnoDB データファイルとその大きさを指定
# Default 10MB の大きさでファイル名は ibdata1 だ。
innodb_data_file_path = ib_data:100M:autoextend

# 基本的に InnoDBはシステムテーブルスペースと呼ばれるところにすべてのテーブルが生成される。
# この変数を活性化するとシステムテーブルスペースの代わりにデータとインデックスを別途のファイルに保存する。
# 拡張子は .ibd
# Default 0
# この機能は 5.6.1 以上から使える
# Dynamic 設定可能。 SET GLOBAL innodb_file_per_table = 1
innodb_file_per_table = 1

# InnoDB システムテーブルが容量いっぱいになったら、拡張するが、拡張する大きさを決める。
# Default 8 MB 
# Dynamic 設定可能。 SET GLOBAL innodb_autoextend_increment = 10MB
innodb_autoextend_increment = 10MB

# InnoDB redo log ファイルが生成されるディレクトリを指定。 生成されるファイル数は innodb_log_files_in_groupで指定。
# InnoDB 値を指定しないと 5MB 大きさの ib_logfile0, ib_logfile1 二つのファイルが生成される。
# Dynamic 設定可能。
innodb_log_group_home_dir = /usr/local/mysql/current/data/InnoDB/redoLogs

# InnoDB Shutdownモードを決める設定。 この値が 0 なら、InnoDBはFull PURGE, insert Bufferをmerging(反映する)Slow Downになる。
# Default 1
# Dynamic 設定可能。 SET GLOBAL innodb_fast_shutdown = 1
innodb_fast_shutdown = 0

# ロググループのログファイル数を指定
# Default 2 
# Dynamic 設定可能。
innodb_log_files_in_group = 4

# ロググループの各ログファイルのサイズを決める。 1MBから innodb_buffer_pool_size/innodb_log_files_in_group で出た値を設定する
# Default 5MB
# Dynamic 設定可能。
innodb_log_file_size = 268435456

# InnoDBログパッファはInnoDBテーブルに対する更新ログ、いわゆるトランザクション
# ログを管理し、InnoDB専用スレッドやサーバスレッドがアクセスする領域。
# Oracleで言うとREDOログに相当する。トランザクション終了時(コミット時やロールバック時)、
# バッファがいっぱいになった時、一定時間ごとにディスクに書き込まれる。
# 実行途中のトランザクションの多くはこのバッファで管理される。
# 1つのトランザクション内で多くのデータを更新するのであればサイズを大きくした方がいいが、
# それほど気にしなくてもよさそうではある。1?8Mの範囲が推奨されている。
# ログのBufferのためにサイズを指定。たくさん割り当てる必要はないかも。。
# Default 8388608 (8MB)
# Dynamic 設定可能。
innodb_log_buffer_size = 16777216


# InnoDBテーブルの定義情報など、データディクショナリ情報を格納する。
# この領域が足りなくなったらエラーログに警告を出すとともに、OSのメモリ領域
# から追加で割り当てられる。それほど気にする必要はないが、InnoDBテーブルの
# 数を多くする場合はこの値も多少増やした方がいい、かも。
innodb_additional_mem_pool_size = 8MB

# XA Transactionで two-phase commit を支援するかどうかを決める。
# 一つのThreadでデータの変更を実行する場合はこのオプションは利用しない方がいい
# Default TRUE
# Dynamic 設定可能。 SET GLOBAL innodb_support_xa = TRUE
innodb_support_xa = FALSE

# 処理を同時に実行できるスレッド数の上限値
# 処理を並列に行うとスループット(単位時間当たり処理量)の向上が期待出来るが、
# 同時に実行中のスレッドがあまりに多すぎるとロックの競合が多発してしまって返って性能を落とす原因になってしまう
# 上限値にThreadが達するとFIFOのQueueに待機状態になる。
# Default 0 (infinite concurrency)
# Dynamic 設定可能。 SET GLOBAL innodb_thread_concurrency = 1
innodb_thread_concurrency = 100 #0

# InnoDB transactionが row lock がかかった時に、待つ時間
# Default 50. 単位は秒(second)
# Dynamic 設定可能。 SET GLOBAL innodb_lock_wait_timeout = 50
innodb_lock_wait_timeout = 60

# InnoDBで、TransactionがCommitされるたびに、Diskに書くかどうかを決める
# Default 1
# Dynamic 設定可能。 SET GLOBAL innodb_flush_log_at_trx_commit = 1
innodb_flush_log_at_trx_commit = 1

# MySQL サーバーが起動される際に InnoDBを復旧作業を実行するが, 復旧作業がうまくいかなかったら復旧されない。
# この時、この値を指定してサーバを始めると各数字に沿って復旧のレベルが決められる。
# デフォルトは 0 (強制的な復旧を行わない通常の起動) 
# Dynamic 設定可能。
innodb_force_recovery = 0

# UNIX/Linuxにおいてデータファイル、ログファイルの読み書き方式を指定するためのもの
# Bufferの読み書き方式
# Default fdatasync
# Dynamic 設定可能。
innodb_flush_method = O_DIRECT

# この機能を使うと InnoDBはデータを2回保存する、1回目はdoublewrite buffer,
# 2回目は実際の data files 書く
# Default 1
# Dynamic 設定可能。
innodb_doublewrite = 1

# Threadがサスペンド(中止される)前に InnoDB Mutex(相互排他ロック)が切れる前に待つ時間?
# Default 30
# Dynamic 設定可能。 SET GLOBAL innodb_sync_spin_loops = 20
innodb_sync_spin_loops = 20

# autocmmit = 0 の場合、 InnoDB は "LOCK TABLES"になる。
# もし、この変数を活性化すると autocmmit =0 である状態で "LOCK TABLES" コマンドで
# 内部的に InnoDBはテーブルロック(lock)する。
# Dynamic 設定可能。 SET GLOBAL innodb_table_locks = 1
innodb_table_locks = 1

# InnoDB QueueをJoiningする前に InnoDB Threadをどれぐらい待たせるのかを設定
# innodb_concurrency_ticketsが0になったスレッドは、システム変数innodb_thread_sleep_delayで設定された時間だけ待ってInnoDBキューに加わる。
# Default 10000, 単位は microseconds
# Dynamic 設定可能。 SET GLOBAL innodb_thread_sleep_delay = 10000
innodb_thread_sleep_delay = 1000

# purge(PURGE LOGSログファイルの削除) 処理が遅い時、 INSERT, UPDATE, DELETE 処理をどれぐらい遅延させるかを設定
# Defaultは 0, 単位は millisconds だ。
# Dynamic で設定できる。 SET GLOBAL innodb_max_purge_lag = 10000
innodb_max_purge_lag = 0

# 同時にCommitができるThreadの数。 0 は制限なし
# Defaultは 0
# この設定はRuntimeで 0 には変更できない
# 0 以外は変更できる
# 制限が入って Dynamic 変更可能。 SET GLOBAL innodb_commit_concurrency = 100
innodb_commit_concurrency = 0

# InnoDB に同時に入る事ができるスレッドの数
# スレッドが InnoDB に入ろうとする時にもし並行処理の限度までスレッド数が達していたら、それらは列になる
# Default 500
# Dynamic 設定も可能 SET GLOBAL innodb_concurrency_tickets = 500
innodb_concurrency_tickets = 500

##--------------------------------------------------------------------
# mysqldump
##--------------------------------------------------------------------
[mysqldump]

# TableをDumpするときに、 MySQLはサーバのメモリをBufferingする。 でも大きいテーブルをDumpするときに、メモリBufferingをするとサーバに問題が起きる可能性がある。
# このメモリBufferingを消すためのパラメタ。
# Default:メモリBuffer使用する
quick


# ユーザプロセスとサーバスレッドの間で、SQL文による問合せやその結果をやりとりする際に
# 使用される領域の最大サイズを指定する。
# これより大きなサイズのデータ通信はできない。
# デフォルトは1Mだが、大きなサイズのデータを扱う場合はこの値も大きくした方がいい。
# Default 1M
max_allowed_packet = 32MB #33554432

##--------------------------------------------------------------------
# mysql console
##--------------------------------------------------------------------
[mysql]

# mysql で、Defaultの文字セット指定
default-character-set = utf8

# コマンドの自動完成機能、
# あれば、楽だがシステムのメモリを使うため、使わない方がいい
no-auto-rehash

# MySQL で、警告(Warning)が発生すると表示はせず、その結果に警告があるかどうかだけ、出るようになっていて、 "SHOW WARNINGS;"を利用してみなければならないが
# 警告が発生するとそのまま表示してくれるように設定できる
show-warnings

# MySQL ClientのPromptを変更する
prompt=\u@\h:\d\_\R:\m:\\s>

# paging 機能を支援する。
pager="less -n -i -F -X -E"

##--------------------------------------------------------------------
# mysql client
##--------------------------------------------------------------------
[client]
socket  = /usr/local/mysql/current/tmp/mysql.sock
port = 3306



my.cnfダウンロード(コメント削除)

MySQLのインストール

MySQLのインストール手順は下記のURLを参照してください。
MySQLのインストール

0 コメント:

コメントを投稿