MYSQLのインストール
yumのリポジトリからインストールする。
$ sudo yum install -y --enablerepo=remi mysql-server
my.cnfを設定する。
4行目に次を追加
character_set_server=utf8
default-storage-engine=InnoDB
innodb_file_per_table
[mysql]
default-character-set=utf8
[mysqldump]
default-character-set=utf8
MySQLを起動する
$ sudo service mysqld start
セキュアの設定
$ /usr/bin/mysql_secure_installationパスワードを設定する。
デフォルトで起動させる。
$ sudo chkconfig mysqld on
MySQLのオプションファイルをいじる
Ver 3.22以降のMySQLはデフォルトスタートアップオプションをオプション設定ファイル(本環境ではmy.cnf)から読み込む。
MYSQLの設定 my.cnfをいじってみる
MySQLにログインして、現在設定されている変数情報を見てみる。
> show variables;
ズラッと変数情報が出てきた。
「MySQLリファレンス」を参考に、innodb_で始まる変数の中で面白そうなものをいじってみる。
innodb_buffer_pool_size
データをキャッシュするバッファの大きさ。これが大きくなるほどI/Oが減る。
これを小さくして、10万件のInsertしたときの実行速度の差を見る。
・128MB(デフォルト)→ 0.34sec
・32MB → 0.34sec
・5MB(最小)→ 0.35sec
差は見られず。
気分転換にこちらを変えてみる。
innodb_log_file_size
これをいじるとmysqlが起動しなくなった。Innodbのログファイル関係をいじるときは次の手順が必要らしい。
rootで次のコマンドを実行
mysql> SET GLOBAL innodb_fast_shutdown=0;
$ sudo service mysqld stop
$ sudo mv /var/lib/mysql/ib_logfile* /tmp
$ sudo service mysqld start
正常起動しました。
10万件のinsert
・1MB → 0.37sec
・32MB → 0.32sec
100万件のinsert
・1MB → 3.76sec
・32MB → 3.50sec
ちょっとした差は出たが思っていたほどではない。。。
100万件Deleteのほうが大きな差が出た。
・1MB → 3.31sec
・32MB → 2.42sec
Innodbにはいろんなバッファがあり互いに影響し合ってるので、組み合わせによって変わるのだろうが、今のところ全くわからない。
最後に
skip-innodb_doublewrite
これはinnodb_doublewriteをオフにする。
100万件Insert
・ON → 3.33sec
・OFF → 3.36sec
100万件Delete
・ON → 2.89sec
・OFF → 3.76sec
OFFの方が二重書き込みをしないので早くなるかと思ったが、差がでない。
追記
innodb_log_buffer_size
100万件insert
・8MB → 3.5sec
・1MB → 8.7sec
ログファイルへのI/Oが減ることで早くなる模様。しかしなぜinnodb_buffer_pool_sizeでは差が出なかったのかが分からない。バッファ・ログファイル・ディスクへの書き込み順序の影響?
0 件のコメント:
コメントを投稿