最近、いくつかの非常に基本的な更新がタイムアウトし、原因を特定できませんでした。例:
//#Query_time:51 Lock_time:0 Rows_sent:0 Rows_examined:0
UPDATE
photos
SET position = position + 1 WHERE (photo_album_id = 40470);
同じログには、Lock_time> 0のエントリはありshow innodb status
ません。実行しても、関連するロックは明らかになりません。この問題は、私のアプリケーションサーバーログ(Mysql::Error: Lock wait timeout exceeded
mysql-slowログの対応する各エントリに関連するエラーを示す)に基づいて、少なくとも5つの異なるテーブルに影響しているようです。
ここからどこへ行くべきかについてのアイデアはありますか?私はあらゆる方向に行き止まりを打っています。ありがとう。
編集:
CREATE TABLE `写真`( `id` int(11)NOT NULL auto_increment、 `type` varchar(255)NOT NULL、 `photo_album_id` int(11)NOT NULL、 `user_id` int(11)NOT NULL、 `title` varchar(255)default 'Untitled'、 「説明」テキスト、 `credit` varchar(255)デフォルトはNULL、 `photo_file_name` varchar(255)デフォルトはNULL、 `photo_content_type` varchar(255)デフォルトはNULL、 `photo_file_size` int(11)デフォルトはNULL、 `photo_updated_at`日時デフォルトNULL、 `position` int(11)デフォルトは '0'、 `views` int(11)デフォルトは '0'、 `folder` varchar(255)デフォルトはNULL、 `published` tinyint(1)デフォルトは '0'、 `published_at`日時デフォルトNULL `created_at` datetime default NULL、 `updated_at`日時デフォルトNULL、 `album_published` tinyint(1)デフォルトは '0'、 `comment_count` int(11)デフォルトは '0'、 `audio_file_name` varchar(255)デフォルトはNULL、 `audio_content_type` varchar(255)デフォルトはNULL、 `audio_file_size` int(11)デフォルトはNULL、 `audio_updated_at`日時デフォルトNULL、 `cover` tinyint(1)デフォルトは '0'、 `slug` varchar(255)デフォルトはNULL、 `comments_count` int(11)デフォルトは '0'、 `delete_from_s3` tinyint(1)デフォルトは '0'、 `batch` int(11)デフォルトはNULL、 `audio` varchar(255)デフォルトはNULL、 PRIMARY KEY( `id`)、 KEY `index_photos_on_album_published`(` album_published`)、 KEY `index_photos_on_batch`(` batch`)、 KEY `index_photos_on_comment_count`(` comment_count`)、 KEY `index_photos_on_created_at`(` created_at`)、 KEY `index_photos_on_delete_from_s3`(` delete_from_s3`)、 KEY `index_photos_on_photo_album_id`(` photo_album_id`)、 KEY `index_photos_on_published`(` published`)、 KEY `index_photos_on_published_at`(` published_at`)、 KEY `index_photos_on_type`(` type`)、 KEY `index_photos_on_user_id`(` user_id`) )ENGINE = InnoDB AUTO_INCREMENT = 42830 DEFAULT CHARSET = utf8
UPDATE table SET <field>=<field>+1 WHERE <pk_field>=1;
私のテーブルはもっとシンプルです。ランダムにこれが発生している同じエラーが発生します。私のバージョンは5.1.39です。今日はそれを理解するために少し時間を費やしているので、何か見つけたら更新します。