[Seasar-user:5467] Re: [S2Dao]MySQLでクエリキャッシュがヒットしない
Hirotaka HONMA
[E-MAIL ADDRESS DELETED]
2006年 12月 14日 (木) 14:14:19 JST
本間です。
on Thu, 14 Dec 2006 12:12:28 +0900
in [Seasar-user:5459] Re: [S2Dao]MySQLでクエリキャッシュがヒットしない
Yusuke Kawabata <[E-MAIL ADDRESS DELETED]> wrote:
> > S2Daoとしては特別な処理を行っていません。
> > 素のJDBCでクエリキャッシュを利用できるか、ご確認いただけます
> > か? (そのコードを頂けるとありがたいです)
>
> 下記サンプルコードで接続、クエリ発行、切断を繰り返し
> クエリキャッシュにヒットしていることを確認いたしました。
ご確認ありがとうございます。
> > また、クエリキャッシュはどの単位で効くものなのでしょうか?
> データベース単位(キャッシュ自体はmysqld全体で共有)に効きます。
とすると、効きそうに思えるのですが...
> 結果セットの大きさも考えたのですが、実際に発行しているクエリでは
> S2PagerのLimitOffsetラッパーを使用しているので10件以下になり、
> キャッシュ可能な最大値を超えていることもないようです。
>
> --ここから---
> package com.housedo.model.dao.test;
> import java.sql.*;
> public class PrefTest {
>
> public static void main(String[] args) {
> try{
> Class.forName("com.mysql.jdbc.Driver").newInstance();
> for(int i=0;i<100;i++){
> Connection con = DriverManager.getConnection(
> "jdbc:mysql://localhost/test", "root", "pass");
> Statement stmt = con.createStatement();
> ResultSet rs = stmt.executeQuery("SELECT * from E_PREF LIMIT 1");
> while (rs.next()) {
> System.out.println(rs.getString("PREF_ID"));
> }
> rs.close();
> stmt.close();
> con.close();
> }
> } catch (SQLException e1) {
> //略
> } catch (Exception e2) {
> //略
> }
> }
> }
> --ここまで--
Statementではなく、PreparedStatementではどうでしょうか?
# [Seasar-user:5464]でも効いていないとのことで、S2Daoと↑の
# コードとの差異を考えるとStatementとPreparedStatementあたり
# かな、と。
Seasar-user メーリングリストの案内