Retrospective



next up previous
Next: Appendix Up: CS764 Project Report - Previous: Testing

Retrospective

The condition to trigger a split or merge in the current design is mainly associated with allocation or deallocation of overflow pages. I tested the performance and found out that 40% of the pages are overflow pages. This means on average, a record access needs 1.2 disk I/O. The result is the same as that in [3]. However, we could also try to use the overall capacity of the index as the trigger condition. I wish I had time to implement this.
The current design of the class is very elegant in the sense that it eliminates C++ derived-class hierarchy and it's used very conveniently by access methods, e.g. any object (bucket page, etc) can be casted to a . But when I was adding code to write update logs, it's really a pain to find out the PageId of each ``page'' since it's not associated with its object.
There is a method lock_manager_def::unlockall() which can unlock all pages locked by a process. It can be used in deadlock situation to release all the locks a process is holding. Hence at access method level, if a deadlock is detected, it's not necessary to release all the locks it has required. I think it's better if we also have a similar method (of BufMgr) to unpin all the pages a process pinned.
One last point, since the whole projet cannot be divided into parallel developments, we should have started the project earlier, especially for lower level groups, to make sure the whole project can work at the end of the semester.



Weiqing Huang
Sun May 14 16:22:27 CDT 1995