2

私は CMS を実行していますが、これは CMS とは関係ありません。

次のような簡単なクエリがあります。

UPDATE e107_online SET `online_location` = 'http://page.com/something.php?', `online_pagecount` = 133 WHERE `online_ip` = '175.44.*.*' AND `online_user_id` = '0' LIMIT 1;

しかし、私の Web サイトのサポートから報告された同じクエリでは、次のことがわかります。

User@Host: cosyclim_website[cosyclim_website] @ localhost [] 

Thread_id: 7493739 Schema: cosyclim_website 

Query_time: 12.883518 Lock_time: 0.000028 Rows_sent: 0 Rows_examined: 0 Rows_affected: 1 Rows_read: 1

単純な更新クエリに 12 (ほぼ 13) 秒かかりますか? どういうわけかそれを最適化できる方法はありますか?PhpMyAdmin で実行すると、0.0003 秒かかります。

テーブル:

CREATE TABLE IF NOT EXISTS `e107_online` (
  `online_timestamp` int(10) unsigned NOT NULL default '0',
  `online_flag` tinyint(3) unsigned NOT NULL default '0',
  `online_user_id` varchar(100) NOT NULL default '',
  `online_ip` varchar(15) NOT NULL default '',
  `online_location` varchar(255) NOT NULL default '',
  `online_pagecount` tinyint(3) unsigned NOT NULL default '0',
  `online_active` int(10) unsigned NOT NULL default '0',
  KEY `online_ip` (`online_ip`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
4

2 に答える 2

0

遅いのはこのクエリだけですか、それとも Web サイトからのクエリは一般的に遅いですか? phpMyAdmin は、データベースが存在するマシン上で直接クエリを実行している可能性が高く、これはネットワーク遅延が事実上 0 ミリ秒であることを意味します。WHERE 句に 2 つの列を含むインデックスを追加することをお勧めしますが、50 行未満では意味がありません。これは、Web サイトとデータベース サーバーの間の閉塞に帰着します。

また、接続プールをオンにせずに実行する (または不必要に大量の接続を作成する) などのばかげたことをしていないことを確認してください。スペースを使い果たした接続プールがこれと同様の問題を引き起こすのを見てきました。

于 2013-05-19T02:28:57.163 に答える