Selective cache entry removal feature

The introduction of the ENTRY_HASH column in the cache entry system view enables selective cache entry removal, addressing inefficiencies in managing large database systems by allowing targeted deletion of unnecessary cache entries, thereby enhancing system performance and resource utilization.

JP2025137373APending Publication Date: 2025-09-19エスアーペーエスエー
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
JP2024203212
Authority / Receiving Office
JP · JP
Patent Type
Applications
Current Assignee / Owner
Priority Date
2024-03-08
Filing Date
2024-11-21
Publication Date
2025-09-19

AI Technical Summary

Technical Problem

Managing large database systems efficiently requires selective cache entry eviction to avoid resource-intensive processing and memory consumption, especially when subsequent queries require additional processing on cached query results.

Method used

Introduce a new column, ENTRY_HASH, in the cache entry system view to enable selective removal of specific cache entries using SQL statements, ensuring efficient deletion of unnecessary cache entries while preserving others.

Benefits of technology

Facilitates consistent and efficient cache management by allowing targeted removal of problematic cache entries, reducing resource consumption and improving system performance.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 2025137373000001_ABST
    Figure 2025137373000001_ABST
Patent Text Reader

Abstract

To provide a method, a system, and a storage medium for managing caches in a database environment.SOLUTION: A database management method includes: generating a cache entry system view of a database cache; and generating a new column, which is an ENTRY_HASH column to identify each entry of the database cache, and detecting a request to remove a given entry of the database cache. The request includes a given ENTRY_HASH value to locate the given entry of the database cache. The method also includes: identifying the given entry of the database cache based on the given ENTRY_HASH value in response to receiving the request; and removing the given entry of the database cache and notifying a cache manager that the given entry has been removed.SELECTED DRAWING: Figure 7
Need to check novelty before this filing date? Find Prior Art

Description

[Technical Field]

[0001] The present disclosure relates generally to managing caches in a database environment. [Background technology]

[0002] Organizations are increasingly required to manage large amounts of data in their database systems. Executing queries on such database systems can use significant amounts of computing resources, including computer memory, storage, and processor resources. Therefore, it can be important to reuse query results when possible. One way to reuse query results is to cache the results so that they can be used at a later time, such as when the same query is run again.

[0003] Caching query results from a particular view may save computing resources at the expense of increased memory consumption. When a subsequent query that operates on a particular view is received, the cached query results may be reused. While reusing cached query results can be efficient in some situations, it also has some drawbacks. For example, a subsequent query may perform data manipulation operations (e.g., aggregation, filtering, etc.) that require additional processing to be performed on the cached query results. Such additional processing may be resource intensive in terms of memory, storage, and / or processing resources. Summary of the Invention [Means for solving the problem]

[0004] In some implementations, a database management system generates a cache entry system view of a database cache. A new column is also generated for the cache entry system view, where the new column is an ENTRY_HASH column for identifying each entry in the database cache. In an example, the database management system detects a request to delete a given entry in the database cache, where the request includes a given ENTRY_HASH value for locating the given entry in the database cache. In response to receiving the request, the database management system identifies the given entry in the database cache based on the given ENTRY_HASH value. Then, the database management system deletes the given entry in the database cache. The database management system also notifies the cache manager that the given entry has been deleted.

[0005] Non-transitory computer program products (i.e., physically embodied computer program products) that store instructions that, when executed by one or more data processors in one or more computing systems, cause at least one data processor to perform the operations described herein are also described. Similarly, computer systems that may include one or more data processors and memory coupled to the one or more data processors are also described. The memory may temporarily or permanently store instructions that cause at least one processor to perform one or more of the operations described herein. Furthermore, methods may be performed by one or more data processors either within a single computing system or distributed across two or more computing systems. Such computing systems may be connected via one or more connections, including connections via a network (e.g., the Internet, a wireless wide area network, a local area network, a wide area network, a wired network, etc.), direct connections between one or more of the computing systems, etc., and may exchange data and / or commands or other instructions, etc.

[0006] The details of one or more variations of the subject matter described herein are set forth in the accompanying drawings and the description below. Other features and advantages of the subject matter described herein will be apparent from the description and drawings, and from the claims.

[0007] The accompanying drawings, which are incorporated in and constitute a part of this specification, illustrate certain aspects of the subject matter disclosed herein and, together with the description, serve to explain some of the principles associated with the disclosed implementations. [Brief explanation of the drawings]

[0008] [Figure 1] FIG. 1 is a logical diagram of an example database system in accordance with some exemplary implementations of the present subject matter. [Figure 2] FIG. 1 is a block diagram of a database system in accordance with some exemplary implementations of the present subject matter. [Figure 3] FIG. 2 illustrates an example of a cache entry system view in accordance with some exemplary implementations of the present subject matter. [Figure 4] FIG. 2 illustrates an example process for executing a remove cache entry statement, according to some example implementations of the present subject matter. [Figure 5] FIG. 10 illustrates another example process for executing a remove cache entry statement, according to some example implementations of the present subject matter. [Figure 6] 10A-10C illustrate an example process for responding to modifications to a source table, according to some example implementations of the present subject matter. [Figure 7] FIG. 2 illustrates an example process for generating a cache entry system view, according to some example implementations of the present subject matter. [Figure 8] FIG. 2 illustrates an example process for inserting a new entry into a database cache, according to some example implementations of the present subject matter. [Figure 9A] FIG. 1 illustrates an example system in accordance with some exemplary implementations of the present subject matter. [Figure 9B] FIG. 2 illustrates another example of a system in accordance with some exemplary implementations of the present subject matter. [Figure 10] FIG. 2 is a block diagram of a cache in accordance with some example implementations of the present subject matter. DETAILED DESCRIPTION OF THE INVENTION

[0009] A database may contain different types of caches that are established on a common cache infrastructure. The main component of this common cache infrastructure is a cache manager, which is typically located on every index server. The common cache infrastructure provides functions for inserting cache entries, searching the cache, and clearing cache entries. When a query is executed, if a valid cache entry with a result is found, the cached result is returned. Conversely, if a valid cache entry is not found, a cache entry is eventually inserted into the cache by the cache manager.

[0010] When a database operates for a significant duration, many cache entries may be generated to speed up cache lookup results. The number of generated cache entries eventually exceeds the size of the cache. Therefore, removing (i.e., clearing) infrequently used cache entries is essential to maintain performance and cache efficiency. Clearing cache entries typically results in the removal of all entries of a particular cache type. In some situations, it may be necessary to refresh specific cache entries rather than clearing all entries. For example, when some underlying tables are modified, deleting specific cache entries is more desirable and efficient than removing all cache entries of a particular type and then completely reloading those cache entries. Furthermore, the option to delete specific cache entries is useful when memory-intensive entries are no longer useful.

[0011] The challenge is that when many cache entries are generated, users want to remove only specific problematic cache entries without affecting other cache entries. To make the system easier to use, a selective cache entry removal feature may be introduced. This feature introduces a new column, ENTRY_HASH, to the view M_CACHE_ENTRIES. Users can inspect the detailed information of a specific cache entry through the M_CACHE_ENTRIES view. ENTRY_HASH may also be used as a filter to remove a specified cache entry by executing the newly added SQL statement "ALTER SYSTEM REMOVE CACHE ('') ENTRY ('',''...)". The cache type and ENTRY_HASH are obtained by executing the SQL statement "ALTER SYSTEM REMOVE CACHE ('') ENTRY ('',''...)". Using the cache type, a cache instance may be derived from the cache manager. From there, the ENTRY_HASH may be matched to all relevant cache entries of this cache type. Shared locks may be used when parallel cache inserts and cache lookups are performed for a specific cache type. An exclusive lock may be used for deleting cache entries, so if any cache entry deletions are in progress, the deletions are processed in order.

[0012] In the example, every cache instance manages two types of cache resources: a single-value cache and a transactional-value cache. For a single-value cache, there is only one cache entry for a cache key. Therefore, when the exact cache entry is found, it is removed. A transactional value cache may contain multiple versioned cache entries for the same cache key. The ENTRY_HASH is then used to flush cache entries with matching versions in their entirety. For a single-value cache, removing a cache entry means evicting the cache resource from the cache instance. However, for a transactional value cache, this action is only performed when only one version of the cache entry exists. Otherwise, removing a cache entry does not result in evicting the cache resource from the cache instance. The selective cache entry removal feature provides consistent efficiency in removing cache entries and provides a better user experience.

[0013] 1 illustrates an example of a database system 110 according to some implementations of the present subject matter. Database system 110 may include any number and types of databases 115, including, for example, in-memory databases, relational databases, non-SQL (NoSQL) databases, and / or other types of databases. In an example, database 115 may be an SAP HANA database available from SAP SE, Walldorf, Germany. Database system 110 also includes a database management system (DBMS) 117. Database management system 117 may be configured to process database queries from a first client 120a and / or a second client 120b.

[0014] In some implementations, database system 110 and / or any of its components may be incorporated into and / or be part of a container system that may be used in a cloud implementation. Database system 110 may include any number of servers and other physical components. Furthermore, database system 110 may be communicatively coupled to multiple clients, including, for example, first client 120a and second client 120b, via network 130. Network 130 may be a wired and / or wireless network, including, for example, a wide area network (WAN), a local area network (LAN), a public land mobile network (PLMN), the Internet, etc. Client devices 120a-b may be processor-based devices, including, for example, one or more of smartphones, tablet computers, wearable devices, virtual assistants, Internet of Things (IoT) appliances, etc.

[0015] Database system 110 may include any number of servers that may be running instances of corresponding executable files (e.g., .exe files) included in the kernel of database system 110. It should be understood that the kernel of database system 110 may also include other executable files (e.g., .exe files) required to run database system 110. In some implementations, the executable files may be computer programs that have already been compiled into machine language (e.g., binary code) and can therefore be directly executed by a data processor. In an example, database system 110 may be a dedicated, single-container database system running a single instance of a primary server and / or a secondary server. However, if database system 110 implements a multi-tenant database architecture (e.g., multi-tenant database container (MDC)), each tenant of database system 110 may be served by a separate instance of a primary server and / or a secondary server.

[0016] 2, an example of a database system 200 is shown in accordance with some example embodiments. In the example, database system 200 includes a database layer 210, a server layer 215, and clients 240. Database layer 210 includes any number and types of databases 210A-210N. Databases 210A, 210B, and 210N may include any combination of one or more of relational databases, multidimensional databases, in-memory facilities, object databases, Extensible Markup Language (XML) documents, flat files, or any other data storage systems that support structured or unstructured data. Such databases 210A-N may be distributed across multiple different entities.

[0017] Servers 220A-N may be any type of server, such as an index server, a primary server, a secondary server, etc. Servers 220A-N may include any combination of one or more of cloud-based or on-premise resources and may be published and / or accessed via one or more networks. Each server 220A-N may have one or more corresponding cache managers (CMs) 225A-N. For example, server 220A includes cache manager 225A, server 220B includes cache manager 225B, and server 220N includes cache manager 225N. Cache managers 225A-N are configured to manage caches 230A-N, representing any number and type of caches (e.g., hierarchical caches). Clients 240 include any number and type of clients, including smartphones 240A, computers 240B, laptops 240C, tablets 240D, and other computing devices and / or systems.

[0018] When database system 200 operates for a significant duration, many cache entries in caches 230A-N may be generated to speed up query execution by reusing query results. In some situations, it may be necessary to refresh specific cache entries rather than clearing all of the cache entries. For example, when one or more original tables are modified, deleting a specific cache entry is more desirable and efficient than removing all cache entries of this type and completely reloading the cache entries. Furthermore, the option to delete specific cache entries is useful when memory-intensive entries are no longer useful.

[0019] In the example, every cache instance manages two types of cache resources: a single-value cache and a transactional value cache. In some embodiments, a single-value cache is used to represent a single-value table column in a table or table object. A single-value cache may be included in a non-persistent or transient runtime data object. A single-value cache may be represented by a list of tuples T(a,b), where "a" is the column ID of the single-value column and "b" is the single value included in the single-value column associated with the column ID. Because a table or table object may contain a variable number of single-value columns, the size of the single-value cache may vary. In some embodiments, a single-value cache is not persisted by a persistent runtime data descriptor. Instead, a persistent column descriptor in a unified table container is used to persist the single-value cache. In some embodiments, a unified table container includes one or more persistent column descriptors for each column of the table.

[0020] Referring now to FIG. 3 , an example of a cache entry system view 300 is shown in accordance with some example embodiments. In the example, the cache entry system view 300 is referred to as the “M_CACHE_ENTRIES” view of a database cache (e.g., cache 230B of FIG. 2 ). As used herein, the term “cache entry system view” is defined as a monitoring view that provides runtime data regarding multiple cache entries of one or more database caches. The term “monitoring view” is also defined as a runtime view that includes statistics and status information related to the execution of data manipulation language (DML) statements. The cache entry system view 300 may include multiple columns, as shown in FIG. 3 . However, these columns represent only one particular embodiment. It should be understood that in other embodiments, the cache entry system view 300 may be structured differently and / or include other numbers and types of columns.

[0021] As shown in FIG. 3 , the cache entry system view 300 includes a host column 305 that displays the hostname, while a port column 310 displays the internal port. From left to right, a volume_ID column 315 displays the persistence volume identifier (ID), while a cache_ID column 320 displays the ID of the cache that created the entry. An entry_ID column 325 displays the ID of the cache entry, and an entry_description column 330 displays a description of the cached entry. A component column 335 displays information about the component that created the cached entry, and a user_name column 340 displays information about the user that created the cache entry. A memory_size column 345 displays the amount of memory used to store the cached entry in the cache. In the example, the memory_size column 345 displays the amount of memory in bytes. A create_time column 350 displays the time the cache entry was inserted into the cache. The read_count column 355 indicates how often a cache entry was successfully read from the cache, while the last_access_time column 360 displays the time of the last access of the cache instance.

[0022] In some embodiments, a new column ENTRY_HASH 365 may be added to the cache entry system view 300 to enable clients to remove specific cache entries from the corresponding cache. Clients may inspect detailed information about specific cache entries through the cache entry system view 300. Clients may use ENTRY_HASH as a filter to remove specified cache entries by executing the newly added SQL statement "ALTER SYSTEM REMOVE CACHE ('') ENTRY ('',,''...)". By executing the SQL statement "ALTER SYSTEM REMOVE CACHE ('') ENTRY ('',,''...)", the cache type and ENTRY_HASH are obtained. Using the cache type, a cache instance may be derived by the cache manager. From here, the ENTRY_HASH can be matched to all related cache entries of this cache type. As used herein, the term "ENTRY_HASH column" is defined as a column in the cache entry system view, where each value in the column uniquely identifies a corresponding cache entry. Additionally, the term "ENTRY_HASH" is defined as the filter used to remove a specified cache entry, such as when executing a remove cache entry statement.

[0023] 4, a process for executing a remove cache entry statement is illustrated, according to some example embodiments. At the beginning of the process, a problematic cache entry is detected (block 405). The cache entry may be determined to be problematic based on a memory issue, the duration since the cache entry's last access exceeding a threshold, or another issue or condition. It is noted that the problematic cache entry may also be referred to as the first cache entry or the given cache entry.

[0024] Next, a remove cache entry statement is executed to remove the problematic cache entry from the cache (block 410). One or more new cache entries are then inserted into the cache after the removal of the problematic cache entry (block 415). It is noted that the one or more new cache entries may also be referred to as second cache entries, third cache entries, etc. One or more queries are then optimized during execution by the database system by accessing the new cache entries (block 420). After block 420, method 400 may end.

[0025] Referring now to FIG. 5, a process for executing a remove cache entry statement is illustrated, according to some example embodiments. At the beginning of the process, execution of a remove cache entry statement targeted at a first cache entry is initiated (block 505). Next, a first cache type and a first ENTRY_HASH of the first cache entry are obtained (block 510). From the first cache type, a cache instance is derived by the cache manager (block 515). The first ENTRY_HASH is then matched to all associated cache entries of the first cache type (block 520). The matching cache entries are then removed from the cache (block 525). After block 525, method 500 may end.

[0026] Turning now to FIG. 6, a process for responding to modifications to an origin table is shown, according to some example embodiments. The database management system detects modifications to one or more origin tables (block 605). Then, in response to detecting the modifications to one or more origin tables, the database management system determines which cache entries have become stale as a result of the modifications to the one or more origin tables (block 610). As used herein, the term “stale” is defined as having old or invalid data that has been updated elsewhere in the cache or the overall memory subsystem. In other words, a “stale” cache entry is one that has outdated data. In an example, the database management system queries a cache system view (e.g., cache system view 300 of FIG. 3) to determine which entries have become stale based on the modifications.

[0027] After block 610, the database management system executes one or more cache removal statements to remove individual cache entries identified as stale as a result of the modifications to one or more original tables (block 615). In the example, the database management system executes the newly created SQL statement "ALTER SYSTEM REMOVE CACHE ('') ENTRY ('', ''...)" to remove the individual cache entries. The database management system then inserts one or more new cache entries into the one or more caches after removing the individual cache entries identified as stale (block 620). The database management system then optimizes the execution of one or more subsequent queries by accessing the one or more new cache entries (block 625). After block 625, method 600 ends.

[0028] Referring now to FIG. 7, a process for generating a view of a database cache is illustrated, according to some example embodiments. A database management system (e.g., database management system 117 of FIG. 1) generates a cache entry system view (e.g., cache entry system view 300 of FIG. 3) of a database cache (e.g., cache 230A of FIG. 2) (block 705). The database management system also generates a new column in the cache entry system view, the new column being an ENTRY_HASH column that uniquely identifies each entry in the database cache (block 710). Next, the database management system detects a request to delete a given entry in the database cache, the request including a given ENTRY_HASH value for locating the given entry in the database cache (block 715). In response to receiving the request, the database management system identifies the given entry in the database cache using the given ENTRY_HASH value (block 720). Then, the database management system deletes the given entry in the database cache (block 725). The database management system then notifies a cache manager (e.g., cache manager 225A of FIG. 2) that the given entry has been deleted (block 730). After block 730, method 700 may end. It is noted that while the database management system is described as performing the steps of method 700, it should be understood that any component or subcomponent (e.g., execution engine, processor) of the database management system may perform these steps. Furthermore, different components or subcomponents may perform different steps of method 700. In other words, a first subcomponent may perform a first step, a second subcomponent may perform a second step, and so on.

[0029] Turning now to FIG. 8, a process for inserting a new entry into a database cache is illustrated, according to some example embodiments. A cache manager (e.g., cache manager 225A of FIG. 2) inserts a new entry into a database cache (e.g., cache 230A) (block 805). The cache manager then notifies a database management system (e.g., database management system 117 of FIG. 1) of the insertion of the new entry into the database cache (block 810). In response to the notification, the database management system inserts a new row corresponding to the new entry into the cache entry system view (block 815). Also in response to the notification, the database management system generates a new ENTRY_HASH value for the new entry in the database cache (block 820). The database management system then inserts the new ENTRY_HASH value into the corresponding column of the new row in the cache entry system view (block 825). After block 825, method 800 may end.

[0030] In some implementations, the present subject matter may be configured to be implemented in a system 900, as shown in FIG. 9A . The system 900 may include a processor 910, a memory 920, a storage device 930, and an input / output device 940. Each of the components 910, 920, 930, and 940 may be interconnected using a system bus 950. The processor 910 may be configured to process instructions for execution within the system 900. In some implementations, the processor 910 may be a single-threaded processor. In alternative implementations, the processor 910 may be a multi-threaded processor. The processor 910 may be further configured to process instructions stored in the memory 920 or the storage device 930, including receiving or transmitting information through the input / output device 940. The memory 920 may store information within the system 900. In some implementations, the memory 920 may be a computer-readable medium. In alternative implementations, the memory 920 may be a volatile memory unit. Additionally, in some implementations, memory 920 may be a non-volatile memory unit. Storage device 930 may be capable of providing mass storage for system 900. In some implementations, storage device 930 may be a computer-readable medium. In alternative embodiments, storage device 930 may be a floppy disk device, a hard disk device, an optical disk device, a tape device, a non-volatile solid-state memory, or any other type of storage device. Input / output device 940 may be configured to provide input / output operations for system 900. In some implementations, input / output device 940 may include a keyboard and / or a pointing device. In alternative implementations, input / output device 940 may include a display unit for displaying a graphical user interface.

[0031] 9B shows an example implementation of database system 110 (of FIG. 1). Database system 110 may be implemented using various physical resources 980, such as at least one or more hardware servers, at least one storage, at least one memory, at least one network interface, etc. Database system 110 may also be implemented using an infrastructure that may include at least one operating system 982 for physical resources 980 and at least one hypervisor 984 (which may create and run at least one virtual machine 986), as described above. For example, each multi-tenant application may run on a corresponding virtual machine 986.

[0032] Referring now to FIG. 10 , an example cache 1000 is shown in accordance with various embodiments of the present subject matter. In the example, cache 1000 includes a cache controller 1010 and arrays 1020A-N, which represent any number and types of arrays (e.g., data arrays, tag arrays). Depending on the embodiment, cache 1000 may include any suitable type and / or combination of direct-mapped memory and / or associative memory. In one example, caches 230A-230N (of FIG. 2) may be implemented according to the structure of cache 1000. Alternatively, one or more of caches 230A-230N may have other types of suitable structures and / or organizations, which may vary from implementation to implementation. Cache controller 1010 may be configured to perform read and write operations to arrays 1020A-N. The cache controller 1010 may also be configured to utilize any of a variety of types of eviction policies (e.g., a least recently used (LRU) policy) to evict cache lines from the arrays 1020A-N when a new cache line is to be stored in the arrays 1020A-N.

[0033] The systems and methods disclosed herein may be embodied in various forms, including, for example, a data processor such as a computer including a database, digital electronic circuitry, firmware, software, or combinations thereof. Furthermore, the above-described features and other aspects and principles of these disclosed implementations may be implemented in a variety of environments. Such environments and associated applications may be specially constructed to perform the various processes and operations in accordance with the disclosed implementations, or they may comprise general-purpose computers or computing platforms selectively activated or reconfigured by code to provide the required functionality. The processes disclosed herein are not inherently related to any particular computer, network, architecture, environment, or other apparatus, but may be implemented by any suitable combination of hardware, software, and / or firmware. For example, various general-purpose machines may be used with programs written in accordance with the teachings of the disclosed implementations, or it may be more convenient to construct specialized apparatus or systems to perform the required methods and techniques.

[0034] Although ordinal numbers such as first, second, etc. may relate to order in some contexts, when used in a document, ordinal numbers do not necessarily imply order. For example, an ordinal number may be used simply to distinguish one item from another. For example, an ordinal number may be used to distinguish a first event from a second event, but does not necessarily imply any chronological order or fixed system of reference (thus, the first event in one paragraph of a description may be different from the first event in another paragraph of the description).

[0035] The foregoing description is intended to illustrate, but not to limit, the scope of the invention, which is defined by the appended claims. Other implementations are within the scope of the appended claims.

[0036] These computer programs, which may also be referred to as programs, software, software applications, applications, components, or code, contain program instructions (i.e., machine instructions) for a programmable processor and may be implemented in a high-level procedural programming language and / or an object-oriented programming language, and / or an assembly / machine language. As used herein, the term “machine-readable medium” refers to any computer program product, apparatus, and / or device used to provide machine instructions and / or data to a programmable processor, including a machine-readable medium that receives program instructions as a machine-readable signal, such as, for example, a magnetic disk, an optical disk, a memory, and a programmable logic device (PLD). The term “machine-readable signal” refers to any signal used to provide machine instructions and / or data to a programmable processor. A machine-readable medium may store such program instructions non-transitory, such as, for example, a non-transitory solid-state memory, a magnetic hard drive, or any equivalent storage medium. Alternatively or additionally, a machine-readable medium may store such machine instructions in a transitory manner, such as a processor cache or other random access memory associated with one or more physical processor cores.

[0037] To provide for interaction with a user, the subject matter described herein can be implemented on a computer that has a display device, such as, for example, a cathode ray tube (CRT) or liquid crystal display (LCD) monitor, for displaying information to the user, as well as a keyboard and a pointing device, such as, for example, a mouse or trackball, through which the user can provide input to the computer. Other types of devices can also be used to provide for interaction with a user. For example, feedback provided to the user can be any form of sensory feedback, such as, for example, visual feedback, auditory feedback, or tactile feedback, and input from the user can be received in any form, including acoustic, speech, or tactile input.

[0038] The subject matter described herein may be implemented in a computing system that includes back-end components, such as, for example, one or more data servers, or includes middleware components, such as, for example, one or more application servers, or includes front-end components, such as, for example, one or more client computers having a graphical user interface or web browser through which a user can interact with an implementation of the subject matter described herein, or includes any combination of such back-end, middleware, or front-end components. The components of the system may be interconnected by any form or medium of digital data communication, such as, for example, a communications network. Examples of communications networks include, but are not limited to, a local area network ("LAN"), a wide area network ("WAN"), and the Internet.

[0039] A computing system may include clients and servers. Clients and servers are generally, but not limited to, remote from each other and typically interact through a communication network. The relationship of client and server arises by virtue of computer programs running on the respective computers and having a client-server relationship to each other.

[0040] In the above description and in the claims, phrases such as "at least one of" or "one or more of" may appear following a conjunctive list of elements or features. The term "and / or" may also appear following a list of two or more elements or features. Unless otherwise implicitly or explicitly contradicted by the context in which it is used, such phrases are intended to refer to any of the listed elements or features individually, or any of the listed elements or features in combination with any of the other listed elements or features. For example, the phrases "at least one of A and B," "one or more of A and B," and "A and / or B" are intended to mean "A alone, B alone, or A and B together," respectively. A similar interpretation is intended with respect to lists containing more than two items. For example, the phrases "at least one of A, B, and C," "one or more of A, B, and C," and "A, B, and / or C" are intended to mean "A alone, B alone, C alone, A and B together, A and C together, B and C together, or A, B, and C together," respectively. Use of the term "based on" above and in the claims is intended to mean "based at least in part on," and thus allows for unrecited features or elements.

[0041] In view of the above-described implementations of the subject matter, the present application discloses the following list of examples, wherein one feature of an example alone or two or more features of said examples taken in combination, and optionally one feature of an example or two or more features of said examples combined with one or more features of one or more additional examples, are further examples that also fall within the scope of the present application disclosure.

[0042] Example 1: A computer-implemented method comprising: generating a cache entry system view of a database cache; generating a new column in the cache entry system view, the new column being an entry_hash column for identifying each entry in the database cache; detecting a request to delete a given entry in the cache, the request including a given entry_hash value for locating the given entry in the database cache; in response to receiving the request, identifying the given entry in the database cache based on the given entry_hash value; deleting the given entry from the database cache; and notifying a cache manager that the given entry has been deleted.

[0043] Example 2: The computer-implemented method of Example 1, further comprising executing a cache deletion statement to delete a given entry from the database cache.

[0044] Example 3: The method performed by the computer of any of Examples 1-2, wherein a cache deletion statement includes a given entry_hash value.

[0045] Example 4: The computer-implemented method of any of Examples 1-3, further including the steps of detecting modifications to one or more origin tables; determining whether any database cache entries have become stale as a result of the modifications to the one or more origin tables; and generating a request to delete the given entry from the database cache in response to determining that the given entry has become stale as a result of the modifications to the one or more origin tables.

[0046] Example 5: The computer-implemented method of any of Examples 1 to 4, further comprising inserting a new entry into the database cache after deleting the given entry.

[0047] Example 6: The computer-implemented method of any of Examples 1 to 5, further comprising optimizing query execution by accessing new entries in a database cache.

[0048] Example 7: The computer-implemented method of any of Examples 1 to 6, further comprising generating a new entry_hash value for the new entry in the database cache.

[0049] Example 8: The computer-implemented method of any of Examples 1 to 7, further comprising inserting the new entry_hash value into a new column in a corresponding row of a cache entry system view of the database cache.

[0050] Example 9: A system including at least one processor and at least one memory containing program instructions that, when executed by the at least one processor, cause operations including generating a cache entry system view of a database cache; generating a new column in the cache entry system view, where the new column is an entry_hash column for identifying each entry in the database cache; detecting a request to delete a given entry in the cache, where the request includes a given entry_hash value for locating the given entry in the database cache; in response to receiving the request, identifying the given entry in the database cache based on the given entry_hash value; deleting the given entry in the database cache; and notifying a cache manager that the given entry has been deleted.

[0051] Example 10: The system of example 9, wherein the program instructions are further executable by the at least one processor to cause an action including executing a cache delete statement to delete a given entry in the database cache.

[0052] Example 11: The system from Examples 9-10 where the cache removal statement includes a given entry_hash value.

[0053] Example 12: The system of any of Examples 9-11, wherein the program instructions are further executable by at least one processor to cause operations including detecting modifications of the one or more origin tables; determining whether any database cache entries have become stale as a result of the modifications of the one or more origin tables; and generating a request to delete the given entry from the database cache in response to determining that the given entry has become stale as a result of the modifications of the one or more origin tables.

[0054] Example 13: The system of any of Examples 9-12, wherein the program instructions are further executable by at least one processor to cause an action including inserting a new entry into the database cache after deleting a given entry.

[0055] Example 14: The system of any of Examples 9 to 13, wherein the program instructions are further executable by the at least one processor to cause an action including optimizing query execution by accessing new entries in a database cache.

[0056] Example 15: The system of any of Examples 9-14, wherein the program instructions are further executable by the at least one processor to cause an action including generating a new entry_hash value for the new entry in the database cache.

[0057] Example 16: The system of any of examples 9 to 15, wherein the program instructions are further executable by at least one processor to cause an action including inserting the new entry_hash value into a new column of a corresponding row in a cache entry system view of the database cache.

[0058] Example 17: The system of any of Examples 9-16, wherein the program instructions are further executable by the at least one processor to cause an operation including, in response to determining that the second search of the second cache for the first parameterized SQL view results in a hit, generating a query execution plan for the received input query based on a previously generated query compile tree.

[0059] Example 18: A non-transitory computer-readable medium storing instructions that, when executed by at least one data processor, cause operations including generating a cache entry system view of a database cache; generating a new column in the cache entry system view, the new column being an entry_hash column for identifying each entry in the database cache; detecting a request to delete a given entry in the cache, the request including a given entry_hash value for locating the given entry in the database cache; in response to receiving the request, identifying the given entry in the database cache based on the given entry_hash value; deleting the given entry from the database cache; and notifying a cache manager that the given entry has been deleted.

[0060] Example 19: The non-transitory computer-readable medium of Example 18, wherein the operations further include executing a cache deletion statement to delete the given entry from the database cache.

[0061] Example 20: The non-transitory computer-readable medium of any of Examples 18-19, wherein the cache removal statement includes a given entry_hash value.

[0062] The implementations set forth in the foregoing description do not represent all implementations consistent with the subject matter described herein. Rather, these implementations are merely some examples consistent with aspects related to the described subject matter. While several variations have been described in detail above, other modifications or additions are possible. In particular, further features and / or variations may be provided in addition to the features and / or variations described herein. For example, the implementations described above may be directed to various combinations and subcombinations of the disclosed features and / or combinations and subcombinations of certain additional features disclosed above. Additionally, the logic flow illustrated in the accompanying drawings and / or described herein does not necessarily require the particular order shown or sequential order to achieve desired results. Other implementations may be within the scope of the appended claims. [Explanation of symbols]

[0063] 110 Database System 115 databases 117 Database Management System (DBMS) 120a First Client 120b Second Client 130 Network 200 Database Systems 210 Database Layer 210A~210N Database 215 Server Layer 220A~N Server 225A~N Cache Manager (CM) 230A~N Cache 240 clients 240A Smartphone 240B Computer 240C Laptop 240D Tablet 300 Cache Entry System Views 305 Host Column 310 Port Column 315 volume_ID column 320 cache_ID column 325 entry_ID column 330 entry_description column 335 component column 340 user_name column 345 memory_size column 350 create_time column 355 read_count column 360 last_access_time column 365 ENTRY_HASH 400 ways 500 ways 600 ways 700 methods 800 ways 900 System 910 processor 920 memory 930 Storage Devices 940 Input / Output Devices 950 System Bus 980 Physical Resources 982 Operating Systems 984 Hypervisor 986 virtual machines 1000 Cash 1010 cache controller 1020A~N Array

Claims

1. generating a cache entry system view of the database cache; creating a new column in the cache entry system view, the new column being an entry_hash column for identifying each entry in the database cache; Detecting a request to delete a given entry from the cache, the request including a given entry_hash value for locating the given entry in the database cache; responsive to receiving the request, identifying the given entry in the database cache based on the given entry_hash value; removing the given entry from the database cache; notifying a cache manager that the given entry has been deleted; A computer-implemented method comprising:

2. 10. The computer-implemented method of claim 1, further comprising executing a cache delete statement to delete the given entry from the database cache.

3. 3. The computer-implemented method of claim 2, wherein the cache removal statement includes the given entry_hash value.

4. Detecting modifications to one or more source tables; determining whether any database cache entries have become stale as a result of said modification of said one or more original tables; generating the request to delete the given entry from the database cache in response to determining that the given entry has become stale as a result of the modification of the one or more base tables; 10. The computer-implemented method of claim 1, further comprising:

5. 2. The computer-implemented method of claim 1, further comprising inserting a new entry into the database cache after deleting the given entry.

6. 6. The computer-implemented method of claim 5, further comprising optimizing query execution by accessing the new entry in the database cache.

7. 7. The computer-implemented method of claim 6, further comprising generating a new entry_hash value for the new entry in the database cache.

8. 8. The computer-implemented method of claim 7, further comprising inserting the new entry_hash value into the new column of a corresponding row in the cache entry system view of the database cache.

9. at least one processor; at least one memory containing program instructions that, when executed by the at least one processor, generating a cache entry system view of a database cache; creating a new column in the cache entry system view, the new column being an entry_hash column for identifying each entry in the database cache; Detecting a request to delete a given entry from the cache, the request including a given entry_hash value for locating the given entry in the database cache; In response to receiving the request, identifying the given entry in the database cache based on the given entry_hash value; Deleting the given entry from the database cache; notifying a cache manager that the given entry has been deleted; At least one memory and Including, the system.

10. 10. The system of claim 9, wherein the program instructions are further executable by the at least one processor to cause an action including executing a cache delete statement to delete the given entry from the database cache.

11. The system of claim 10 , wherein the cache removal statement includes the given entry_hash value.

12. The program instructions: Detecting modifications to one or more source tables; determining whether any database cache entries have become stale as a result of said modification of said one or more original tables; generating the request to delete the given entry from the database cache in response to determining that the given entry has become stale as a result of the modification of the one or more original tables; 10. The system of claim 9, further executable by the at least one processor to cause actions including:

13. 10. The system of claim 9, wherein the program instructions are further executable by the at least one processor to cause an action including inserting a new entry into the database cache after deleting the given entry.

14. 14. The system of claim 13, wherein the program instructions are further executable by the at least one processor to cause an action including optimizing query execution by accessing the new entry in the database cache.

15. 15. The system of claim 14, wherein the program instructions are further executable by the at least one processor to cause an action including generating a new entry_hash value for the new entry in the database cache.

16. 16. The system of claim 15, wherein the program instructions are further executable by the at least one processor to cause an action including inserting the new entry_hash value into the new column of a corresponding row of the cache entry system view of the database cache.

17. 17. The system of claim 16, wherein the program instructions are further executable by the at least one processor to cause an operation including, in response to determining that a second search of a second cache for the first parameterized SQL view results in a hit, generating a query execution plan for the received input query based on a previously generated query compilation tree.

18. A non-transitory computer-readable medium having stored thereon instructions that, when executed by at least one data processor, generating a cache entry system view of a database cache; creating a new column in the cache entry system view, the new column being an entry_hash column for identifying each entry in the database cache; Detecting a request to delete a given entry from the cache, the request including a given entry_hash value for locating the given entry in the database cache; In response to receiving the request, identifying the given entry in the database cache based on the given entry_hash value; Deleting the given entry from the database cache; notifying a cache manager that the given entry has been deleted; A non-transitory computer-readable recording medium that causes operations including:

19. 20. The non-transitory computer-readable medium of claim 18, wherein the operations further comprise executing a cache deletion statement to delete the given entry from the database cache.

20. 20. The non-transitory computer-readable medium of claim 19, wherein the cache removal statement includes the given entry_hash value.