Posts

Showing posts from February, 2021

Oracle Database Smart Flash Cache (DSFC)

The Oracle Database Smart Flash Cache solution, or simply DSFC, accelerates primarily OLTP workloads by caching frequently accessed blocks in a hybrid memory area that spans from the Oracle database buffer cache to one or more flash memory storage devices.  The feature is recommended for any Oracle database stored entirely on disk, which is well known for higher wait times and lower throughput than flash. This feature is only available on Oracle branded operating systems including Oracle Linux and Solaris.   It does not require the Oracle branded kernel known as UEK.   If you are not using an Oracle operating system, then consider moving specific tablespaces to a flash storage device. Physically, the DSFC is just a file.   The file can span one or more flash storage devices or partitions.   This spanning of devices is inherent to DSFC, which acts like software defined RAID 0.   You may use logical volume management or Oracle ASM disk groups to do the same thing, but that's over

Oracle Client Result Cache

This post describes the Oracle Client Result Cache, which allows OCI clients to cache query results in local memory. This feature is also known as the Client Query Cache, Client Side Query Cache, and the OCI Consistent Client Cache.  The feature was first introduced in Oracle 11g. Earlier I talked about the Server Result Cache.  It can cache the resulting rowsets from queries and function calls in a central location to be reused by all clients.  Here, the Client Results Cache stores the resulting rowsets locally where they can be reused only by that client.  That's the down side.  On the up side, all sessions managed by the given client can access the cache. A benefit of the Client Results Cache over the Server Result Cache is it avoids network calls.  The data is cached locally.  When using the Server Result Cache the client must put in a call over the network and wait for the data to be returned over the network. The Client Result Cache is a modification to the OCI stack th

Oracle Server Result Cache

This post is about the Oracle Server Result Cache, a free feature of Oracle Database Enterprise Edition.  It was first introduced in Oracle 11g.  There were minor changes over time and it basically works the same in Oracle 21c.  Oracle 21c added some tuning knobs including these three new init.ora parameters, two of which support caching results of queries against temporary objects: RESULT_CACHE_EXECUTION_THRESHOLD RESULT_CACHE_MAX_TEMP_SIZE RESULT_CACHE_MAX_TEMP_RESULT What is the Oracle Server Result Cache? The Oracle Server Result Cache allows you to cache the results of queries and PL/SQL function calls in database server memory so that future executions of an identical query or function can immediately obtain results from the cache instead of executing and fetching data to re-formulate the results.   Without this feature, Oracle caches the SQL execution plan so it knows how to fetch the data, and it caches some or all of the data, but your query must still assemble the data bl

Oracle 21c Caching Solutions

This blog post reviews all of the caching solutions available in Oracle Database 21c.  I dive into several of the caching solutions, but I do try to keep things relatively short-and-sweet here.  I have other blogs dedicated to each caching solution. I don't mean the Oracle SGA or PGA.   I mean optional features you can enable to enhance performance. The content of this blog post is applicable to Oracle 12g, 18c, 19c, and 21c.   Some of the caching solutions were available in Oracle 11g, but I did not regression test my examples back that far. There have been no new caching solutions in Oracle 12g R2 through 21c.   One solution in particular, the In-Memory Column Store, has received some major enhancements.   I briefly describe it here, but the deep dive is in another blog post. Summary of Oracle Caching Solutions Oracle 21c includes six caching features as listed in my table below.   I've listed them in order from newest on top to oldest at the bottom.   Cac