Thread: Reversing transactions on a large scale
Right now we are running mysql as that is what was there when I entered the scene. We might switch to postgres, but I'm not sure if postgres makes this any easier. We run a couple of popular games on social networking sites. These games have a simple economy,and we need to be able to time warp the economy back in time, which means reverting a whole lot of transactions and inventories. Our games generate around 1 million user transactions per hour, which results in inserts/updates on 4 times that many rows. Using PIT recovery would be a very reliable way to accomplish this, but I'm wondering how long it would take. If it takes a full day to roll back an hour of game time, then I need to find another solution. Chris
On Thu, Nov 20, 2008 at 4:36 PM, snacktime <snacktime@gmail.com> wrote: > Right now we are running mysql as that is what was there when I > entered the scene. We might switch to postgres, but I'm not sure if > postgres makes this any easier. > > We run a couple of popular games on social networking sites. These > games have a simple economy,and we need to be able to time warp the > economy back in time, which means reverting a whole lot of > transactions and inventories. Our games generate around 1 million > user transactions per hour, which results in inserts/updates on 4 > times that many rows. Using PIT recovery would be a very reliable > way to accomplish this, but I'm wondering how long it would take. If > it takes a full day to roll back an hour of game time, then I need to > find another solution. PITR is pretty fast, since it sequentially applies changes to the database as fast as it can. Your hardware has a lot to do with this though. Applying changes to a machine with plenty of memory, fast CPUs, and a big rockin RAID-10 array will of course be much faster than doing the same thing on a laptop. If you make "base" sets every night at midnight with snapshots, then it shouldn't take too long. Is this gonna be a regular thing, or is this more of an occasional occurance when things in the game go horribly wrong?
> On Thu, Nov 20, 2008 at 4:36 PM, snacktime <snacktime@gmail.com> wrote: >> Right now we are running mysql as that is what was there when I >> entered the scene. We might switch to postgres, but I'm not sure if >> postgres makes this any easier. >> >> We run a couple of popular games on social networking sites. These >> games have a simple economy,and we need to be able to time warp the >> economy back in time, which means reverting a whole lot of >> transactions and inventories. Our games generate around 1 million >> user transactions per hour, which results in inserts/updates on 4 >> times that many rows. Just out of curiosity, I'm wondering how you make that happen now with mysql. regards, tom lane
On Thu, Nov 20, 2008 at 4:06 PM, Scott Marlowe <scott.marlowe@gmail.com> wrote: > On Thu, Nov 20, 2008 at 4:36 PM, snacktime <snacktime@gmail.com> wrote: >> Right now we are running mysql as that is what was there when I >> entered the scene. We might switch to postgres, but I'm not sure if >> postgres makes this any easier. >> >> We run a couple of popular games on social networking sites. These >> games have a simple economy,and we need to be able to time warp the >> economy back in time, which means reverting a whole lot of >> transactions and inventories. Our games generate around 1 million >> user transactions per hour, which results in inserts/updates on 4 >> times that many rows. Using PIT recovery would be a very reliable >> way to accomplish this, but I'm wondering how long it would take. If >> it takes a full day to roll back an hour of game time, then I need to >> find another solution. > > PITR is pretty fast, since it sequentially applies changes to the > database as fast as it can. Your hardware has a lot to do with this > though. Applying changes to a machine with plenty of memory, fast > CPUs, and a big rockin RAID-10 array will of course be much faster > than doing the same thing on a laptop. > > If you make "base" sets every night at midnight with snapshots, then > it shouldn't take too long. Is this gonna be a regular thing, or is > this more of an occasional occurance when things in the game go > horribly wrong? > It's primarily for when a bug screws up the economy, or if someone finds a way to hack the economy. Unfortunately these things happen now and then. Plus, these games are relatively short lived. We might get a million users the first month, but a year later the game is dead. So a generic solution using something like PITR would be good. It's not worth it to do it in code with the game having such a short lifespan. Chris