Object-oriented databases provide new possibilities for inheritance and structural relationships in data semantics. This dissertation examines how to use these additional semantics to obtain more effective object buffering and clustering. We use the information collected from real-world object-oriented applications, such as the Berkeley CAD Group's OCT design tools, as the basis for a simulation model with which to investigate alternative buffering and clustering strategies. Observing from our measurements that real CAD applications exhibit high data read to write ratios, we propose a run-time reclustering algorithm whose evaluation indicates that system response time can be improved by a factor of 200% when the read/write ratio is high. In our study, we have found it useful to limit the amount of I/Os allowed to the clustering algorithm as it examines candidate pages for reclustering at run-time, and, because performance varies little according to the number of I/Os involved, a low limit on I/O appears to be acceptable. We also examine, under a variety of workload assumptions, context-sensitive buffer replacement policies with alternative prefetching policies. Using these simulation results, we provide implementation hints for existing or future Object-Oriented DBMSs.