ユーザ用ツール

サイト用ツール


サイドバー

このページの翻訳:



最近の更新



Tag Cloud

01_linux:11_データベース:01_mysql:03_innodbテーブル分割

03 InnoDBテーブル分割

InnoDB のデータファイルは,MyISAM テーブルと異なって,デフォルトでは ibdata1 というファイルにデータが蓄積されていくとこになります。

この ibdata1 は,大量のデータを追加していくと,自動的にサイズを拡張していきます。

ただし,データが削除されても自動的には縮小されません。

MySQLのクエリ処理した際とかにどんどんたまっていくようです。

INSERTやUPDATE、DELETE等ですね!

MyISAMとInnoDBの違い

テーブル分割

ダンプ

# mysqldump -u root -p --no-autocommit --all-databases > all_backup.sql

MySQL 停止

# /etc/init.d/mysql stop

my.cnf修正

# vi /etc/my.cnf
[mysqld]
default-storage-engine=InnoDB
innodb_file_per_table
skip-innodb-doublewrite  # リストアが早くなる

skip-innodb-doublewrite について

InnoDBは、耐障害性を高めるためにInnoDBデータファイル内で2箇所への書き込みを行なうという実装になっています。

すなわち「SHOW VARIABLES LIKE 'innodb_doublewrite'」で、innodb_doublewriteがONになっています。

ただ、実際にはInnoDBログファイルやバイナリログから復旧可能なため、必ずしも設定が必要なわけではありません。

そこで二重書き込みをやめるために、初期設定ふぁいるに「skip-innodb-doublewrite」を加えることで、innodb_doublewriteの値をOFFにできます。

これで、データファイルへの書き込み量を削減できます。これはMySQL5.0以降の機能です。

現在のデータファイル削除

# rm -rf /var/lib/mysql/ib*

MySQL起動

# /etc/init.d/mysql start

リストア

# mysql < all_backup.sql

これで、tablename.idb ができるようになります。

01_linux/11_データベース/01_mysql/03_innodbテーブル分割.txt · 最終更新: 2013/11/01 15:15 by matsui