From: Alex B. <boi...@in...> - 2006-02-21 21:17:38
|
Thompson, Bryan B. wrote: >Let's assume that jdbm uses locking for rw synchronization and MVCC for >ww synchronization. > > I don't understand what you mean here. >This means that updated rows will NOT be updated in >place. Instead a new version of the row will be created by logically >appending the row to the store (either reusing a deleted physical row or >using an empty page to lay down new physical rows). > > Ok >In the case of a VLR Tx, isolation of the new rows on unused pages will >ensure that the DBCache policy of exclusive access to the VLR Tx pages >does not conflict with the access of other transactions to pre-existing >versions. > > You also need isolation of row mapping pages. >This further suggests to me that we should buffer serialized rows so >that (a) we can cluster them and (b) we can decide whether to use some >rows from the deleted physical rows list or begin allocation on an unused >page. If the buffer is not filled before the tx commits, then we can use >some deleted physical rows since we know that the tx will not be promoted >to VLR status. > Yes. Do keep in mind that you can only reuse physical rows if no transaction can ever reach them. This requires some additional housekeeping. >If the buffer is filled then the tx may be promoted to >VLR status, so we would allocate on unused pages (one page at a time) to >ensure that a conflict does not arise with the DBCache policy of exclusive >access for a VLR Tx to pages which it logs and then forces to the DB. > > When and how would you update the mapping pages? alex |