Обсуждение: Reversing transactions on a large scale

Поиск
Список
Период
Сортировка

Reversing transactions on a large scale

От
snacktime
Дата:
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

Re: Reversing transactions on a large scale

От
"Scott Marlowe"
Дата:
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?

Re: Reversing transactions on a large scale

От
Tom Lane
Дата:
> 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

Re: Reversing transactions on a large scale

От
snacktime
Дата:
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