MySQL

MySQL 5.5.22 と 5.5.24 のステートメントベースレプリケーションの変更点

MySQL 5.5.22 と 5.5.24 でステートメントベースのレプリケーションで気になる変更点があったので調べてみました。どちらも binlog_format = statement でテストしています。 MySQL 5.5.22 Statements that wrote to tables with AUTO_INCREMENT columns bas…

innodbでサブクエリを使ったときの FOR UPDATE のロックの範囲

前提として、次の通りテーブルを使用する。 CREATE TABLE A ( id INT NOT NULL, no INT NOT NULL, PRIMARY KEY (id, no) ); CREATE TABLE B ( id INT NOT NULL, PRIMARY KEY (id) ); 普通に結合すると A と B の両方の行がロックされる。 SELECT * FROM A IN…

mysqld_multiで複数のインスタンスを立ち上げ

1つのサーバで複数のMySQLのインスタンスを立ち上げるために mysqld_multi を使ったときのメモです。 使用した版は 5.1.61-1.el6_2.1 (CentOS6) です。 設定ファイルを作成します。 vi /etc/my.cnfとりあえず以下の様に作成します、基本的な設定のみです。 …

ストレージエンジン混在でレプリケーション

ストレージエンジンで MyISAM と InnoDB が混在している環境でレプリケーションしたらどうなるか気になったのでやってみました。 前提条件 5.5.16 で、ステートメントベースでレプリケーションしてます。 テーブル定義 CREATE TABLE ii ( id INT NOT NULL PR…

VARCHAR と 〜TEXT の違い

長年知らなかったが、「VARCHAR」と「〜TEXT」では最大文字数の意味が違っていた!!! 試してみる CREATE TABLE t1 (s VARCHAR(255) NOT NULL); CREATE TABLE t2 (s TINYTEXT NOT NULL); INSERT INTO t1 VALUES ( REPEAT('a', 1024) ), ( REPEAT('あ', 1024…

MySQLのinnodbでテーブルロックを使う

テーブルロックとトランザクションは排他的にしか使えないと思っていたが*1自動コミットをOFFにするとテーブルロックとトランザクションを同時に使えるらしい。 http://dev.mysql.com/doc/refman/5.1/ja/lock-tables.html トランザクションとテーブルロック…