Better to use the OACS4 db_* functions, which grab a handle internally and release it as soon as they finish processing a query.
No, only in db_transaction
db_release_unused_handles seems to be called automatically.
You have to manually call it if you want to release handles earlier. (As the example at the end of the API implies)