Selectively reading data from cache and primary storage based on whether cache is overloaded
First Claim
1. A method comprising, during a period in which an intermediate cache is already storing a copy of a particular item and a particular cache is not storing the particular item:
- receiving an I/O request at a storage system, from a database server executing in a computer system that includes volatile memory;
wherein the volatile memory has at least a portion that is used as the particular cache;
wherein the I/O request is to retrieve, for a scan operation being performed by the database server, a plurality of items that includes the particular item;
wherein the particular item resides on persistent primary storage managed by the storage system;
wherein the intermediate cache, managed by the storage system, is logically positioned between the volatile memory of the computer system and the persistent primary storage;
in response to receiving the I/O request, the storage system performing the steps of;
determining whether to service the I/O request with the copy of the particular item that resides in the intermediate cache based on one or more factors, wherein the one or more factors include at least one of;
an identity of a user for whom the I/O request was submitted,an identity of a service that submitted the I/O request,an indication of a consumer group to which the I/O request maps,whether the I/O request is associated with an offloaded filter provided by the database server to the storage system, orwhether the intermediate cache is overloaded;
in response to determining, based on the one or more factors, that the I/O request should be serviced with the copy of the particular item that resides in the intermediate cache, responding to the I/O request with the copy of the particular item that resides the intermediate cache without retrieving the particular item from primary storage;
wherein the storage system applies filter criteria, provided to the storage system by the database server, to items involved in the scan operation; and
wherein the method is performed by one or more computing devices.
2 Assignments
0 Petitions
Accused Products
Abstract
Techniques are provided for using an intermediate cache to provide some of the items involved in a scan operation, while other items involved in the scan operation are provided from primary storage. Techniques are also provided for determining whether to service an I/O request for an item with a copy of the item that resides in the intermediate cache based on factors such as a) an identity of the user for whom the I/O request was submitted, b) an identity of a service that submitted the I/O request, c) an indication of a consumer group to which the I/O request maps, d) whether the I/O request is associated with an offloaded filter provided by the database server to the storage system, or e) whether the intermediate cache is overloaded. Techniques are also provided for determining whether to store items in an intermediate cache in response to the items being retrieved, based on logical characteristics associated with the requests that retrieve the items.
119 Citations
18 Claims
-
1. A method comprising, during a period in which an intermediate cache is already storing a copy of a particular item and a particular cache is not storing the particular item:
-
receiving an I/O request at a storage system, from a database server executing in a computer system that includes volatile memory; wherein the volatile memory has at least a portion that is used as the particular cache; wherein the I/O request is to retrieve, for a scan operation being performed by the database server, a plurality of items that includes the particular item; wherein the particular item resides on persistent primary storage managed by the storage system; wherein the intermediate cache, managed by the storage system, is logically positioned between the volatile memory of the computer system and the persistent primary storage; in response to receiving the I/O request, the storage system performing the steps of; determining whether to service the I/O request with the copy of the particular item that resides in the intermediate cache based on one or more factors, wherein the one or more factors include at least one of; an identity of a user for whom the I/O request was submitted, an identity of a service that submitted the I/O request, an indication of a consumer group to which the I/O request maps, whether the I/O request is associated with an offloaded filter provided by the database server to the storage system, or whether the intermediate cache is overloaded; in response to determining, based on the one or more factors, that the I/O request should be serviced with the copy of the particular item that resides in the intermediate cache, responding to the I/O request with the copy of the particular item that resides the intermediate cache without retrieving the particular item from primary storage; wherein the storage system applies filter criteria, provided to the storage system by the database server, to items involved in the scan operation; and wherein the method is performed by one or more computing devices.
-
-
2. A method comprising, during a period in which an intermediate cache is already storing a copy of an item and a particular cache is not storing the item:
-
receiving at a storage system, from a database server executing in a computer system that includes volatile memory, at least a portion of which is used as the particular cache, an I/O request; wherein the I/O request is to retrieve the item that resides on persistent primary storage managed by the storage system; wherein the intermediate cache, managed by the storage system, is logically positioned between the volatile memory of the computer system and the persistent primary storage; in response to receiving the I/O request, the storage system performing the steps of; determining whether to service the I/O request with the copy of the item that resides in the intermediate cache based, at least in part, on an identity of a user for whom the I/O request was submitted; in response to determining, based, at least in part, on the identity of the user for whom the I/O request was submitted, that the I/O request should be serviced with the copy of the item that resides in the intermediate cache, responding to the I/O request with the copy of the item that resides the intermediate cache without retrieving the item from primary storage; wherein the method is performed by one or more computing devices.
-
-
3. A method comprising, during a period in which an intermediate cache is already storing a copy of an item and a particular cache is not storing the item:
-
receiving at a storage system, from a database server executing in a computer system that includes volatile memory, at least a portion of which is used as the articular cache, an I/O request; wherein the I/O request is to retrieve the item that resides on persistent primary storage managed by the storage system; wherein the intermediate cache, managed by the storage system, is logically positioned between the volatile memory of the computer system and the persistent primary storage; in response to receiving the I/O request, the storage system performing the steps of; determining whether to service the I/O request with the copy of the item that resides in the intermediate cache based, at least in part, on an identity of a service that submitted the I/O request; in response to determining, based, at least in part, on the identity of the service that submitted the I/O request, that the I/O request should be serviced with the copy of the item that resides in the intermediate cache, responding to the I/O request with the copy of the item that resides the intermediate cache without retrieving the item from primary storage; wherein the method is performed by one or more computing devices.
-
-
4. A method comprising, during a period in which an intermediate cache is already storing a copy of an item and a particular cache is not storing the item:
-
receiving at a storage system, from a database server executing in a computer system that includes volatile memory, at least a portion of which is used as the particular cache, an I/O request; wherein the I/O request is to retrieve the item that resides on persistent primary storage managed by the storage system; wherein the intermediate cache, managed by the storage system, is logically positioned between the volatile memory of the computer system and the persistent primary storage; in response to receiving the I/O request, the storage system performing the steps of; determining whether to service the I/O request with the copy of the item that resides in the intermediate cache based, at least in part, on an indication of a consumer group to which the I/O request maps; in response to determining, based, at least in part, on the indication of the consumer group to which the I/O request maps, that the I/O request should be serviced with the copy of the item that resides in the intermediate cache, responding to the I/O request with the copy of the item that resides the intermediate cache without retrieving the item from primary storage; wherein the method is performed by one or more computing devices.
-
-
5. A method comprising, during a period in which an intermediate cache is already storing a copy of an item and a particular cache is not storing the item:
-
receiving at a storage system, from a database server executing in a computer system that includes volatile memory, at least a portion of which is used as the particular cache, an I/O request; wherein the I/O request is to retrieve the item that resides on persistent primary storage managed by the storage system; wherein the intermediate cache, managed by the storage system, is logically positioned between the volatile memory of the computer system and the persistent primary storage; in response to receiving the I/O request, the storage system performing the steps of; determining whether to service the I/O request with the copy of the item that resides in the intermediate cache based, at least in part, on whether the I/O request is associated with an offloaded filter provided by the database server to the storage system; in response to determining, based, at least in part, on whether the I/O request is associated with an offloaded filter provided by the database server to the storage system, that the I/O request should be serviced with the copy of the item that resides in the intermediate cache, responding to the I/O request with the copy of the item that resides the intermediate cache without retrieving the item from primary storage; wherein the method is performed by one or more computing devices.
-
-
6. A method comprising:
-
receiving from a database server, at a storage system, an I/O request for an item that resides on primary storage but that does not currently reside in an intermediate cache; in response to the I/O request, the storage system performing the steps of; retrieving the item from the primary storage; providing the item to the database server; and performing one of; a) storing a copy of the item in the intermediate cache responsive to an identity of a user for whom the I/O request was submitted belonging to a particular set of user identities, b) storing a copy of the item in the intermediate cache responsive to an identity of a service that submitted the I/O request belonging to a particular set of service identities, or c) storing a copy of the item in the intermediate cache responsive to an indication of a consumer group to which the I/O request maps indicating that the consumer group belongs to a particular set of service groups; wherein the method is performed by one or more computing devices. - View Dependent Claims (7, 8, 9)
-
-
10. One or more non-transitory computer-readable media storing instructions that, when executed by one or more processors, cause, during a period in which an intermediate cache is already storing a copy of a particular item and a particular cache is not storing the particular item:
-
receiving an I/O request at a storage system, from a database server executing in a computer system that includes volatile memory; wherein the volatile memory has at least a portion that is used as the particular cache; wherein the I/O request is to retrieve, for a scan operation being performed by the database server, a plurality of items that includes the particular item; wherein the particular item resides on persistent primary storage managed by the storage system; wherein the intermediate cache, managed by the storage system, is logically positioned between the volatile memory of the computer system and the persistent primary storage; in response to receiving the I/O request, the storage system performing the steps of; determining whether to service the I/O request with the copy of the particular item that resides in the intermediate cache based on one or more factors, wherein the one or more factors include at least one of; an identity of a user for whom the I/O request was submitted, an identity of a service that submitted the I/O request, an indication of a consumer group to which the I/O request maps, whether the I/O request is associated with an offloaded filter provided by the database server to the storage system, or whether the intermediate cache is overloaded; in response to determining, based on the one or more factors, that the I/O request should be serviced with the copy of the particular item that resides in the intermediate cache, responding to the I/O request with the copy of the particular item that resides the intermediate cache without retrieving the particular item from primary storage; wherein the storage system applies filter criteria, provided to the storage system by the database server, to items involved in the scan operation.
-
-
11. One or more non-transitory computer-readable media storing instructions that, when executed by one or more processors, cause, during a period in which an intermediate cache is already storing a copy of an item and a particular cache is not storing the item:
-
receiving at a storage system, from a database server executing in a computer system that includes volatile memory, at least a portion of which is used as the particular cache, an I/O request; wherein the I/O request is to retrieve the item that resides on persistent primary storage managed by the storage system; wherein the intermediate cache, managed by the storage system, is logically positioned between the volatile memory of the computer system and the persistent primary storage; in response to receiving the I/O request, the storage system performing the steps of; determining whether to service the I/O request with the copy of the item that resides in the intermediate cache based, at least in part, on an identity of a user for whom the I/O request was submitted; in response to determining, based, at least in part, on the identity of the user for whom the I/O request was submitted, that the I/O request should be serviced with the copy of the item that resides in the intermediate cache, responding to the I/O request with the copy of the item that resides the intermediate cache without retrieving the item from primary storage.
-
-
12. One or more non-transitory computer-readable media storing instructions that, when executed by one or more processors, cause, during a period in which an intermediate cache is already storing a copy of an item and a particular cache is not storing the item:
-
receiving at a storage system, from a database server executing in a computer system that includes volatile memory, at least a portion of which is used as the particular cache, an I/O request; wherein the I/O request is to retrieve the item that resides on persistent primary storage managed by the storage system; wherein the intermediate cache, managed by the storage system, is logically positioned between the volatile memory of the computer system and the persistent primary storage; in response to receiving the I/O request, the storage system performing the steps of; determining whether to service the I/O request with the copy of the item that resides in the intermediate cache based, at least in part, on an identity of a service that submitted the I/O request; in response to determining, based, at least in part, on the identity of the service that submitted the I/O request, that the I/O request should be serviced with the copy of the item that resides in the intermediate cache, responding to the I/O request with the copy of the item that resides the intermediate cache without retrieving the item from primary storage.
-
-
13. One or more non-transitory computer-readable media storing instructions that, when executed by one or more processors, cause, during a period in which an intermediate cache is already storing a copy of an item and a particular cache is not storing the item:
-
receiving at a storage system, from a database server executing in a computer system that includes volatile memory, at least a portion of which is used as the particular cache, an I/O request; wherein the I/O request is to retrieve the item that resides on persistent primary storage managed by the storage system; wherein the intermediate cache, managed by the storage system, is logically positioned between the volatile memory of the computer system and the persistent primary storage; in response to receiving the I/O request, the storage system performing the steps of; determining whether to service the I/O request with the copy of the item that resides in the intermediate cache based, at least in part, on an indication of a consumer group to which the I/O request maps; in response to determining, based, at least in part, on the indication of the consumer group to which the I/O request maps, that the I/O request should be serviced with the copy of the item that resides in the intermediate cache, responding to the I/O request with the copy of the item that resides the intermediate cache without retrieving the item from primary storage.
-
-
14. One or more non-transitory computer-readable media storing instructions that, when executed by one or more processors, cause, during a period in which an intermediate cache is already storing a copy of an item and a particular cache is not storing the item:
-
receiving at a storage system, from a database server executing in a computer system that includes volatile memory, at least a portion of which is used as the particular cache, an I/O request; wherein the I/O request is to retrieve the item that resides on persistent primary storage managed by the storage system; wherein the intermediate cache, managed by the storage system, is logically positioned between the volatile memory of the computer system and the persistent primary storage; in response to receiving the I/O request, the storage system performing the steps of; determining whether to service the I/O request with the copy of the item that resides in the intermediate cache based, at least in part, on whether the I/O request is associated with an offloaded filter provided by the database server to the storage system; in response to determining, based, at least in part, on whether the I/O request is associated with an offloaded filter provided by the database server to the storage system, that the I/O request should be serviced with the copy of the item that resides in the intermediate cache, responding to the I/O request with the copy of the item that resides the intermediate cache without retrieving the item from primary storage.
-
-
15. One or more non-transitory computer-readable media storing instructions that, when executed by one or more processors, cause:
-
receiving from a database server, at a storage system, an I/O request for an item that resides on primary storage but that does not currently reside in an intermediate cache; in response to the I/O request, the storage system performing the steps of; retrieving the item from the primary storage; providing the item to the database server; and performing one of; a) storing a copy of the item in the intermediate cache responsive to an identity of a user for whom the I/O request was submitted belonging to a particular set of user identities, b) storing a copy of the item in the intermediate cache responsive to an identity of a service that submitted the I/O request belonging to a particular set of service identities, or c) storing a copy of the item in the intermediate cache responsive to an indication of a consumer group to which the I/O request maps indicating that the consumer group belongs to a particular set of service groups. - View Dependent Claims (16, 17, 18)
-
Specification