Hi,

On Sat, 13 Dec 2003, Chris Nolan wrote:

> 1. We all know that InnoDB can be backed up "hot" (by various means). I
> know that there are a few MS SQL Server (ick) and DB2 lovers in the
> group I'll be meeting with this week. I also know that these two
> databases do a form of online backup.
>
> Given that they are not multiversioned, how on earth do they actually
> provide this functionality? I guess this ties in with how they implement
> the READ REPEATABLE isolatation level. Any comments on implementation,
> performance and other info would be gladly received!

I believe they handle it by doing a dirty read first of the database, that
is while other people are writing to the files they just copy it.  Then
they use the undo/redo logs in order to correct it, just as if a crash
occured.  I could be wrong here, I am not an expert on those databases.

> 2. I've been told on good authority (by persons on this fine list) that
> Sybase and PostgreSQL (and, from personal experience, SQLBase) support
> ROLLBACK of DDL statements such as DROP TABLE, ALTER TABLE, RENAME TABLE
> etc. From what I can gather, neither BDB nor InnoDB do this.
>
> Does anyone know what sort of technical challenges making the above
> statements "undoable" involve over and above INSERT, DELETE and UPDATE
> statements? Would this functionality be something that MySQL AB /
> Innobase Oy would be interested in developing should it be sponsored?

First it isn't that common to want to undo these.  I would ask yourself
first, why do you want to do this?  Generally these commands are not run
on production servers.  The only time that I could see them being useful
is if you are running an "upgrade" of your schema to switch to a newer
version of some application you wrote.  In this case you would want to
take a backup before this was done anyways.

Of course if you are really really interested, you should contact
[EMAIL PROTECTED] to get more details about cost and effort.  I suspect that
it is more than just a little effort, but I could be entirely mistaken.

> 3. At the moment, the MySQL API seems to have a size limit of 16 MB for
> data sent over the wire (I have seen that the MySQL 4.1 libraries allow
> for sending information in chunks along with prepared statements). I
> take it the best method of inserting greater amounts of data into a
> column would be by first writing the file somewhere on the database
> server and using LOAD DATA? Any comments on this of any type from the
> learned populace of MySQL users? :-)

No.  MySQL 3.23 has the 16M limit for max_allowed_packet.  In MySQL 4.0 it
can be setup to around 1G of size.  Keep in mind that moving around 1G
rows however will take a lot of overhead in the form of memory (both on
the client and the server).

> 4. In a DB server that has 2 physical disks running MySQL 4.1.1 Alpha
> and utilising the multiple table space feature of InnoDB, what
> distribution of files (ibdata, log files, individual table space files)
> is likely to result in the best performace? Any insights of similar type
> for using MyISAM tables?

Obviously splitting up usage across many disks is a good thing (if you
don't have a RAID system which effectively does this for you...)

Where you put things depends on whether you are going for more performance
or for more reliablity.  For reliability the Binary Update logs should
generally go on their own disk.  That way you can still recover your
data if the main hdd stops working.  This is true with both MyISAM and
InnoDB.  For performance with InnoDB the InnoDB log files should be moved
to a seperate disk if possible as well.  Then if you still have disks left
over you can begin moving individual tables to seperate disks as well.

With only two regular hdds it is a tough decision.  For reliability you
should keep the binary update logs and the data on seperate hdds.
However then you don't really gain much performance, so it is tempting to
move the InnoDB logs or spread the tables across both drives.  For
performance the InnoDB logs ideally will be on a different harddrive
especially if innodb_flush_logs_at_tx_commit is set to 1.

Hope that helps some!

Regards,

Harrison

-- 
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe:    http://lists.mysql.com/[EMAIL PROTECTED]

Reply via email to