[Seasar-user:11055] Re: s2dao 大規模テーブルでselect count(*) 文が非常に時間がかかる

Akira Yamamoto [E-MAIL ADDRESS DELETED]
2007年 10月 17日 (水) 12:10:15 JST


山本です。

ご返答ありがとうございます。

早速JDBCの実行との比較を行ってみました。

s2Dao -> JDBCの順番に同じsqlを実行
dao : 6797 msec
jdbc: 125 msec

JDBC -> s2da0の順番に同じsqlを実行
jdbc: 156 msec
dao : 6781 msec

初期化の順番に多少の影響はありますが差はあるようです。

その後の調査で mysql-connectorを 5.0.3から 5.1.5に
変えたところインデックスの利用方法が変わったのか早くなりました。
(ちなみに s2daoは1.0.45です)
number of assets 7212560
dao 328  
jdbc 218

2回目以降の実行はどちらも数十 msecとなって行きます。

> 前提として、利用しているのは、MyISAMでしょうか、InnoDBでしょうか?
InnoDBです。


JDBCのヒントから解決することができました。ありがとうございました。





On Wed, 17 Oct 2007 01:19:23 +0900
Toshihiro Nakamura <[E-MAIL ADDRESS DELETED]> wrote:

> 中村(taedium)です。
> 
> > mysqlコマンドから実行すると主キーのインデックスが
> > きいていて一瞬なのですが、s2daoの呼び出しでは 6秒近くかかってしまいます。
> > (全表検索をしている気がします。(確認する方法はわかりません))
> 
> まず、S2Daoの問題なのかそうでないかを切り分けたいのですが、
> 通常のJDBCで実行した場合はどうでしょうか?
> 
> また、S2Daoは初めて実行するDaoについてはDaoの初期化を
> 同時に行うのですがその時間が含まれていたりしないでしょうか?
> 
> getNumberOfRows()を実行する前に、同じDaoにある
> 別メソッドを実行してみてください。
> そちらの呼び出し時に初期化が行われるので、
> getNumberOfRows()についてはDaoの初期化の
> 影響を受けずに計測できると思います。
> 
> -- 
> Toshihiro Nakamura
> 
> _______________________________________________
> Seasar-user mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/seasar-user

---------------------------------------
山本 明      [E-MAIL ADDRESS DELETED]




Seasar-user メーリングリストの案内