1. A computer system for cache optimization, the computer system comprising: one or more computer processors, one or more computer-readable storage media, and program instructions stored on one or more of the computer-readable storage media for execution by at least one of the one or more processors, the program instructions comprising: program instructions to monitor cache access rates for a plurality of cache tenants sharing the same cache mechanism having an amount of data storage space, wherein each cache tenant is allocated a cache space having a cache size within the data storage space; program instructions to determine cache profiles for the plurality of cache tenants according to data collected during the monitoring; program instructions to analyze the cache profiles for the plurality of cache tenants to determine an expected cache usage model for the cache mechanism; program instructions to analyze the cache usage model and factors related to cache efficiency or performance for the plurality of cache tenants to dictate one or more occupancy constraints that define data storage space allocations to the plurality of cache tenants; program instructions to examine the data storage allocations to the plurality of cache tenants, in response to receiving a request to increase a first cache size by an amount so that additional cache space is allocated to a first cache tenant; program instructions, in response to determining that there is a second cache tenant from among the plurality of cache tenants for which reducing a second cache size allocated to the second cache tenant by the amount will not violate the occupancy constraints for a cache size allocated to the second cache tenant, to decrease the second cache size by deallocating data storage space allocated to the second cache tenant by the amount and increasing the first cache size by allocating the same amount of data storage space to the first cache tenant to satisfy the request; and program instructions, in response to determining that there is not a second cache tenant from among the plurality of cache tenants for which reducing a second cache size allocated to the second cache tenant by the amount will not violate the occupancy constraints for a cache size allocated to the second cache tenant, to increase the first cache size by allocating the amount of data storage space to the first cache tenant without deallocating the same amount of data storage space allocated to another cache tenant from among the plurality of cache tenants.