>Gavin Sherry > On Fri, 27 Feb 2004 [EMAIL PROTECTED] wrote: > > Most people I know want tablespaces in order to limit or preallocate the > > disk space used by a table or database in addition to controlling the > > physical location of a table or database.
> I do not intend to work on such a system for the initial introduction of > table spaces. The problem is, of course, knowing when you're actually out > of space in a table space in any given transaction. Given that WAL is on a > different partition (at least for the moment) the table space will not > have transaction X's data written to it until after transaction X is > finished. And we cannot error out a transaction which is already commited. > > The solution is to keep track of free space and error out at some > percentage of free space remaining. But I don't want to complicate > tablespaces too much in 7.5. You're absolutely right about the not-knowing when you're out of space issue. However, if the xlog has been written then it is not desirable, but at least acceptable that the checkpoint/bgwriter cannot complete on an already committed txn. It's not the txn which is getting the error, that's all. Hmmm...I'm not sure that we'll be able or should avoid the out of space situation completely. The question is...what will we do when we hit it? It doesn't matter whether you stop at 100% or 90% or whatever, you still have to stop and then what? Stay up as long as possible hopefully: If there wasn't enough space to write to the tablespace, going into recovery won't help the situation either; youre still out of space until you fix that. We now have the option not to crash, since it might be perfectly viable to keep on chugging away on one Tablespace even though all txn work on the out-of-space tablespace is frozen/barred etc. Sounds like a refinement, but something to keep in mind at the design stage if we can. The problem is that tablespaces do complicate space management (that's what people want though, so that's OK). That complicates admin and so pg will hit many more out of space errors than we've seen previously. Trying to work out how to spot these ahead of time, accept user defined limits on each tablespace etc sounds like extra complexity for the initial drop. I guess my own suggested approach is to start by handling the error cases, then go back and try to avoid some of them. All of this exposes for me the complication that doing PITR and tablespaces at the same time is likely to be more complex for us both than either had envisaged. The reduced complexity for PITR was what I was shooting for, also! I'm happy to work together on any issues that arise. For PITR, I think we would need: - a very accessible list of tablespace locations, so taking a full physical database backup can be easily accomplished using OS utilities. Hopefully a list maintained external to the database? We have the equivalent now with env variables. - decisions about what occurs when for-whatever-reason one or more tablespaces are not recoverable from backup? - it might be desirable to allow recovery with less than all of the original tablespces - it might also be desirable to allow recovery when the tablespaces txn Ids don't match (though that is forbidden on many other dbms) Best Regards, Simon Riggs ---------------------------(end of broadcast)--------------------------- TIP 5: Have you checked our extensive FAQ? http://www.postgresql.org/docs/faqs/FAQ.html