SlideShare a Scribd company logo
Alexander Tokarev
Oracle In-Memory from trenches
Speed-of-light faceted search
deep tech dive
NOUG
• Alexander Tokarev
• Age 38
• Database performance architect at DataArt:
1. Solution design
2. Performance tuning
3. POCs and crazy ideas
• First experience with Oracle - 2001, Oracle 8.1.7
• First experience with In-Memory solutions - 2015
• Lovely In-Memory databases:
1. Oracle InMemory
2. Exasol
3. Tarantool
• Hobbies: spearfishing, drums
Who am I
DataArt
Consulting, solution design, re-engineering
20 development centers
>2500 employees
Famous clients: NASDAQ
S&P
Ocado
JacTravel
Maersk
Regus and etc
Who is my employer
 Faceted search
 Project
 Architecture
 Faceted search place
 Performance issues
 In-memory internals
 Implementation steps and traps
 Key findings
 Q&A
Agenda
Faceted search
Facet
Constraint
Facet count
Facet types
Values/Terms
Interval
Range
1. Filter by multiple taxonomies
2. Combine text, taxonomy terms and numeric values
3. Discover relationships or trends between objects
4. Make huge items volume navigable
5. Simplify "advanced" search UI
What for
• Tag-based
• Plain-structure based
Faceted search base
Object Author Category Format Price
Days to
deliver
The Oracle Book: Answers to
Life's Questions
Cerridwen
Greenleaf Fortune telling Paper 18 4
Ask a Question, Find Your Fate:
The Oracle Book Ben Hale Fantasy Kindle 12 2
Object Tags
Book 1 Paper, Fortune telling, Very good book, worth reading
Book 2 Ben Halle, Fantasy, Kindle
Tags
• Keyword assigned to an object
• Chosen informally and personally by item's creator or viewer
• Assigned by the viewer + unlimited = Folksonomy
• Assigned by the creator + limited = Taxonomy
1. Facet source: taxonomy + folksonomy
2. Facet types: terms mostly
3. Implementation type: tag-based
Our case facets
Our case statistics
Extracted entities: Objects, Tags, Tags of objects, Facet types
Date: 2016 to 2017
Tagged objects: 3 000 000
Applied tags: 42 000 000
Unique tags count: 100 000
Max tags count for an object: 15
Max tag length: 50
Facets count: 150
Data volume = StackOveflow x 3!
Architecture
Oracle
main
Oracle
DG
Application
server
Application
server
Load
balancer
Client
browser
10000 RPS
In-memory
cluster
Architecture
~20 fine-tuned SQL queries
UI
Database structure
OLTP DWH
ONLY ACTIVE VALUES
Search table structure
0.0010.010.11
Search by PK
Search by 1 tag
Search by 5 tags
No In-Memory
Performance
* Logarithmic scale
Full Text Search server
Act III
To FTS, or not to FTS, that is the
question
Solution design
Implementation
It isn’t our case completely!
1. Limited POC resources: people + time
2. Customer has a license
3. Wide searсh table
4. A lot of rows
5. A lot of equal values:
• Object types
• Facet types
• Tag names
6. Size is fine for InMemory
7. Queries use a lot of aggregate functions
Why to try
Dual storage format!
Internals
Search table structure
Naive implementation
InMemory size
Options Volume, Gb
data in row format 6,5
no compress InMememory 7,2
Performance
Performance
Performance
Performance profit
2x <> 21x!
Where is our performance?!
InMemory internals
1. IMCU – InMemory Compression Unit
Size = 1 Mb
Columnar Data
2. SMU – Snapshot Metadata Unit
Size = 64 Kb
Zone Map Based Index
Zone Maps
ZoneMap on
State column
InMemory Zone Maps
Implementation
Implementation
InMemory Zone Maps
Doesn’t work!!!
InMemory Zone Maps
Zone Maps pruning fix
1. CREATE TABLE AS SELECT * FROM … ORDER BY
2. CLUSTERING BY LINEAR ORDER YES ON DATA MOVEMENT
+
ALTER TABLE MOVE ONLINE
InMemory size
Options
Volume,
Gb
Load time,
seconds
data in row format 6,5 0
no compress InMememory 7,2 40
memcompress for dml 6 45
memcompress for query low 4 45
memcompress for query high 2,5 49
memcompress for capacity low 3,5 48
memcompress for capacity high 2 50
No significant differences for loading!
FastStart
3x loading speed boost!
Columnar format
Test rerun
Where is our performance?!
Same metrics!
Faceted search SQL
InMemory aggregations
Sort of BLOOM
filter
Zone Maps and JOINs
1. Zone Maps - not efficient!
2. Key Vector transformation
ignored – replaced by Bloom!
The same for VARCHAR!
Join groups
Sort of Oracle JOIN CLUSTER
Join groups
Join groups limitations
1. JOIN condition must have only JOIN GROUP fields
2. Compression ratio should be equal for 2 tables
3. Simplest and not wide data types required
4. Fails after big DML
5. Required additional PGA
6. FastStart doesn’t work
Hard to predict!
Table structure
1. Java changed
2. all indexes dropped
Final table structure
Searchable via Full Text Search indexes!
Final table structure
+ all indexes are dropped
No InMemory
• Sporadic search degradation – 5-10%
• Happens when a lot of DML operations
Performance spikes
1. Changed records -> Mark as stale
2. Stale records -> Read from row storage
• buffer cache
• disk
3. Stale records -> repopulate IMCU:
• Staleness threshold
• Trickle repopulation process - each 2 minutes
• processes count - INMEMORY_MAX_REPOPULATE_SERVERS
• processes utilization - INMEMORY_TRICKLE_REPOPULATE_SERVERS_PERCENT
Transaction processing
IMCU invalidation parameters
Row storage read evidences
Should be equal 0!
Repopulation process
Repopulation process
Default values
1. INMEMORY_MAX_REPOPULATE_SERVERS = 4
2. INMEMORY_TRICKLE_REPOPULATE_SERVERS_PERCENT = 8
Performance spikes elimination
Troubleshooting
More than 500 statistics!
More than 190 parameters!
Troubleshooting
8 statistics covers 90% cases!
Troubleshooting
3 parameters covers 90% cases!
Troubleshooting
View name Description
V$IM_COL_CU SMU detailed information per column
V$IM_SMU_HEAD
+
V$IM_HEADER SMU header statistics
v$IM_SEGMENTS InMemory segment parameters
4 views covers 90% cases!
Performance with In-Memory final
Performance with In-Memory final
Performance with In-Memory final
 InMemory size <> table data size
 All data InMemory <> High performance
 Decent time to be loaded
 8 IM statistics is enough
 Big updates => full inmemory repopulation
 Small updates => trickle repopulation
 ROLLBACK after DML = repopulation
 Trickle parameters relevant to workload
DBAs findings
 Advanced IM features <> significant profit
 Zone maps = numeric and date data type only
 Dictionary pruning – not in Oracle 12.2 and 18
 Simple data types = High performance
 High compression <> Slow ingestion
Developers finding
 Extra memory 
 POC with IM DWH
 523 IM statistics + 190 parameters
 FastStart options
 18c features
Furthers plans
 Always try and measure
 IM works for short queries as well
 Understanding of IM internals is a must
 Application changes are required
 No extra software/hardware introduced
 Fast POC followed by production deploy
 4x times performance boost
 Huge license costs 
Conclusion
Thank you for your time!
Alexander Tokarev
Database expert
DataArt
shtock@mail.ru
https://github.com/shtock
https://www.linkedin.com/in/alexander-tokarev-14bab230 NOUG

More Related Content

PPT
Performance Tuning With Oracle ASH and AWR. Part 1 How And What
PDF
A day in the life of a click house query
PPTX
Faceted search with Oracle InMemory option
PPTX
Oracle InMemory hardcore edition
PPTX
Oracle Database 12c - Features for Big Data
PPTX
Dan Hotka's Top 10 Oracle 12c New Features
PPTX
In memory databases presentation
PPTX
SPL_ALL_EN.pptx
Performance Tuning With Oracle ASH and AWR. Part 1 How And What
A day in the life of a click house query
Faceted search with Oracle InMemory option
Oracle InMemory hardcore edition
Oracle Database 12c - Features for Big Data
Dan Hotka's Top 10 Oracle 12c New Features
In memory databases presentation
SPL_ALL_EN.pptx

Similar to P9 speed of-light faceted search via oracle in-memory option by alexander tokarev (20)

PDF
Automated product categorization
PDF
Automated product categorization
PPTX
Real World Performance - Data Warehouses
PPTX
OracleStore: A Highly Performant RawStore Implementation for Hive Metastore
PDF
MongoDB World 2019: Finding the Right MongoDB Atlas Cluster Size: Does This I...
PPTX
Exciting Features for SQL Devs in SQL 2012
PDF
Secrets of highly_avail_oltp_archs
PDF
Oracle12c Database in-memory Data Sheet
PPTX
How Clean is your Database? Data Scrubbing for all Skill Sets
PPTX
7 Database Mistakes YOU Are Making -- Linuxfest Northwest 2019
PPTX
Large Data Volume Salesforce experiences
PDF
MongoDB .local Toronto 2019: Finding the Right Atlas Cluster Size: Does this ...
PPTX
Tagging search solution design
PPTX
Hardware Provisioning
PDF
hbaseconasia2019 Phoenix Improvements and Practices on Cloud HBase at Alibaba
PDF
Sloupcové uložení dat a použití in-memory technologií u řešení Exadata
PPTX
Boosting the Performance of your Rails Apps
PDF
Time Series Databases for IoT (On-premises and Azure)
PDF
Oracle DB In-Memory technologie v kombinaci s procesorem M7
PDF
(ATS6-PLAT02) Accelrys Catalog and Protocol Validation
Automated product categorization
Automated product categorization
Real World Performance - Data Warehouses
OracleStore: A Highly Performant RawStore Implementation for Hive Metastore
MongoDB World 2019: Finding the Right MongoDB Atlas Cluster Size: Does This I...
Exciting Features for SQL Devs in SQL 2012
Secrets of highly_avail_oltp_archs
Oracle12c Database in-memory Data Sheet
How Clean is your Database? Data Scrubbing for all Skill Sets
7 Database Mistakes YOU Are Making -- Linuxfest Northwest 2019
Large Data Volume Salesforce experiences
MongoDB .local Toronto 2019: Finding the Right Atlas Cluster Size: Does this ...
Tagging search solution design
Hardware Provisioning
hbaseconasia2019 Phoenix Improvements and Practices on Cloud HBase at Alibaba
Sloupcové uložení dat a použití in-memory technologií u řešení Exadata
Boosting the Performance of your Rails Apps
Time Series Databases for IoT (On-premises and Azure)
Oracle DB In-Memory technologie v kombinaci s procesorem M7
(ATS6-PLAT02) Accelrys Catalog and Protocol Validation
Ad

More from Alexander Tokarev (20)

PPTX
Rate limits and all about
PPTX
rnd teams.pptx
PPTX
FinOps for private cloud
PPTX
Graph ql and enterprise
PPTX
FinOps introduction
PPTX
Open Policy Agent for governance as a code
PPTX
Relational databases for BigData
PPTX
Cloud DWH deep dive
PPTX
PPTX
Row Level Security in databases advanced edition
PPTX
Row level security in enterprise applications
PPTX
Inmemory BI based on opensource stack
PPTX
Tagging search solution design Advanced edition
PPTX
Oracle JSON treatment evolution - from 12.1 to 18 AOUG-2018
PPTX
Oracle JSON internals advanced edition
PPTX
Oracle Result Cache deep dive
PPTX
Oracle result cache highload 2017
PPTX
Oracle json caveats
PPTX
Apache Solr for begginers
PPTX
Data structures for cloud tag storage
Rate limits and all about
rnd teams.pptx
FinOps for private cloud
Graph ql and enterprise
FinOps introduction
Open Policy Agent for governance as a code
Relational databases for BigData
Cloud DWH deep dive
Row Level Security in databases advanced edition
Row level security in enterprise applications
Inmemory BI based on opensource stack
Tagging search solution design Advanced edition
Oracle JSON treatment evolution - from 12.1 to 18 AOUG-2018
Oracle JSON internals advanced edition
Oracle Result Cache deep dive
Oracle result cache highload 2017
Oracle json caveats
Apache Solr for begginers
Data structures for cloud tag storage
Ad

Recently uploaded (20)

PDF
Product Update: Alluxio AI 3.7 Now with Sub-Millisecond Latency
PDF
Cost to Outsource Software Development in 2025
PPTX
Oracle E-Business Suite: A Comprehensive Guide for Modern Enterprises
PDF
Adobe Premiere Pro 2025 (v24.5.0.057) Crack free
PPTX
assetexplorer- product-overview - presentation
PPTX
Log360_SIEM_Solutions Overview PPT_Feb 2020.pptx
PDF
AutoCAD Professional Crack 2025 With License Key
PDF
Designing Intelligence for the Shop Floor.pdf
PDF
How to Make Money in the Metaverse_ Top Strategies for Beginners.pdf
PDF
Download FL Studio Crack Latest version 2025 ?
PDF
Adobe Illustrator 28.6 Crack My Vision of Vector Design
PDF
How to Choose the Right IT Partner for Your Business in Malaysia
PDF
iTop VPN Free 5.6.0.5262 Crack latest version 2025
PPTX
Patient Appointment Booking in Odoo with online payment
PDF
Nekopoi APK 2025 free lastest update
PPTX
Why Generative AI is the Future of Content, Code & Creativity?
PDF
Odoo Companies in India – Driving Business Transformation.pdf
PDF
17 Powerful Integrations Your Next-Gen MLM Software Needs
PDF
Autodesk AutoCAD Crack Free Download 2025
PPTX
Agentic AI Use Case- Contract Lifecycle Management (CLM).pptx
Product Update: Alluxio AI 3.7 Now with Sub-Millisecond Latency
Cost to Outsource Software Development in 2025
Oracle E-Business Suite: A Comprehensive Guide for Modern Enterprises
Adobe Premiere Pro 2025 (v24.5.0.057) Crack free
assetexplorer- product-overview - presentation
Log360_SIEM_Solutions Overview PPT_Feb 2020.pptx
AutoCAD Professional Crack 2025 With License Key
Designing Intelligence for the Shop Floor.pdf
How to Make Money in the Metaverse_ Top Strategies for Beginners.pdf
Download FL Studio Crack Latest version 2025 ?
Adobe Illustrator 28.6 Crack My Vision of Vector Design
How to Choose the Right IT Partner for Your Business in Malaysia
iTop VPN Free 5.6.0.5262 Crack latest version 2025
Patient Appointment Booking in Odoo with online payment
Nekopoi APK 2025 free lastest update
Why Generative AI is the Future of Content, Code & Creativity?
Odoo Companies in India – Driving Business Transformation.pdf
17 Powerful Integrations Your Next-Gen MLM Software Needs
Autodesk AutoCAD Crack Free Download 2025
Agentic AI Use Case- Contract Lifecycle Management (CLM).pptx

P9 speed of-light faceted search via oracle in-memory option by alexander tokarev

Editor's Notes

  • #2: Hello, guys. My name is Alex. Have you ever used Oracle InMemory option to bring a performance profit? Perfect. Today we are going to discuss how we improved faceted search performance with Oracle InMemory option for one of our client.
  • #3: Let me introduce myself I’m a performance architect and my main focus is data warehousing for big clients. I have huge Oracle experience but I works with Exasol and Tarantool databases as well.
  • #4: My employer is a big global consulting company. We have a lot of famous clients in many industries and you know some of them probably .
  • #5: We have rather straightforward agenda for today discussion We’ll discuss what is faceted search, Project overview and its performance issues I try to explain how Oracle InMemory option is implemented internally but without digging into details. My main focus is how we made the customer happy and share with you our issues you could face with as well For sure I’ll answer your questions.
  • #6: Everybody knows what is faceted search. We have groups named facets, Values named constraints and Figures names facet counts
  • #7: Common facet types are terms Intervals And ranges
  • #8: What for do we need faceting We need facets if Users need to filter content using multiple taxonomy terms at the same time. Users want to combine text searches, taxonomy term filtering, and other search criteria. trying to discover relationships or trends between contents. Navigate inside tons of data And your end users are already frightened by "advanced" search forms in enterprise applications
  • #9: There are 2 common approaches how to store data for facets – Tag-based where we store terms facets in a list of delimited somehow values Or Plain-based, where we store all values in a wide table. It is used for range facets mostly.
  • #10: The fist option to implement faceted search is tags. Everyone knows what is tags but let me remind. Tag is a keyword assigned to an object Mostly is is chosen informaly If it is assigned by the viewer and tags count is unlimited it is folksonomy When assigned by the creator and a set of tags is limited it is taxonomy
  • #11: We use taxonomy and foksonomy simoultaneously, so the best part of our facets are terms and we chosen tag-based storage.
  • #12: Let me show some statistics. We extract objects, tags, facets for 2 years We have about 3 000 000 objects tagged, 42 000 000 terms applied, 100 000 unique terms, maximum tags count is 15 and there are about 150 facets. Is it whether decent volume or not? I think it is decent because we are bigger than StackOverflow by tags in 3 times.
  • #13: We have ordinal architecture for enterprise. Web browser, balancer, a set of application servers which deal with inmemory grid and oracle with the replica on the backend. Pay attention that there is no full text search server which has been prohibited in accordance with customer policies.
  • #14: We have microservice architecture and one of the services it tagging service which is responsible for data ingestion and faceted search. It is widely used by many other services and receives about 10000 requests per second. In order to serve search requests there are about 20 fine-tuned sql queries.
  • #15: I can’t show you real printscreens from the application because of NDA so I implemented the mockup in Paint. As we could see UI is full of features as Predefined faceted search templates Full text search by random tags. We could search via audit information and we have faceted navigation for sure. We could filter out objects where some tags are present (not tag values) and user paging. It is rather sophisticated UI.
  • #16: In terms of storage we store tags in Denormalized for in JSON and in a wide relational table for the sake of performance.
  • #17: We could have a look into the table in details. It contains tagged object types, facet information, tags information and values. There is Denormalized object name and object description tags because they are used in full text search mostly.
  • #18: Let’s have a look into performance metrics. I used logarithmic scale to put everything in one diagram. On a first glance figures look good. We do complicated searches less than zero point two seconds but actually it is bad because we need to serve more and more users and data so queries become slow
  • #19: In accordance with one of my others presentations the best option for faceted search is full text search dedicated server but we had a lack of time to implement it as well as reluctant to introduce additional layers of complexity. Moreover, Oracle 18 has own faceted search implementation in Oracle Text feature1. We even did a proof of concept for the option and were happy but we use 12.1
  • #20: We started looking into InMemory solutions especially regarding the customer already had Oracle InMemory license. In accordance with Oracle documentation it should be used for analytical queries which isn’t our case completely but we decided to try.
  • #21: Why? 1. Because we were limited 2. The customer has a license 3. The table is rather wide, full of data which has a lot of equal values 4. So it will fit in memory especialy regarding compression features 5. And last but not least queries are full of aggregate functions
  • #22: In accordance with the Oracle documentation InMemory feature is sort of silver bullets so we decided not waste time understanding how it works internally. What we knew that the option stores row and columnar data in dual mode maintaining their consistency automatically.
  • #23: Let me remind you our table
  • #24: We set InMemory area size to 10 gigabytes and assigned the table into the area. We decided that performance will be faster without compression so NO COMPRESSION option was used.
  • #25: What is significant to stress that InMemory brought some overhead without compression
  • #26: So we started our tests and faced with the difference in performance was extremely unsignificant which is expect for the search by primary keys
  • #27: But for search by 1 tag
  • #28: And search by 5 keys we don’t observe huge performance profit
  • #29: When we started our POC we relied on Lufthansa usecase when they got average 21 performance profit but our profit was 10 times less. It means that we do something wrong and we need to understand how InMemory works internally.
  • #30: Do you recall I mentioned InMemory area? It consists from 2 parts actually. The first one in IMCU – InMemory Compression Unit which stores data in columnar format And SMU – Snapshot Metadata Unit which stores transaction related metadata, dictionaries and Zone Maps. Do you know what is zone map?
  • #31: Let’s have a look into simplified example. We have sales table which is split by 1 Mb IMCU blocks. Each block stores minimal and maximum values for each column so when we need to search sales for California we scans zone maps and check does our value is located in min/max boundaries so we do not scan extra blocks.
  • #32: I converted SMU zone maps in readable format. As you could see they are stored per-column base as I told before. You see numeric zone maps and character ones. Please pay attention that dictionary_entries column contains only zero.
  • #33: As we understood it happens because no compression were switched on.
  • #34: Let’s enable the compression
  • #35: We’ve seen that dictionary extries had been populated which should give dictionary-based pruning in accordance with the documentation I presume it happened because of zone maps have all values from A to Z in one IMCU. Moreover I haven’t found any statistics which could distinguish CU pruning reason: is it whether dictionary based or Zone maps based
  • #36: We’ve seen that dictionary entries had been populated which should give dictionary-based pruning in accordance with the documentation Moreover the screenshot gives us very interesting case where zone maps could not be used. Try to guess why. Because the IMCU stores all possible character values so the pruning will not be efficient at all.
  • #37: In order to fix I found 2 tricks: the old on and the new one. Any ideas what I’m talking about? The trick is arrange data in a proper fashion by the field we use for search
  • #38: Compression ratio is rather high but it depends from you data for sure. You could see that compression doesn’t influence on ingestion so high compression could be used as the default. Frankly speaking loading 6 gigabytes for 1 minute it is to much so we decided to have a look into FastStart feature.
  • #39: The feature writes InMemory area in a columnar format and once database is rebooted it loads the data in memory with the speed of file reading so we got 3 times loading profit.
  • #40: It is time for rerun our tests. Try to guess which performance profit we got once we used high compression ration? Actually no profit at all. Let’s continue digging in details
  • #41: Let’s have a look into one of simplified SQL used for faceted search. It has some aggregate functions and group by clause.
  • #42: In order to improve facet count and search calculation InMemory aggregations should be used. They create Key vector which is used in join process as well as doing aggregate functions calculation on the fly.
  • #43: If we recall denormilized table structure we identify that the best part of fields has binary type because we use global unique identifiers as keys so Zone maps aren’t used Key vector transformation replaced by Bloom filter And the same happens if keys are varchar
  • #44: In order to address the challenge we decided to use Join groups. It is sort of Join cluster which I’ve never seen in production though. Join groups are intended to implement join without decompressioning InMemory Compression Unit based on dictionary entries.
  • #45: Let’s create join group. There is no statistics to understand whether join groups were used or not so it is required to parse Real Time Sql monitor output to achieve it
  • #46: After some investigations we decided not to use join groups because of They work with simplest join conditions only Compression ratio should be equal Only simple data types are required, joins by big varchar2 fields don’t work If a lot of information is loaded into InMemory tables join groups are ignored More PGA is required by sessions FastStart refuse to work
  • #47: So we changed all foreign keys field data types to number which required changes in our application and we removed all indexes
  • #48: We understood that no reasons to store all columns inmemory because we search by them via Oracle Full Text Search indexes
  • #49: So the final structure is simple data types without b-tree indexes and 2 fields are removed from inmemory storage
  • #50: We did some performance tests and found sporadic search performance degradation which happens where records were inserted or updated.
  • #51: Let’s understand how Oracle provides read consistency for InMemory. IM introduces third mechanyzm of read consistency: the first one is the ordinal one with rollback segments, the second is latches for Result Cache and InMemory has the mechanism very close to Postgress Once a record is changed it is marked as stale. All stale records are read either from buffer cache or disk. Oracle repopulates stale records by staleness threshold or each 2 minutes by so named trickle repopulation process. It could be done in parallel plus we could state how much resources could be consumed for stale records repopulation
  • #52: I suspect these parameters are responsible for IMCU repopulation but substring search gives us about 34 undocumented parameters so I’m reluctant to change any of them
  • #53: In order to understand where data were scanned from there are 2 statistics: Scan row cache And Scan block cache Both of them should be equal to zero
  • #54: In order to look after repopulation process use v$im_smu_head view.
  • #55: The second view is v$im_header. Let’s have a look into details – there is very interesting case here. We repopulate small number of blocks with trickle repopulation process initially but in 2 seconds We run other trickle repopulation process which identified that too much of rows is affected and it is better to repopulate data block completely.
  • #56: Let’s have a look what we have by default Oracle allocates 2 parallel servers and spends 1 percent of resource for trickle process
  • #57: As soon as we set 4 repopulation servers and 8 percent of time to repopulate stale records and performance spikes disappeared
  • #58: InMemory option is very easily to trace and maintain but let me share a secret information with you. We needn’t to know all of them at all.
  • #59: 8 parameters covers the best part of InMemory performance tuning. Let me share one more secret. only 1 parameter is enough. Try to guess which one and why I could state the query I took these statistics from is non-efficient It states how efficient zone maps indexes are used.
  • #60: So 3 settings covers the best part of dba activities
  • #61: And 2 views give us enough information for basic InMemory undertanding
  • #62: Let’s have a look into final figures. No performance profit for PK scan which is expected.
  • #63: Let’s have a look into final figures. With proper InMemory implementation we have 4 times performance profit for one tag search
  • #64: And 5 times performance profit for search by 5 tags so it is time moving to conclusion
  • #65: Let’s elaborate DBA findings. InMemory area size should be estimated taking into account compression and your data If we have all data in memory it doesn’t mean we are extremely fast InMemory takes time to be loaded after server reboot 8 statistics is enough to help developers with the best part of their issues Allign trickle processes settings with your workload
  • #66: What we’ve fount that in our usecase extremely advanced inmemory features like join groups, inmemory aggregations hasn’t brought significant performance profit. Zone maps work perfect with numeric and date data types. Dictionary based pruning doesn’t work in our oracle version at least. More simple data types are used – more performance we have It is extremely significant that even high compression doesn’t affect ingestion speed Different read consistency model leads that even rollback statements could slow down your queries
  • #67: So our plan is rather straightforward: Add memory Test the main purpose the InMemory was intended for Try to understand all statistics Enable FastStart on production Play with Oracle 18 cool features like lightweight parallel InMemory scans
  • #68: Our main conclusion is that you shouldn’t rely on documentation and experts – try and measure your particular use-case Which could prove that IM works with short queries as well You must understand how it works internally otherwise you will not get performance profit Unfortunately application was changed But extra layers, message queues, hardware need to be added We had managed to put our IM POC in production very fast (1 week or so) And business got 4 times performance boost. Spending a lot of money That’s it from my side for today so
  • #69: Thank you for your time.