mirror of
https://github.com/correl/mage.git
synced 2025-04-12 17:00:08 -09:00
Merge pull request #2691 from sotovdev/sqlPerf
SQL query perfomance improvements
This commit is contained in:
commit
6955ad803f
3 changed files with 20 additions and 23 deletions
Mage.Server/src/main/java/mage/server/record
Mage/src/main/java/mage/cards/repository
|
@ -7,17 +7,18 @@ import com.j256.ormlite.stmt.QueryBuilder;
|
|||
import com.j256.ormlite.support.ConnectionSource;
|
||||
import com.j256.ormlite.support.DatabaseConnection;
|
||||
import com.j256.ormlite.table.TableUtils;
|
||||
import java.io.File;
|
||||
import java.sql.SQLException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import mage.cards.repository.RepositoryUtil;
|
||||
import mage.game.result.ResultProtos;
|
||||
import mage.server.rating.GlickoRating;
|
||||
import mage.server.rating.GlickoRatingSystem;
|
||||
import org.apache.log4j.Logger;
|
||||
|
||||
import java.io.File;
|
||||
import java.sql.SQLException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
|
||||
public enum UserStatsRepository {
|
||||
|
||||
instance;
|
||||
|
@ -68,7 +69,7 @@ public enum UserStatsRepository {
|
|||
public UserStats getUser(String userName) {
|
||||
try {
|
||||
QueryBuilder<UserStats, Object> qb = dao.queryBuilder();
|
||||
qb.where().eq("userName", userName);
|
||||
qb.limit(1L).where().eq("userName", userName);
|
||||
List<UserStats> users = dao.query(qb.prepare());
|
||||
if (users.size() == 1) {
|
||||
return users.get(0);
|
||||
|
@ -92,7 +93,7 @@ public enum UserStatsRepository {
|
|||
public long getLatestEndTimeMs() {
|
||||
try {
|
||||
QueryBuilder<UserStats, Object> qb = dao.queryBuilder();
|
||||
qb.orderBy("endTimeMs", false).limit(1);
|
||||
qb.orderBy("endTimeMs", false).limit(1L);
|
||||
List<UserStats> users = dao.query(qb.prepare());
|
||||
if (users.size() == 1) {
|
||||
return users.get(0).getEndTimeMs();
|
||||
|
@ -106,7 +107,7 @@ public enum UserStatsRepository {
|
|||
// updateUserStats reads tables finished after the last DB update and reflects it to the DB.
|
||||
// It returns the list of user names that are upated.
|
||||
public List<String> updateUserStats() {
|
||||
HashSet<String> updatedUsers = new HashSet();
|
||||
HashSet<String> updatedUsers = new HashSet<>();
|
||||
// Lock the DB so that no other updateUserStats runs at the same time.
|
||||
synchronized(this) {
|
||||
long latestEndTimeMs = this.getLatestEndTimeMs();
|
||||
|
|
|
@ -37,20 +37,17 @@ import com.j256.ormlite.stmt.Where;
|
|||
import com.j256.ormlite.support.ConnectionSource;
|
||||
import com.j256.ormlite.support.DatabaseConnection;
|
||||
import com.j256.ormlite.table.TableUtils;
|
||||
import java.io.File;
|
||||
import java.sql.SQLException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import java.util.TreeSet;
|
||||
import java.util.concurrent.Callable;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.SetType;
|
||||
import mage.util.RandomUtil;
|
||||
import org.apache.log4j.Logger;
|
||||
|
||||
import java.io.File;
|
||||
import java.sql.SQLException;
|
||||
import java.util.*;
|
||||
import java.util.concurrent.Callable;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author North
|
||||
|
@ -65,12 +62,10 @@ public enum CardRepository {
|
|||
private static final long CARD_DB_VERSION = 48;
|
||||
// raise this if new cards were added to the server
|
||||
private static final long CARD_CONTENT_VERSION = 65;
|
||||
|
||||
private final TreeSet<String> landTypes = new TreeSet();
|
||||
private Dao<CardInfo, Object> cardDao;
|
||||
private Set<String> classNames;
|
||||
|
||||
private final TreeSet<String> landTypes = new TreeSet();
|
||||
|
||||
CardRepository() {
|
||||
File file = new File("db");
|
||||
if (!file.exists()) {
|
||||
|
@ -315,7 +310,7 @@ public enum CardRepository {
|
|||
public CardInfo findCard(String setCode, String cardNumber) {
|
||||
try {
|
||||
QueryBuilder<CardInfo, Object> queryBuilder = cardDao.queryBuilder();
|
||||
queryBuilder.where().eq("setCode", new SelectArg(setCode)).and().eq("cardNumber", cardNumber).and().eq("nightCard", false);
|
||||
queryBuilder.limit(1L).where().eq("setCode", new SelectArg(setCode)).and().eq("cardNumber", cardNumber).and().eq("nightCard", false);
|
||||
List<CardInfo> result = cardDao.query(queryBuilder.prepare());
|
||||
if (!result.isEmpty()) {
|
||||
return result.get(0);
|
||||
|
|
|
@ -7,12 +7,13 @@ import com.j256.ormlite.stmt.QueryBuilder;
|
|||
import com.j256.ormlite.stmt.SelectArg;
|
||||
import com.j256.ormlite.support.ConnectionSource;
|
||||
import com.j256.ormlite.table.TableUtils;
|
||||
import org.apache.log4j.Logger;
|
||||
|
||||
import java.io.File;
|
||||
import java.sql.SQLException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
import org.apache.log4j.Logger;
|
||||
|
||||
/**
|
||||
*
|
||||
|
@ -112,7 +113,7 @@ public enum ExpansionRepository {
|
|||
ExpansionInfo set = null;
|
||||
try {
|
||||
QueryBuilder<ExpansionInfo, Object> qb = expansionDao.queryBuilder();
|
||||
qb.where().eq("code", new SelectArg(setCode));
|
||||
qb.limit(1L).where().eq("code", new SelectArg(setCode));
|
||||
List<ExpansionInfo> expansions = expansionDao.query(qb.prepare());
|
||||
if (expansions.size() > 0) {
|
||||
set = expansions.get(0);
|
||||
|
@ -126,7 +127,7 @@ public enum ExpansionRepository {
|
|||
ExpansionInfo set = null;
|
||||
try {
|
||||
QueryBuilder<ExpansionInfo, Object> qb = expansionDao.queryBuilder();
|
||||
qb.where().eq("name", new SelectArg(setName));
|
||||
qb.limit(1L).where().eq("name", new SelectArg(setName));
|
||||
List<ExpansionInfo> expansions = expansionDao.query(qb.prepare());
|
||||
if (expansions.size() > 0) {
|
||||
set = expansions.get(0);
|
||||
|
|
Loading…
Add table
Reference in a new issue