[development] drupal on postgresql benchmark
Earnie Boyd
earnie at users.sourceforge.net
Tue Nov 27 12:42:30 UTC 2007
Quoting Larry Garfield <larry at garfieldtech.com>:
> On Monday 26 November 2007, Earnie Boyd wrote:
>
>> >> Incidentally, there are lots of places where Drupal could use
>> >> transactions when they're available. user_add and node_save would
>> >> both be a lot more DB-crash-resistant, for starters.
>> >>
>> >> jh
>> >
>> > The problem is that transaction support is not universal. In MySQL,
>> > for example, if you roll back a transaction it will roll back but
>> > throw a warning on any MyISAM tables that were affected, so unless
>> > you're using no MyISAM tables the rollback is not actually complete
>> > or atomic. If you're on shared hosting, 95% chance you're on MyISAM.
>>
>> If the choice is to use InnoDB then the port should default to InnoDB.
>> Another port can be used for a MyISAM default.
>
> I have no idea what you're talking about. :-) MySQL can be run quite happily
> with some tables InnoDB, some MyISAM. You can also run a Master/slave
> configuration with the Master InnoDB and the slaves MyISAM (or vice versa,
> although why you'd want to I have no idea). That means sometimes a
> transaction may not rollback properly, and other times it will. We can't
> have "two Drupals", one that uses transactions and one that doesn't (if
> that's what you mean by port, since TCP port wouldn't make any sense in this
> context).
>
My point is, if you want InnoDB for transactions then don't allow
MyISAM tables within the the DB to prevent your point that a
transaction may not rollback properly. I understand the MyISAM and
InnoDB coexist within MySQL table structures but allowing it to happen
is a different matter.
> Our choices are:
>
> 1) Don't use transactions.
>
Covered in point 3.
> 2) Use transactions and silently ignore it when a rollback doesn't actually
> roll back, and/or file a watchdog entry but otherwise don't do anything.
>
If transactions are used they should only be used for the
insert/update/delete methods. The read only selects for display
purposes should not be a transaction because there would be nothing to
roll back.
> 3) Allow the user to explicitly flag if a connection should use transactions,
> defaulting no, and if not then starting a transaction has no effect and
> neither does rolling back or committing.
>
This might keep the transaction nay sayers happy.
> 4) Don't support database configurations that don't fully support
> transactions.
>
As you say, not an option.
> #4 is not an option, naturally. #1 seems like a waste, but it is what we do
> now. That leaves #2 and #3 as alternatives. I am not entirely sure which
> route is least lame at the moment. :-)
>
As I said, if transactions are allowed then the entire database needs
to support it, not just some tables. BTW, when I converted my tables
from MyISAM to InnoDB the display of the nodes happen quicker. I don't
have supporting data yet but I plan to do just that. Of course there
are no transactions in the current code base so they are not even a
factor. Drupal version is 5.3.
Earnie -- http://for-my-kids.com/
-- http://give-me-an-offer.com/
More information about the development
mailing list