データベース: mysql -- テーブル構造は.
------------------------------------------
phone_no (This is PK) | month | year
------------------------------------------
varchar(15) | INT (2) | INT(4)
これには何百万ものレコードがあり、ユーザーが月に初めてサイトにアクセスすると、DB にエントリを作成する必要があります。それ以外は何も起こりません。これはレポート目的です。私のJavaコードは次のとおりです。
The VO ---->
public class UesrAccessInfo {
private String phone_no;
private int year;
private int month;
.. getters and setters ...
}
テーブルにアクセスするためのJavaコードは次のとおりです。
/* 以下のメソッドは Java コードで実装され、db アクセスはありません */
String phone_no = getPhoneNumber();
int currentMonth = getCurMonth();
int currentYear = getCurYear(;
if (phone_no == null ) {
request.setAttribute("firstAccessInCurrentMonth", false);
}
else{
UesrAccessInfo oUesrAccessInfo = new UesrAccessInfo();
oUesrAccessInfo.setPhone_no(phone_no);
UserAcessHistoryDBUtil.getUesrAccessInfo(oUesrAccessInfo);
//////////// Code for getUesrAccessInfo() in UserAcessHistoryDBUtil class /////////////
String sql = "select month , year from user_access_history where phone_no= ?";
String[][] rs = new MyDBAccessor().getPreparedTable(sql,new String[] { oUesrAccessInfo.getMsisdn() });
if (rs != null && rs.length > 0) {
for (String[] item : rs) {
oUesrAccessInfo.setMonth(Integer.parseInt(item[0]));
oUesrAccessInfo.setMonth(Integer.parseInt(item[1]));
}
}else{
oUesrAccessInfo.setMonth(0);
}
}
/////////////////////////////////////////////////////////////////
/**
* User is already present in database
*/
if(oUesrAccessInfo.getMonth() != 0){
/**
* User has already accessed the site in current month
*/
if(oUesrAccessInfo.getYear() == currentYear && oUesrAccessInfo.getMonth() == currentMonth){
request.setAttribute("firstAccessInCurrentMonth", false);
}
else{
UserAcessHistoryDBUtil.updateUserAccessHistory(phone_no, ""+ currentMonth, "" + currentYear);
request.setAttribute("firstAccessInCurrentMonth", true);
}
}
/**
* User is not present in database
*/
else{
UserAcessHistoryDBUtil.createUserAccessHistory(phone_no,""+ currentMonth, "" + currentYear);
request.setAttribute("firstAccessInCurrentMonth", true);
}
}
SO、ここで私はパフォーマンスの問題に直面しています。サーバーでメモリ不足エラーが発生する可能性があるため、キャッシュを使用できません。
パフォーマンスを改善するための提案は、私はmysqlの初心者です。