タグ

MySQLと運用に関するkopugのブックマーク (2)

  • ALTER TABLEを上手に使いこなそう。

    テーブル定義を変更したい。インデックスが壊れてしまったので再作成したい。そんな場合はALTER TABLEを使う。ALTER TABLEはテーブル定義を変更するお馴染みのコマンドであるが、その挙動は意外と知られていない。(エキスパートとおぼしき方々からも度々質問を受ける。)そんなわけで、今日はALTER TABLEについて解説しようと思う。 まず結論から言うと、なんとMySQLのALTER TABLEはテーブルのデータを全てコピーし直すのである。なんて無駄なことを!?と思うかも知れないが、テーブル定義(スキーマ)の変更を動的に行うには、ストレージエンジンによるサポートが必要であり、動的なスキーマ変更をサポートしているストレージエンジンはまだ少ないのである。(動的スキーマ変更をサポートしているのはMySQL Clusterぐらいだ。しかも追加だけ。)デフォルトで利用出来るMyISAMはInn

    ALTER TABLEを上手に使いこなそう。
  • mysqldump --single-transaction に --flush-logs をつけてはいけない - tmtms のメモ

    (いまだに時々ブクマされていたりしますが、これはバグで MySQL 5.5.21 以降では修正されています。) mysqldumpMySQL のデータのバックアップを取得するコマンドです。 mysqldump に --single-transaction を指定すると一貫性を保持したバックアップを取得することができます*1。 この時に mysqldump が発行しているクエリは次のような感じです。 [mysqldump --single-transaction DB名] SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ START TRANSACTION WITH CONSISTENT SNAPSHOT UNLOCK TABLES DB選択 テーブルからデータの読み込み「START TRANSACTION WITH CON

    mysqldump --single-transaction に --flush-logs をつけてはいけない - tmtms のメモ
  • 1