InnoDBエンジンを備えたMySQL 5.5データベースにデータを保存する仮想マシンで実行されている単純なWebアプリケーションがあります。約3年間はすべて問題なく動作しましたが、突然、非常に遅くなりました。
たとえば、住所を保持する非常に単純なテーブルがあります。
CREATE TABLE `addresses` (
`address_id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(64) CHARACTER SET latin1 NOT NULL,
`firstname` varchar(64) CHARACTER SET latin1 NOT NULL,
`street` varchar(64) CHARACTER SET latin1 NOT NULL,
`housenumber` varchar(16) CHARACTER SET latin1 NOT NULL,
`zip` varchar(5) CHARACTER SET latin1 NOT NULL,
`city` varchar(64) CHARACTER SET latin1 NOT NULL,
`email` varchar(64) CHARACTER SET latin1 NOT NULL,
`phone` varchar(16) CHARACTER SET latin1 NOT NULL,
`birthdate` date NOT NULL,
PRIMARY KEY (`address_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin
このテーブルには約800のエントリがありますが、実際にはそれほど多くありません。しかし、クエリを実行する
SELECT * FROM addresses
テスト目的のため、終了しないようです。私はこれをサーバー自体のmysql CLIで確認しました。テーブルのいくつかの行を出力し、次の行を出力するまで非常に長く待機します。
データ送信フェーズの問題かもしれませんが、よくわかりません。
VMには2GBのRAMがあり、320MBのみが使用されます。CPUも非常に低い1〜2%で実行されます。mytopには、サーバーをブロックしている他のクエリは表示されません。IT管理者は、ハードウェア側では何も変更しなかったと述べています。
データベースサーバーを再起動したり、仮想マシンを再起動したりするようなことはすでに試しました。何も役に立たなかった。
編集:
EXPLAIN SELECT * FROM addresses
私にこの結果を与えます:
+----+-------------+-----------+------+---------------+------+---------+------+------+-------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+-----------+------+---------------+------+---------+------+------+-------+
| 1 | SIMPLE | addresses | ALL | NULL | NULL | NULL | NULL | 793 | |
+----+-------------+-----------+------+---------------+------+---------+------+------+-------+
1 row in set (0.00 sec)
mysql -u username -ppassword mydb -e 'SELECT * FROM addresses
と出力が遅くなりますが、 `> test.txt`を追加すると、非常に速く実行されます。これはおそらく別の質問でしょう!?どうすればこれを調査できますか?