{"id":4810,"date":"2015-05-18T13:38:24","date_gmt":"2015-05-18T11:38:24","guid":{"rendered":"https:\/\/www.dbi-services.com\/blog\/variations-on-1m-insert-6-cpu-flame-graph\/"},"modified":"2015-05-18T13:38:24","modified_gmt":"2015-05-18T11:38:24","slug":"variations-on-1m-insert-6-cpu-flame-graph","status":"publish","type":"post","link":"https:\/\/www.dbi-services.com\/blog\/variations-on-1m-insert-6-cpu-flame-graph\/","title":{"rendered":"Variations on 1M insert (6): CPU Flame Graph"},"content":{"rendered":"<h2>By Franck Pachot<\/h2>\n<p>.<br \/>\nIf you followed the 1M rows insert variations, you have seen how something simple brought me into an investigation with the latest tools available to see where the time is spent. When the time is CPU time, there is no wait event to get the detail of DB Time. I&#8217;ve used perf events in the\u00a0<a href=\"http:\/\/dbi-services.com\/blog\/variations-on-1m-rows-insert-1-bulk-insert-2\/\">previous post<\/a> and I&#8217;ll now visualize them with <a href=\"http:\/\/www.brendangregg.com\/FlameGraphs\/cpuflamegraphs.html\">CPU Flame Graph<\/a>. My goal is to understand why my test cases is 2x longer in 11.2.0.4 vs 11.2.0.3<\/p>\n<p>The idea to use Flame Graphs come from Luca Canali:<\/p>\n<div class=\"Tweet-header u-cf\">\n<blockquote>\n<div class=\"Tweet-author u-textTruncate h-card p-author\"><a class=\"Tweet-authorLink Identity u-linkBlend\" href=\"https:\/\/twitter.com\/LucaCanaliDB\"><span class=\"Tweet-authorAvatar Identity-avatar\"><img decoding=\"async\" class=\"Avatar u-photo alignleft\" src=\"https:\/\/pbs.twimg.com\/profile_images\/378800000811081324\/ec2cc398422e4aa1338b048d6f03f28a_normal.jpeg\" alt=\"\" \/><\/span><span class=\"Tweet-authorName Identity-name p-name customisable-highlight\">Luca Canali<\/span> <span class=\"Tweet-authorScreenName Identity-screenName p-nickname\">@LucaCanaliDB<\/span><\/a><\/div>\n<div class=\"Tweet-author u-textTruncate h-card p-author\"><\/div>\n<\/blockquote>\n<\/div>\n<div class=\"Tweet-body e-entry-content\">\n<blockquote>\n<p class=\"Tweet-text e-entry-title\" dir=\"ltr\" lang=\"en\">.<a class=\"PrettyLink profile customisable h-card\" href=\"https:\/\/twitter.com\/FranckPachot\"><span class=\"PrettyLink-prefix\">@<\/span><span class=\"PrettyLink-value\">FranckPachot<\/span><\/a> Franck, have you considered stack profiling and flame graphs? <a class=\"PrettyLink hashtag customisable\" href=\"https:\/\/twitter.com\/hashtag\/my2cents?src=hash\" rel=\"tag\"><span class=\"PrettyLink-prefix\">#<\/span><span class=\"PrettyLink-value\">my2cents<\/span><\/a> \/CC <a class=\"PrettyLink profile customisable h-card\" href=\"https:\/\/twitter.com\/fritshoogland\"><span class=\"PrettyLink-prefix\">@<\/span><span class=\"PrettyLink-value\">fritshoogland<\/span><\/a> <a class=\"PrettyLink profile customisable h-card\" href=\"https:\/\/twitter.com\/OracleSK\"><span class=\"PrettyLink-prefix\">@<\/span><span class=\"PrettyLink-value\">OracleSK<\/span><\/a> <a class=\"PrettyLink profile customisable h-card\" href=\"https:\/\/twitter.com\/martinberx\"><span class=\"PrettyLink-prefix\">@<\/span><span class=\"PrettyLink-value\">martinberx<\/span><\/a><\/p>\n<div class=\"Tweet-metadata dateline\">2:12 PM &#8211; 12 May 2015<\/div>\n<\/blockquote>\n<\/div>\n<div><\/div>\n<p>And you can read about Flame Graphs for Oracle on his <a href=\"http:\/\/externaltable.blogspot.ch\/2014\/05\/flame-graphs-for-oracle.html\">blog<\/a>. That was the occasion for me to test that before attending to <a href=\"http:\/\/www.soug.ch\/fr\/evenements\/sig-150521-agenda.html\">his presentation<\/a> at SOUG next week.<\/p>\n<h3>perf events and flame graphs<\/h3>\n<p>I&#8217;ve run my testcase in 11.2.0.3 and 11.2.0.4 and gathered perf events with:<\/p>\n<pre><code>SQL&gt; select spid from v$process \nwhere addr=(select paddr from v$session where sid=sys_context('userenv','sid'));\n\nSPID\n------------------------\n44658\n<\/code><\/pre>\n<p>to get the process id and:<\/p>\n<pre><code>perf record -e cpu-cycles -o \/tmp\/perf.out -g -c 1 -p 44658\n<\/code><\/pre>\n<p>to capture samples. I&#8217;ve stopped it after 3 seconds because the high frequency sampling generates large files.<\/p>\n<p>Then I generate flame graphs:<\/p>\n<pre><code>perf script -i \/tmp\/perf.out | .\/FlameGraph-master\/stackcollapse-perf.pl &gt; \/tmp\/perf.folded ; .\/FlameGraph-master\/flamegraph.pl \/tmp\/perf.folded &gt; \/tmp\/perf.folded.svg\n<\/code><\/pre>\n<h3>1M rows insert test case in 11.2.0.4<\/h3>\n<p>Here is the graph zoomed from opiexe to kdiins0:<\/p>\n<p><a class=\"easyblog-thumb-preview\" title=\"Capture1-perf-testcase-o11204.JPG\" href=\"http:\/\/dbi-services.com\/blog\/images\/easyblog_images\/139\/Capture1-perf-testcase-o11204.JPG\"><img decoding=\"async\" title=\"b2ap3_thumbnail_Capture1-perf-testcase-o11204.JPG\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/b2ap3_thumbnail_Capture1-perf-testcase-o11204.jpg\" alt=\"b2ap3_thumbnail_Capture1-perf-testcase-o11204.JPG\" \/><\/a><\/p>\n<p>I don&#8217;t know all the Oracle function names, but I see two call stack with high number of samples. One is related with inserts, index maintenance, etc.<\/p>\n<p>But one is not and here is the call stack:<\/p>\n<pre><code>rpiswu2 psdextp pefccal pefcal pevm_FCAL pfrinstr_FCAL pfrrun_no_tool<\/code><\/pre>\n<h3>1M rows insert test case in 11.2.0.3<\/h3>\n<p>Here is the same but executed on 11.2.0.3<\/p>\n<p><a class=\"easyblog-thumb-preview\" title=\"Capture2-perf-testcase-o11203.JPG\" href=\"http:\/\/dbi-services.com\/blog\/images\/easyblog_images\/139\/Capture2-perf-testcase-o11203.JPG\"><img decoding=\"async\" title=\"b2ap3_thumbnail_Capture2-perf-testcase-o11203.JPG\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/b2ap3_thumbnail_Capture2-perf-testcase-o11203.jpg\" alt=\"b2ap3_thumbnail_Capture2-perf-testcase-o11203.JPG\" \/><\/a><\/p>\n<p>The call stack with &#8216;rpiswu2 psdextp pefccal pefcal pevm_FCAL pfrinstr_FCAL pfrrun_no_tool&#8217; is not there. I don&#8217;t know what are doing those functions but it seems that they are responsible for the additional CPU consumption.<\/p>\n<h3>dbms_random<\/h3>\n<p>I&#8217;m using dbms_random to generate data in my test case. I usually avoid guesses and prefer to go to the root cause only from evidences. But here I don&#8217;t know what is behind those functions and my test case is basically doing two things: generate records with random values and insert them into the table. As my CPU utilization seems to be not related to inserts, maybe it&#8217;s about the record generation. The idea came first from Sayan Malakshinov on twitter<\/p>\n<p>&nbsp;<\/p>\n<div>\n<div>\n<blockquote>\n<div><a href=\"https:\/\/twitter.com\/FranckPachot\"><img decoding=\"async\" class=\" alignleft\" src=\"https:\/\/pbs.twimg.com\/profile_images\/419530926779936769\/N8gP0VrX_normal.jpeg\" alt=\"\" \/><span>Franck Pachot<\/span> <span>@FranckPachot<\/span><\/a><\/div>\n<\/blockquote>\n<\/div>\n<blockquote>\n<div><\/div>\n<div>\n<p dir=\"ltr\" lang=\"en\">The testcase I&#8217;ve done in <a title=\"https:\/\/www.dbi-services.com\/index.php\/blog\/entry\/insert1m-bulk\" href=\"http:\/\/t.co\/D2RsgYzK6r\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">https:\/\/www.dbi-services.com\/index.php\/blog\/entry\/insert1m-bulk\u00a0\u2026<\/a> (the bulk one) needs 2x more CPU in &gt;=11.2.0.4 than 11.2.0.2 \ud83d\ude41 <a href=\"http:\/\/t.co\/EeHJLja4Bh\">pic.twitter.com\/EeHJLja4Bh<\/a><\/p>\n<\/div>\n<\/blockquote>\n<\/div>\n<div>\n<blockquote>\n<div>\n<div><\/div>\n<div><a href=\"https:\/\/twitter.com\/xtner\"><img decoding=\"async\" class=\" alignleft\" src=\"https:\/\/pbs.twimg.com\/profile_images\/459446689938423808\/treQHHJW_normal.jpeg\" alt=\"\" \/><span>Sayan Malakshinov<\/span> <span>@xtner<\/span><\/a><\/div>\n<div><\/div>\n<\/div>\n<div>\n<p dir=\"ltr\" lang=\"en\"><a href=\"https:\/\/twitter.com\/FranckPachot\">@FranckPachot<\/a> Have you checked how much cpu consumed dbms_random.value? It&#8217;s quite heavyweight function<\/p>\n<\/div>\n<\/blockquote>\n<div>\n<blockquote>\n<div>8:38 AM &#8211; 12 May 2015<\/div>\n<\/blockquote>\n<\/div>\n<\/div>\n<p>and his question reminded me something. Nicolas Jardot presented &#8216;Solving customer issues with the 12c Optimizer&#8217; at several events and one of his <a href=\"https:\/\/www.dbi-services.com\/index.php\/blog\/entry\/oracle-open-world-2013-solving-customer-issues-iii-histogram-on-varchar2-column\">demo <\/a>compared a testcase between 11g and 12c. The time to generate the testcase was very large in 12c and we already suspected dbms_random. So it&#8217;s time to investigate that now. Let&#8217;s run the following on both versions:<\/p>\n<pre><code>SQL&gt; declare\n   n number;\n  begin\n   for i in 1..1e8\n   loop\n    n:=dbms_random.value(0,10000);\n   end loop;\n  end;\n \/\n\nPL\/SQL procedure successfully completed.\n\nElapsed: 00:01:15.88\n\n<\/code><\/pre>\n<p>But when I run it in 11.2.0.4 the time is 4x higher:<\/p>\n<pre><code>PL\/SQL procedure successfully completed.\n\nElapsed: 00:05:31.92\n<\/code><\/pre>\n<h3>dbms_random loop in 11.2.0.3<\/h3>\n<p>Here is the CPU Flame Graph during the fast execution of the dbms_random loop:<\/p>\n<p><a class=\"easyblog-thumb-preview\" title=\"Capture3-perf-random-o11203.JPG\" href=\"http:\/\/dbi-services.com\/blog\/images\/easyblog_images\/139\/Capture3-perf-random-o11203.JPG\"><img decoding=\"async\" title=\"b2ap3_thumbnail_Capture3-perf-random-o11203.JPG\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/b2ap3_thumbnail_Capture3-perf-random-o11203.jpg\" alt=\"b2ap3_thumbnail_Capture3-perf-random-o11203.JPG\" \/><\/a><\/p>\n<p>Many functions above pfrrun_no_tool. None with higher samples than others.<\/p>\n<h3>dbms_random loop in 11.2.0.4<\/h3>\n<p>Here is the CPU Flame Graph during the longer execution:<\/p>\n<p><a class=\"easyblog-thumb-preview\" title=\"Capture4-perf-random-o11204.JPG\" href=\"http:\/\/dbi-services.com\/blog\/images\/easyblog_images\/139\/Capture4-perf-random-o11204.JPG\"><img decoding=\"async\" title=\"b2ap3_thumbnail_Capture4-perf-random-o11204.JPG\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/b2ap3_thumbnail_Capture4-perf-random-o11204.jpg\" alt=\"b2ap3_thumbnail_Capture4-perf-random-o11204.JPG\" \/><\/a><\/p>\n<p>Most of the time is spent in that &#8216;FCAL&#8217; callstack.<\/p>\n<h3>&#8216;diff&#8217; is also a nice tool&#8230;<\/h3>\n<p>If I had this issue in production, then I would open an SR for a bug. I&#8217;ve enough information to give and only Oracle support can go further to see what&#8217;s behind those functions. But I&#8217;m in a lab and I can go further.<\/p>\n<p>Where is the DBMS_RANDOM defined? Let&#8217;s look for it in ORACLE_HOME\/rdbms\/admin:<\/p>\n<pre><code>$ grep -i \"package.*dbms_random\" $ORACLE_HOME\/rdbms\/admin\/*\n\/home\/oracle\/app\/oracle\/product\/11204\/rdbms\/admin\/dbmsrand.sql:CREATE OR REPLACE PACKAGE dbms_random AUTHID DEFINER AS\n\/home\/oracle\/app\/oracle\/product\/11204\/rdbms\/admin\/dbmsrand.sql:CREATE OR REPLACE PACKAGE BODY dbms_random AS\n<\/code><\/pre>\n<p>So, what is the difference between the 11.2.0.3 and 11.2.0.4 ?<\/p>\n<pre><code>$ diff \/home\/oracle\/app\/oracle\/product\/1120?\/rdbms\/admin\/dbmsrand.sql\n2c2\n---\n&gt; Rem $Header: rdbms\/admin\/dbmsrand.sql \/st_rdbms_11.2.0\/1 2013\/03\/11 01:24:43 yujwang Exp $\n6,7c6,7\n---\n&gt; Rem Copyright (c) 1997, 2013, Oracle and\/or its affiliates.\n&gt; Rem All rights reserved.\n16a17\n&gt; Rem    yberezin    02\/26\/13 - record and replay random number - bug 12676338\n102a104,111\n&gt;     -- external C function to record random value\n&gt;     PROCEDURE record_random_number(val IN NUMBER);\n&gt;     PRAGMA restrict_references (record_random_number, WNDS);\n&gt;\n&gt;     -- external C function to replay random value\n&gt;     FUNCTION replay_random_number RETURN NUMBER;\n&gt;     PRAGMA restrict_references (replay_random_number, WNDS);\n&gt;\n185c194,212\n<\/code><\/pre>\n<p>Interesting. There is a new function that is called when generating random numbers, probably to get the same numbers when we replay a RAT workload. This is just a guess, and let&#8217;s continue guessing. I&#8217;m in a lab I can do what I want. I&#8217;m in 11.2.0.4 where by loop takes 5 minutes. I&#8217;ll replace the dbms_random with the 11.2.0.3 ones:<\/p>\n<pre><code>sqlplus \/ as sysdba @ \/home\/oracle\/app\/oracle\/product\/11203\/rdbms\/admin\/dbmsrand.sql\n\nSQL*Plus: Release 11.2.0.4.0 Production on Sun May 17 21:53:50 2015\n\nCopyright (c) 1982, 2013, Oracle.  All rights reserved.\n\nConnected to:\nOracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production\nWith the Partitioning, OLAP, Data Mining and Real Application Testing options\n\nPackage created.\n\nPackage body created.\n\nSynonym created.\n\nGrant succeeded.\n<\/code><\/pre>\n<p>I&#8217;m lucky, the old version of the package compiles in my version. Then I run my loop:<\/p>\n<pre><code>PL\/SQL procedure successfully completed.\n\nElapsed: 00:01:10.14\n\n<\/code><\/pre>\n<p>Yes, that&#8217;s it. I get the same elapsed time as in 11.2.0.3 just by using the dbms_random from 11.2.0.3<\/p>\n<p>And when I run the testcase from the initial issue &#8211; the bulk insert from random values that is 2x faster in versions before 11.2.0.4 or 12c &#8211; I have now reduced the time by 2 when using the dbms_random from those previous versions.<\/p>\n<h3>Conclusion<\/h3>\n<p>I&#8217;ve exposed here a methodology that is not exactly what I do usually on a performance issue. I did that because I wanted to learn about those tools (perf events, Flame Graph) I was not yet familiar with. And I also used the old method of eliminating the possible causes one by one: test on same machine, with only the version of Oracle changing, test each part of the code independantly to see where the performance is different, etc.<\/p>\n<p>The final message is: don&#8217;t give up. When there is something unexplained, use all relevant tools to measure, use the knowledge you got from your experience. It takes only time, but everything can be explained. And don&#8217;t rely only on yourself. There is a very smart community of Oracle fans that can help: blogs, forums, twitter, etc. Here my friends from twitter were a great help, both for ideas (tests, tools, knowledge, ideas) and motivation to continue to investigate.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>By Franck Pachot . If you followed the 1M rows insert variations, you have seen how something simple brought me into an investigation with the latest tools available to see where the time is spent. When the time is CPU time, there is no wait event to get the detail of DB Time. I&#8217;ve used [&hellip;]<\/p>\n","protected":false},"author":27,"featured_media":4811,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[198,59],"tags":[96,209,67],"type_dbi":[],"class_list":["post-4810","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-database-management","category-oracle","tag-oracle","tag-oracle-12c","tag-performance"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.2 (Yoast SEO v27.2) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Variations on 1M insert (6): CPU Flame Graph - dbi Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.dbi-services.com\/blog\/variations-on-1m-insert-6-cpu-flame-graph\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Variations on 1M insert (6): CPU Flame Graph\" \/>\n<meta property=\"og:description\" content=\"By Franck Pachot . If you followed the 1M rows insert variations, you have seen how something simple brought me into an investigation with the latest tools available to see where the time is spent. When the time is CPU time, there is no wait event to get the detail of DB Time. I&#8217;ve used [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.dbi-services.com\/blog\/variations-on-1m-insert-6-cpu-flame-graph\/\" \/>\n<meta property=\"og:site_name\" content=\"dbi Blog\" \/>\n<meta property=\"article:published_time\" content=\"2015-05-18T11:38:24+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/b2ap3_thumbnail_Capture1-perf-testcase-o11204.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"500\" \/>\n\t<meta property=\"og:image:height\" content=\"203\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Oracle Team\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Oracle Team\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/variations-on-1m-insert-6-cpu-flame-graph\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/variations-on-1m-insert-6-cpu-flame-graph\/\"},\"author\":{\"name\":\"Oracle Team\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/66ab87129f2d357f09971bc7936a77ee\"},\"headline\":\"Variations on 1M insert (6): CPU Flame Graph\",\"datePublished\":\"2015-05-18T11:38:24+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/variations-on-1m-insert-6-cpu-flame-graph\/\"},\"wordCount\":960,\"commentCount\":0,\"image\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/variations-on-1m-insert-6-cpu-flame-graph\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/b2ap3_thumbnail_Capture1-perf-testcase-o11204.jpg\",\"keywords\":[\"Oracle\",\"Oracle 12c\",\"Performance\"],\"articleSection\":[\"Database management\",\"Oracle\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.dbi-services.com\/blog\/variations-on-1m-insert-6-cpu-flame-graph\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/variations-on-1m-insert-6-cpu-flame-graph\/\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/variations-on-1m-insert-6-cpu-flame-graph\/\",\"name\":\"Variations on 1M insert (6): CPU Flame Graph - dbi Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/variations-on-1m-insert-6-cpu-flame-graph\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/variations-on-1m-insert-6-cpu-flame-graph\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/b2ap3_thumbnail_Capture1-perf-testcase-o11204.jpg\",\"datePublished\":\"2015-05-18T11:38:24+00:00\",\"author\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/66ab87129f2d357f09971bc7936a77ee\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/variations-on-1m-insert-6-cpu-flame-graph\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.dbi-services.com\/blog\/variations-on-1m-insert-6-cpu-flame-graph\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/variations-on-1m-insert-6-cpu-flame-graph\/#primaryimage\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/b2ap3_thumbnail_Capture1-perf-testcase-o11204.jpg\",\"contentUrl\":\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/b2ap3_thumbnail_Capture1-perf-testcase-o11204.jpg\",\"width\":500,\"height\":203},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/variations-on-1m-insert-6-cpu-flame-graph\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\/\/www.dbi-services.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Variations on 1M insert (6): CPU Flame Graph\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#website\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/\",\"name\":\"dbi Blog\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.dbi-services.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/66ab87129f2d357f09971bc7936a77ee\",\"name\":\"Oracle Team\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/secure.gravatar.com\/avatar\/f711f7cd2c9b09bf2627133755b569fb5be0694810cfd33033bdd095fedba86d?s=96&d=mm&r=g\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/f711f7cd2c9b09bf2627133755b569fb5be0694810cfd33033bdd095fedba86d?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/f711f7cd2c9b09bf2627133755b569fb5be0694810cfd33033bdd095fedba86d?s=96&d=mm&r=g\",\"caption\":\"Oracle Team\"},\"url\":\"https:\/\/www.dbi-services.com\/blog\/author\/oracle-team\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Variations on 1M insert (6): CPU Flame Graph - dbi Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.dbi-services.com\/blog\/variations-on-1m-insert-6-cpu-flame-graph\/","og_locale":"en_US","og_type":"article","og_title":"Variations on 1M insert (6): CPU Flame Graph","og_description":"By Franck Pachot . If you followed the 1M rows insert variations, you have seen how something simple brought me into an investigation with the latest tools available to see where the time is spent. When the time is CPU time, there is no wait event to get the detail of DB Time. I&#8217;ve used [&hellip;]","og_url":"https:\/\/www.dbi-services.com\/blog\/variations-on-1m-insert-6-cpu-flame-graph\/","og_site_name":"dbi Blog","article_published_time":"2015-05-18T11:38:24+00:00","og_image":[{"width":500,"height":203,"url":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/b2ap3_thumbnail_Capture1-perf-testcase-o11204.jpg","type":"image\/jpeg"}],"author":"Oracle Team","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Oracle Team","Est. reading time":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.dbi-services.com\/blog\/variations-on-1m-insert-6-cpu-flame-graph\/#article","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/variations-on-1m-insert-6-cpu-flame-graph\/"},"author":{"name":"Oracle Team","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/66ab87129f2d357f09971bc7936a77ee"},"headline":"Variations on 1M insert (6): CPU Flame Graph","datePublished":"2015-05-18T11:38:24+00:00","mainEntityOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/variations-on-1m-insert-6-cpu-flame-graph\/"},"wordCount":960,"commentCount":0,"image":{"@id":"https:\/\/www.dbi-services.com\/blog\/variations-on-1m-insert-6-cpu-flame-graph\/#primaryimage"},"thumbnailUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/b2ap3_thumbnail_Capture1-perf-testcase-o11204.jpg","keywords":["Oracle","Oracle 12c","Performance"],"articleSection":["Database management","Oracle"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.dbi-services.com\/blog\/variations-on-1m-insert-6-cpu-flame-graph\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.dbi-services.com\/blog\/variations-on-1m-insert-6-cpu-flame-graph\/","url":"https:\/\/www.dbi-services.com\/blog\/variations-on-1m-insert-6-cpu-flame-graph\/","name":"Variations on 1M insert (6): CPU Flame Graph - dbi Blog","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/variations-on-1m-insert-6-cpu-flame-graph\/#primaryimage"},"image":{"@id":"https:\/\/www.dbi-services.com\/blog\/variations-on-1m-insert-6-cpu-flame-graph\/#primaryimage"},"thumbnailUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/b2ap3_thumbnail_Capture1-perf-testcase-o11204.jpg","datePublished":"2015-05-18T11:38:24+00:00","author":{"@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/66ab87129f2d357f09971bc7936a77ee"},"breadcrumb":{"@id":"https:\/\/www.dbi-services.com\/blog\/variations-on-1m-insert-6-cpu-flame-graph\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.dbi-services.com\/blog\/variations-on-1m-insert-6-cpu-flame-graph\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.dbi-services.com\/blog\/variations-on-1m-insert-6-cpu-flame-graph\/#primaryimage","url":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/b2ap3_thumbnail_Capture1-perf-testcase-o11204.jpg","contentUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/b2ap3_thumbnail_Capture1-perf-testcase-o11204.jpg","width":500,"height":203},{"@type":"BreadcrumbList","@id":"https:\/\/www.dbi-services.com\/blog\/variations-on-1m-insert-6-cpu-flame-graph\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/www.dbi-services.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Variations on 1M insert (6): CPU Flame Graph"}]},{"@type":"WebSite","@id":"https:\/\/www.dbi-services.com\/blog\/#website","url":"https:\/\/www.dbi-services.com\/blog\/","name":"dbi Blog","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.dbi-services.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/66ab87129f2d357f09971bc7936a77ee","name":"Oracle Team","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/f711f7cd2c9b09bf2627133755b569fb5be0694810cfd33033bdd095fedba86d?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/f711f7cd2c9b09bf2627133755b569fb5be0694810cfd33033bdd095fedba86d?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/f711f7cd2c9b09bf2627133755b569fb5be0694810cfd33033bdd095fedba86d?s=96&d=mm&r=g","caption":"Oracle Team"},"url":"https:\/\/www.dbi-services.com\/blog\/author\/oracle-team\/"}]}},"_links":{"self":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/4810","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/users\/27"}],"replies":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/comments?post=4810"}],"version-history":[{"count":0,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/4810\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/media\/4811"}],"wp:attachment":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/media?parent=4810"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/categories?post=4810"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/tags?post=4810"},{"taxonomy":"type","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/type_dbi?post=4810"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}