普通のKeyがあればUPDATEもDELETEもそこまで問題なかった話を書いたけれど。
Primary Keyがないテーブルで複数行のUPDATEやDELETEをして、
それをレプリケーションしていたりすると大問題になるケースがあったりする。
http://lists.mysql.com/mysql/227217
…もともとこの話書きたかった気がするんだけどなぁ。。
ざっくり要約すると、binlog_formatがROWまたはMIXEDの場合、
Primary Keyが設定されていないとテーブルを全スキャンする必要があるので
とんでもなくレプリケーションが遅れる、という感じ。
Primary Key設定漏れがないかどうか確認するのはこんな感じ。
SELECT
db,
name
FROM (
SELECT
t.table_schema AS db,
t.table_name AS name,
constraint_name,
table_type
FROM information_schema.tables AS t
LEFT JOIN information_schema.table_constraints AS tc ON
t.table_name = tc.table_name AND
constraint_name = 'PRIMARY'
) AS tmp
WHERE
constraint_name IS NULL AND
table_type = 'BASE TABLE' AND
db NOT IN ('mysql','information_schema','performance_schema');
0 件のコメント :
コメントを投稿