we are all aware of the popular trend of MMO games. where players face each other live.\[quote\] My area of concern, is storage of player moves and game results. Using Csharp and PostgreSql v9.0 via NPGSQL adapter The game client is browser based ASP.NET and calls Csharp functions for all database related processing\[/quote\]To understand my query, please consider the following scenariowe store game progress in a postgres table.For Example a tournament starts with four players and following activity[*]Each player starts with 100hitpoints[*]player 1 makes a strike (we refer to a chart to convert blows to hitpoints with random-range %)[*]player 2 has 92HP, and returns a light blow, so player1 has 98hpThe above two round will now be in Game Progress Table, as\[code\]ROW Player1HP Player2HP Strikefrom StrikeTo ReturnStrikeHP Round TimeStamp StrikeMethod1 100 100 0 0 0 02 98 92 P1 P2 2 1\[/code\]To find if tournament has ended we check 3 players have zero hitpoints Or gametime has elapsed a stipulated timeout value from last progressour table has a primarykey as tournamentid a random 32 character code on basis of playerids (8 for each player)There are other columns such as armor , mana, spells , which all get carried forward for each player , in total there are 48 columns - 12 for each player and their attributesFinally there is a gameResult table that has result of a tournament , with tournamentid, tournament_timestamp, gameresult (complete, PlayerSurrender, InvalidSession , SecurityHack, TimeOut), winnerPlayer , playerMetrics , rowIDfrom, rowIDtoQUERY\[quote\] My questions are focussed on reducing load on Game database or Sql queries\[/quote\]a) How to detect if a player has not logged in simutaneously and opened two game sessions but without having to refer to a Database or using Sqlb) How to control the surge of records into the GameProgress table. so that players get response quicker. The Server starts to lag at peak hours or when 1000 players are online\[code\]There is a tremendous flow of sql queries, for ex. even in the current game versionThere are average/minimum 100 tournaments online per 12 minutes or 500 players / hourIn Game Progress table, We are storing each player move a 12 round tourament of 4 player there can be 48 records plus around same number for spells or special items a total of 96 per tourament or 48000 record inserts per hour (500 players/hour)\[/code\]I am also considering using a background process in Csharp, that keeps moving expired tournament records from GameProgresstable to another Database where we have a server free of gameplay load. c) How often should we run vaccum full of postgres . I am open to new applications opensource or toPay, that can improve performance. For ex. we used FastCsvReader http://www.codeproject.com/Articles/9258/A-Fast-CSV-Reader to improve enumeration of server log files.regardsArvind