初め、
- 1500 レコードのテーブルがあります
- MySQL 5.0.54 を使用しています。
- MySQL 5.0.97 用の dbForge を使用しています
テーブル:
CREATE TABLE IF NOT EXISTS s_users(
user_id MEDIUMINT(9) NOT NULL,
employee_id INT(11) NOT NULL,
surname VARCHAR(50) NOT NULL,
firstname VARCHAR(50) DEFAULT NULL,
phone VARCHAR(25) DEFAULT NULL,
email VARCHAR(100) DEFAULT NULL,
organization_eng VARCHAR(100) DEFAULT NULL,
organization_fra VARCHAR(100) DEFAULT NULL,
unit_id SMALLINT(6) NOT NULL DEFAULT 0,
unit_name_eng VARCHAR(150) DEFAULT NULL,
unit_name_fra VARCHAR(150) DEFAULT NULL,
status ENUM('active', 'inactive') NOT NULL DEFAULT 'inactive',
udate TIMESTAMP DEFAULT CURRENT_TIMESTAMP
)
ENGINE = MYISAM
AVG_ROW_LENGTH = 131
CHARACTER SET utf8
COLLATE utf8_unicode_ci;
ステートメント:
select * from s_users;
再現するための手順は次のとおりです。
- クエリを実行します: select * from s_users;
- レコードセットの最後までスクロールしないでください。302+ のうちの 1 つを示します。
- 別のウィンドウで、クエリshow full processlist;を実行します。
- 状態では、ネットへの書き込みが表示されます
- 最初の SQL ステートメントのレコードセットの最後までスクロールするか、ステートメントが実行されているタブを閉じるまで、クエリは CPU を占有し続け (時間列は増加し続けます)、残りのステートメントをブロックします。
dbForge のどこかに設定がありませんか?
更新 #1
これは私の注意を引きました: https://stackoverflow.com/a/802686/503246
DBForge が特定の C API 呼び出しを使用しているため、このような結果になったのではないでしょうか?