Wednesday, 15 August 2012

java - Why am i getting mysql lag on my minecraft bukkit plugin? -



java - Why am i getting mysql lag on my minecraft bukkit plugin? -

i made bukkit plugin mysql on , need know why having lag whenever code runs run server on scheme , mysql server hostgator heres code

openconnection(); try{ int level1 = 0; if(playerdataconatinsplayer(p)){ preparedstatement sql = connection.preparestatement("select level `player_data` player=?;"); sql.setstring(1, p.getname()); resultset result = sql.executequery(); result.next(); level1 = result.getint("level"); preparedstatement levelupdate = connection.preparestatement("update `player_data` set level=? player=?;"); levelupdate.setint(1, level1+1); levelupdate.setstring(2, p.getname()); levelupdate.executeupdate(); levelupdate.close(); sql.close(); result.close(); }else{ preparedstatement newplayer = connection.preparestatement("insert `player_data` values(?,0,1,0);"); newplayer.setstring(1, p.getname()); newplayer.execute(); newplayer.close(); } }catch(exception e1){ e1.printstacktrace(); }finally{ closeconnection(); }

here openconnection method

public synchronized static void openconnection(){ try{ connection = drivermanager.getconnection(""); //i know empty cause dont wanna give info out }catch(exception e){ e.printstacktrace(); } }

heres closeconnection

public synchronized static void closeconnection(){ try{ connection.close(); }catch(exception e){ e.printstacktrace(); } }

there few things can speed queries latency:

if app query intensive utilize persistent connections , maintain them open instead of opening new connection every time need access database.

run mysql server locally speed connection times.

index search fields of tables (e.g. player on player_data) have search run faster.

run mysql server on powerful, dedicated machine ssd drives , lots of ram, , set proper parameters on my.cnf (worker threads, max processes, max number of connections, memory limit, buffer sizes) create utilize of ram , processing powerfulness , speed search , processing times. things this question , answers may help memory settings, best can own, exhaustive, online research , testing. homework!

use kind of caching scheme speed reading (like memcached).

if app info intensive , has back upwards huge number of connections, higher bandwidth or consider setting cluster balance load.

reduce number of queries! don't need query database twice increment level!

try:

if (playerdatacontainsplayer(p)){ preparedstatement levelupdate = connection.preparestatement( "update player_data set level=level+1 player=?;" ); levelupdate.setstring(1, p.getname()); levelupdate.executeupdate(); levelupdate.close(); sql.close(); } else { ... }

java mysql minecraft bukkit

No comments:

Post a Comment