Corruption is definitely a problem. Often it can be prevented by simply following operational processes and best practices such as using drainstop or draining connections before rebooting a server or cycling a service. SQL DBAs would know you should never simply turn off SQL. First you’d bleed the connections and watching the processes bleed down to prevent corruption in the databases. In this same way you should pay attention to what’s going on before cycling your servers or service. You notice a long running and blocking worker process so you kill it… was it search or was it a create or large list deletion?
On my other blog I put together a post on both identifying and deleting corrupted SharePoint sites also known as orphans.